[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: MODSEQ in CONDSTORE
On Thu Feb 2 22:32:50 2006, Lisa Dusseault wrote:
Dave said "the deficient server in this case causes no damage other
than a spurious round-trip from a client.", and Mark said
something about guns and preschoolers :)
Yeah. I'm talking specifically the case where a server increments a
MODSEQ for a message when the message is not visibly changed. Which
is the same as, for instance, a change to an ANNOTATion when the
client doesn't speak ANNOTATE - the client isn't damaged by it as
such, and has to expect it.
What would happen is that the client would see a changed
HIGHESTMODSEQ, and accordingly issue a FETCH ... CHANGEDSINCE, which
would yield some response, which would provide data the client
already had.
Where the HIGHESTMODSEQ is the same, the FETCH can be eliminated
(and, optionally, even the SELECT).
Obviously the latter is more efficient and faster, and therefore a
server which incremements the Modification sequence when no
Modification has taken place is not as good as it could be.
Obviously the client will remain in sync without resorting to any
kind of workaround - resync just happens to be more costly - so the
server is not broken as such, and such behaviour could be the result
of a modification the client is not capable enough to see.
Were you two talking about different cases? Would the outcome of
bad client use of MODSEQ would be dire or simply the client's own
problem?
Mark's suggesting that, because all known uses of MODSEQ involve
ignoring both its numeric nature and its status as a FETCH item, then
it's potentially inviting doom by having MODSEQs have a numeric,
ascending, per-message-accessible nature. This is a different case to
the above. At least I think so.
I can't see this being the case - a client expecting some specific
meaning to the difference of two MODSEQ numbers is probably asking
for trouble (except in two vanishingly rare cases, where the
difference is exactly 1), but for the most part, it won't cause any
damage other than to itself, and potentially the user's data bill.
Other clients I cannot see being affected by that, except
beneficially.
You see, I could assume that an increment of 2 to HIGHESTMODSEQ
implied there were two modifications, and having found two modified
messages, I could decide that I'd found any modified messages, and
consider myself resynchronized. Sometimes, I might even *be*
resynchronized. Trouble is, any modification may encompass as many or
few messages as possible, hence that's an invalid assumption, and the
client may actually be out of sync. But, this doesn't effect another
client. What can happen, however, is that the out of sync client can
mark deleted, and subsequently expunge, the wrong message. But any
out-of-sync client can do that perfectly well without CONDSTORE, and
I don't think it makes the problem markedly worse.
You can cause wasteful round-trips for other clients by toggling a
flag on and off across all messages, but I can't see this being done
by accident much, and it merely degenerates CONDSTORE to uselessness,
rather than actively breaking it.
I'm sure we'll eventually find a use for access to the MODSEQ of
messages, probably something to do with archiving away old messages,
or watching the changes to status of work items in a shared mailbox -
I could probably come up with plenty of uses. I can't come up with
much in the way of harm.
Dave.
--
You see things; and you say "Why?"
But I dream things that never were; and I say "Why not?"
- George Bernard Shaw