CORRECT PATCH Re: sync_client bails when encountering a deleted message

David Carter dpc22 at cam.ac.uk
Fri Aug 10 10:44:05 EDT 2007


On Sun, 5 Aug 2007, John Capo wrote:

> My simple test is adding a sleep(10) in upload_message_work() and 
> logging that we are sleeping.  I cause a new message to be appended to 
> the Sent folder.  When I see the sleeping log entry I delete the message 
> that was just appended.

I have just tried the same thing on the current Cyrus CVS, and the APPEND 
to MAILBOX promotion seems to work correctly. sync_client -v -v output:

   APPEND user.dpc22
     Promoting: APPEND user.dpc22 -> MAILBOX user.dpc22
   MAILBOXES user.dpc22
   SEEN dpc22 user.dpc22
   MAILBOXES user.dpc22

syslog output on client system:

   Aug 10 15:29:09 magenta lmtp[1957]: Delivered:
     <cmu-lmtpd-1957-1186756147-0 at magenta> to mailbox: user.dpc22

...Message delivered

   Aug 10 15:29:14 magenta imap[1955]:
     Expunged 1 messages from user.dpc22

...and expunged while sync_client is sitting in sleep()

   Aug 10 15:29:39 magenta sync_client[1933]:
     IOERROR: opening message file 510 of user.dpc22:
     No such file or directory

...sync_client about to bail out half way through the UPLOAD

   Aug 10 15:29:39 magenta sync_client[1933]:
     UPLOAD received BAD response:
     Syntax error in Append at item 1: Invalid flags or missing message

...and sync_client reporting the syntax error thown by the server.

cmd_upload is sending a "BAD" response here rather than the "NO" response 
which your later patch proposes. However sync_client is going to ignore
the response code anyway, as it already knows that there is an problem:

     if (r) {
>>>>>   sync_parse_code("UPLOAD", fromserver, SYNC_PARSE_EAT_OKLINE, NULL);
         return(r);
     }

The noise from your log entry:

> sync_client[4093]: SELECT received  response:
> sync_client[4093]: CREATE received ** response: 7dcec8343f7f0817 
> user.xx_xxxx^com.Sent "xx_xxxx.com  lrswipkxtecda   xxxx    lrswipkxtea 
> " 279 87 1

suggests that you have a missing eatline() somewhere.

-- 
David Carter                             Email: David.Carter at ucs.cam.ac.uk
University Computing Service,            Phone: (01223) 334502
New Museums Site, Pembroke Street,       Fax:   (01223) 334679
Cambridge UK. CB2 3QH.


More information about the Cyrus-devel mailing list