[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: MODSEQ in CONDSTORE
On Wed Feb 1 23:20:18 2006, Mark Crispin wrote:
I know that it's probably much too late to complain about this now,
but can someplace please explain why the MODSEQ is a 64-bit value?
Is there any serious possibility of there being more than 2^32
STOREs being performed on a single message in a mailbox?
Two stores on different messages generate two different MODSEQ
values, though. So if it were 32-bit, then just filling a mailbox
would be enough to exhaust it. You actually only need 2^32-1 STORES
on a single message - the arrival of the single message itself
increments the MODSEQ.
The examples imply MODSEQ as a date/time, but as the document says
you can't actually do that.
Indeed, but it's possible to come close. ACAP uses modtimes that
can't actually be times, they just look remarkably like them.
What's more, I didn't observe any definition in the CONDSTORE
document of what is supposed to happen if a STORE results in no
change.
I don't think there's anything which states explicitly that if a
STORE results in no change then no MODSEQ increases happen, but I'd
assume that was implicit in the definition.
I am implementing a new mailbox format which has a per-message
modification sequence. For my purpose, it's easiest to have it be
monotonically increasing. Also, I don't want to change it if STORE
results in no change. I was going to make this available as a
MODSEQ for a possible future CONDSTORE implementation, but I see no
point in keeping it as a 64-bit value other than bloating the data
structures further. I want to see if I am missing something.
FWIW, Ken Murchison's patch for Cyrus can use a 32-bit MODSEQ value.
There's nothing *forcing* the value to be 64-bit for servers, but if
you overflowed a 32-bit, you'd have to reset the UIDVALIDITY in order
to recover.
Clients, of course, have to deal with it as a 64-bit unsigned integer
for all servers.
Dave.
--
You see things; and you say "Why?"
But I dream things that never were; and I say "Why not?"
- George Bernard Shaw