[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