Re: [Imap-protocol] Gmail flags issue, timing-sensitive
Brandon Long <[email protected]> Wed, 25 Mar 2015 08:43:33 -0700
| Newsgroups | gmane.mail.imap.general |
|---|---|
| Message-ID | <CABa8R6t01i4CMumftDbTdY_xC7WYWLCmh7__Qg+zrsw8dZxHwA@mail.gmail.com> |
I'll file a bug On Mar 25, 2015 7:55 AM, "Kostya Vasilyev" <[email protected]> wrote: > Hi, > > I apologize for a Gmail specific message, but for lack of a better place... > > Recently I've started seeing strange stuff with message flags, the Gmail > IMAP server returns out of date information on STORE +FLAGS and IDLE > connections. > > There is a longer log below, but the the short of it is: > > 14:39:06.189: [IMAP.5455] Sending: kman10 UID STORE 86 +FLAGS (\Seen) > {{{---}}} > 14:39:06.490: [IMAP_RAW.5455] Data is <84>: > 14:39:06.490: * 58 FETCH (FLAGS (\Seen) UID 86) > 14:39:06.490: * 58 FETCH (UID 86 FLAGS ()) > 14:39:06.490: kman10 OK Success > > I understand that the second line is an unsolicited response, and that it > would represent the message getting changed back to unread on another > connection, except... > > There is no other connection here, and anyway, both responses are in the > same data packet which is too fast to send a change made by another > connection if there was one. > > I've spent a fair amount of time tweaking my IMAP commands trying to make > it go away, and came to conclude that: > > - The time from receiving the message to the STORE command has to be very > short, a matter of several seconds. > > - Seems to happen more often with the larger messages (> 5-10 K of message > text). > > - Seems to happen more often when doing a partial (as opposed to full) > text fetch during mail sync. > > The user sees a new, unread, message and goes to read it immediately, > boom, it's still marked unread. > > If I wait a minute or so before opening the message (which is what > triggers the STORE +\Seen), the issue doesn't happen and I get this: > > 16:35:13.874 * 65 FETCH (FLAGS (\Seen) UID 99) > 16:35:13.874 * 65 FETCH (UID 99 FLAGS (\Seen)) > > Again, an unsolicited response (valid, but redundant), but now it actually > reflects the just changed message flags. > > It gets more interesting when there are IDLE connections, which then also > receive outdated (no \Seen) message flags about ten seconds after the STORE > +\Seen, but I'll save it for later (I do have logs for that too). > > A more detailed log: > > The STORE +\Seen here is done ~three seconds after initial fetch (and very > soon after the message got into the account). > > No IDLE, no CONDSTORE, very basic commands. > > ### Sync > > Initial connect and auth (omitted) > Select INBOX (omitted) > > 14:39:02.329: [IMAP.5455] Sending: kman5 UID SEARCH RETURN (ALL) UNSEEN > UNDELETED > {{{---}}} > 14:39:02.376: [IMAP_RAW.5455] Data is <73>: > 14:39:02.376: * ESEARCH (TAG "kman5") UID ALL 86 > 14:39:02.376: kman5 OK SEARCH completed (Success) > > Get flags and UIDs > > 14:39:02.378: [IMAP.5455] Sending: kman6 FETCH 34:58 (UID FLAGS) > {{{---}}} > 14:39:02.421: [IMAP_RAW.5455] Data is <772>: > 14:39:02.421: * 34 FETCH (UID 53 FLAGS (\Seen)) > 14:39:02.421: * 35 FETCH (UID 54 FLAGS (\Seen)) > ... > 14:39:02.426: [IMAP_RAW.5455] Data is <116>: > 14:39:02.426: 56 FETCH (UID 75 FLAGS (\Seen)) > 14:39:02.426: * 57 FETCH (UID 85 FLAGS (\Seen)) > 14:39:02.426: * 58 FETCH (UID 86 FLAGS ()) > 14:39:02.426: kman6 OK Success > > Get BODYSTRUCTURE and headers > > 14:39:02.481: [IMAP.5455] Sending: kman7 FETCH 58 (UID > BODY.PEEK[HEADER.FIELDS (DATE MESSAGE-ID LIST-ID SUBJECT FROM REPLY-TO TO > CC BCC X-PRIORITY RESENT-FROM REFERENCES DISPOSITION-NOTIFICATION-TO)] > BODYSTRUCTURE RFC822.SIZE INTERNALDATE) > {{{---}}} > 14:39:02.525: [IMAP_RAW.5455] Data is <514>: > 14:39:02.525: * 58 FETCH (UID 86 RFC822.SIZE 11273 INTERNALDATE > "25-Mar-2015 11:38:56 +0000" BODYSTRUCTURE ("TEXT" "HTML" ("CHARSET" > "utf-8") NIL NIL "BASE64" 8934 115 NIL NIL NIL) BODY[HEADER.FIELDS (DATE > MESSAGE-ID LIST-ID SUBJECT FROM REPLY-TO TO CC BCC X-PRIORITY RESENT-FROM > REFERENCES DISPOSITION-NOTIFICATION-TO)] {307} > 14:39:02.525: From: =?koi8-r?B?68/O09TBztTJziD3wdPJzNjF1w==?= <....> > 14:39:02.525: To: [email protected] > 14:39:02.525: Subject: > =?koi8-r?B?RndkOiBbS29zdHlhJ3MgbGl0dGxlIGFwcHNdIFBsZWFzZSBtb2RlcmF0ZTogIu3PySDQ0s/H0sHNzdkg?= > 14:39:02.525: =?koi > 14:39:02.536: [IMAP_RAW.5455] Data is <107>: > 14:39:02.536: 8-r?B?KFJVKSI=?= > 14:39:02.536: Message-Id: <[email protected]> > 14:39:02.536: Date: Wed, 25 Mar 2015 14:38:55 +0300 > 14:39:02.536: > 14:39:02.537: [IMAP_RAW.5455] Data is <21>: > 14:39:02.537: ) > 14:39:02.537: kman7 OK Success > > Get text (partial) > > 14:39:02.552: [IMAP.5455] Sending: kman8 FETCH 58 (UID > BODY.PEEK[1]<0.5120>) > {{{---}}} > 14:39:02.595: [IMAP_RAW.5455] Data is <1339>: > 14:39:02.595: * 58 FETCH (UID 86 BODY[1]<0> {5120} > ... > 14:39:02.600: [IMAP_RAW.5455] Data is <21>: > 14:39:02.600: ) > 14:39:02.600: kman8 OK Success > > ### User opened message, need to mark read > > Checking if connection is alive > > 14:39:06.063: [IMAP.5455] Sending: kman9 NOOP > {{{---}}} > 14:39:06.113: [IMAP_RAW.5455] Data is <18>: > 14:39:06.113: kman9 OK Success > > Setting \Seen > > 14:39:06.189: [IMAP.5455] Sending: kman10 UID STORE 86 +FLAGS (\Seen) > {{{---}}} > 14:39:06.490: [IMAP_RAW.5455] Data is <84>: > 14:39:06.490: * 58 FETCH (FLAGS (\Seen) UID 86) > 14:39:06.490: * 58 FETCH (UID 86 FLAGS ()) > 14:39:06.490: kman10 OK Success > > The unsolicited response lacks the just set "\Seen", it's old data. > > -- K > > > > _______________________________________________ > Imap-protocol mailing list > [email protected] > http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol > _______________________________________________ Imap-protocol mailing list [email protected] http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol