On Mon, 28 Jun 2004, Kyle Wheeler wrote:
>I added strace to my run file, which now looks like this:
>And just after the expunge problem happened, I moved the strace file off
>to http://www.memoryhole.net/~kyle/bincimap.strace1
>If and when it happens again, I'll make bincimap.strace2,3,4,5,etc.

Thanks! Please try to apply the following patch. The EXPUNGE operator was
earlier not _forcing_ a rescan. This means that messages could be expunged
(or actually _marked_ as expunged) both in memory and also from the
mailbox, but when scanning the mailbox for changes, the timestamp/update
check of the actual mailbox directories could give a negative result, and
this would prevent the expunged messages from being reported. The message
count would then be correct (as the counting algorithm correctly skips all
messages marked as expunged), but the actual EXPUNGE updates would not be
shown.

This is a concrete path that would produce the problem we've seen in the
protocol dumps. I can't say if it is the right fix, however, since I can't
reproduce the error reliably here. But please do try the patch and let the
server run for a while, and we'll see if it gives good results. ;-)

Andy

PS: The true, false, true stuff is ugly - I'll improve it in 1.3.

--- src/operator-expunge.cc     (revision 123)
+++ src/operator-expunge.cc     (working copy)
@@ -77,7 +77,7 @@
   if (!pendingUpdates(mailbox, PendingUpdates::EXPUNGE
                      | PendingUpdates::EXISTS
                      | PendingUpdates::RECENT
-                     | PendingUpdates::FLAGS, true)) {
+                     | PendingUpdates::FLAGS, true, false, true))� {
       Session &session = Session::getInstance();
       IO &com = IOFactory::getInstance().get(1);
       IO &logger = IOFactory::getInstance().get(2);

Reply via email to