Cyrus 2.4.X delete mailbox oddities
Bron Gondwana
brong at fastmail.fm
Tue Jun 28 08:31:54 EDT 2011
On Tue, 28 Jun 2011 10:02 +0100, "David Carter" <dpc22 at cam.ac.uk> wrote:
> On Tue, 28 Jun 2011, Bron Gondwana wrote:
>
> >> I have however discovered two wrinkles when deleting mailboxes selected by
> >> some other IMAP session. PINE might leave a mailbox selected for days.
> >
> > Well, that's classy PINE.
>
> Do you want to have an debate with Mark Crispin about correct behaviour of
> IMAP clients? I still have the scars from last time, and that was probably
> about 1997 :)
>
> > How is it keeping the connection open? Surely it sees the deletion
> > event and closes it.
>
> PINE sees that the messages in the selected mailbox have been expunged:
>
> . NOOP
> * 1 EXPUNGE
> . OK Completed
Oh, that's a bug.
if (imapd_index)
>-------index_check(imapd_index, 1, 0);
prot_printf(imapd_out, "%s OK %s\r\n", tag,
>------->-------error_message(IMAP_OK_COMPLETED));
It should check the result of "index_check" and return an error if the
mailbox has gone away I suspect.
> It would need to do a 'LIST "" *' to spot that the list of available
> mailboxes had changed.
>
> I've just trying forcing this and it doesn't seem to unselect the deleted
> mailbox. It is possible that it would sort itself out eventually, but the
> deleted mailbox was still selected after several minutes.
Yeah - hopefully if I fix that bug.
> > Yeah, sorry - short of forcibly killing the connection, there's not much
> > we can do about this without breaking the guarantees that messages are
> > still available.
>
> Fair enough. I don't know whether this is actually a problem yet, I just
> noticed a difference in behaviour from 2.3.X in my testing.
Yes, 2.3.x was unsafe in a bunch of ways, and this was one of them. I
wanted to enforce reliable semantics in 2.4 - hence this locking system.
You can't delete any files while someone else has the mailbox open, you
can only set a flag in the header so the other connection knows that a
cleanup is required.
This even applied to "immediate" expunge. It only actually unlinks the
files if nobody else has the mailbox open.
Bron.
--
Bron Gondwana
brong at fastmail.fm
More information about the Info-cyrus
mailing list