Re: [Imap-protocol] Strange behavior with Gmail IMAP when using CONDSTORE extension

Bron Gondwana <[email protected]> Thu, 23 Jul 2015 10:07:32 +1000
Newsgroups gmane.mail.imap.general
Message-ID <1437610052.3135783.330762257.59E54221@webmail.messagingengine.com>
This is a multi-part message in MIME format.

--===============7264596778018973202==
Content-Transfer-Encoding: 7bit
Content-Type: multipart/alternative; boundary="_----------=_143761005231357830";
 charset="utf-8"

This is a multi-part message in MIME format.

--_----------=_143761005231357830
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="ISO-8859-1"

On Thu, Jul 23, 2015, at 09:54, Michael Grinich wrote:
> Our team has seen the following strange behavior when making requests
> to the Gmail IMAP server. I wanted to share this with the list and
> Brandon to see if folks have ideas for mitigating or fixing the issue,
> or whether this is actually a bug in Gmail's IMAP implementation.
>
> Here's the log:
>
> T2 SELECT "[Gmail]/All Mail"
> * FLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $Junk
>   $NotJunk $NotPhishing $Phishing NotJunk)
> * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen
>   $Forwarded $Junk $NotJunk $NotPhishing $Phishing NotJunk \*)] Flags
>   permitted.
> * OK [UIDVALIDITY 11] UIDs valid.
> * 126069 EXISTS
> * 0 RECENT
> * OK [UIDNEXT 208199] Predicted next UID.
> * OK [HIGHESTMODSEQ 14064776] T2 OK [READ-WRITE] [Gmail]/All Mail
>   selected. (Success) *T3 UID FETCH 207722 (FLAGS) (CHANGEDSINCE
>   14055062)* ** OK [HIGHESTMODSEQ 14064776]* ** 125605 FETCH (UID
>   207722 MODSEQ (14063567) FLAGS (\Answered \Seen))* T3 OK Success *T4
>   UID FETCH 1:* (FLAGS) (CHANGEDSINCE 14055062)*
> * 125938 FETCH (UID 208058 MODSEQ (14060020) FLAGS ())
> * 125939 FETCH (UID 208059 MODSEQ (14060011) FLAGS ())
> * 125940 FETCH (UID 208060 MODSEQ (14060028) FLAGS ())
> * 125941 FETCH (UID 208061 MODSEQ (14060000) FLAGS ())
> * 125942 FETCH (UID 208062 MODSEQ (14060036) FLAGS ())
> * 125943 FETCH (UID 208063 MODSEQ (14060000) FLAGS ())
> * 125944 FETCH (UID 208064 MODSEQ (14060000) FLAGS ())
> * 125945 FETCH (UID 208065 MODSEQ (14060003) FLAGS ())
> * 125946 FETCH (UID 208066 MODSEQ (14060037) FLAGS ())
> * 125947 FETCH (UID 208067 MODSEQ (14060043) FLAGS ())
> * 125948 FETCH (UID 208068 MODSEQ (14060000) FLAGS ())
> * 125949 FETCH (UID 208069 MODSEQ (14060045) FLAGS ())
> * 125950 FETCH (UID 208070 MODSEQ (14060000) FLAGS ())
> * 125951 FETCH (UID 208071 MODSEQ (14060025) FLAGS ())
> * 125952 FETCH (UID 208072 MODSEQ (14060011) FLAGS ())
> * 125953 FETCH (UID 208073 MODSEQ (14060045) FLAGS ())
> * 125954 FETCH (UID 208074 MODSEQ (14060044) FLAGS ())
> * 125955 FETCH (UID 208075 MODSEQ (14060003) FLAGS ())
> * 125956 FETCH (UID 208076 MODSEQ (14060040) FLAGS ())
> * 125957 FETCH (UID 208077 MODSEQ (14060011) FLAGS ())
> * 125958 FETCH (UID 208078 MODSEQ (14060044) FLAGS ())
> * 125959 FETCH (UID 208079 MODSEQ (14060025) FLAGS ())
> * 125960 FETCH (UID 208080 MODSEQ (14060044) FLAGS ())
> * 125961 FETCH (UID 208081 MODSEQ (14060036) FLAGS ())
> * 125962 FETCH (UID 208082 MODSEQ (14060037) FLAGS ())
> * 125963 FETCH (UID 208083 MODSEQ (14060003) FLAGS ())
> * 125964 FETCH (UID 208084 MODSEQ (14060037) FLAGS ()) T4 OK Success
>
>
> Why would "UID FETCH 207722 (FLAGS) (CHANGEDSINCE 14055062)" return
> message 207722, but "UID FETCH 1:* (FLAGS) (CHANGEDSINCE 14055062)"
> wouldn't? Is there any way to catch all messages?
>
> I was able to reproduce this exact IMAP exchange multiple times, so
> there's no way the email could have been expunged within the two
> FETCHes.
>
> We've seen CONDSTORE-related issues happen on multiple Gmail accounts.
> The only workaround we found is "SEARCH MODSEQ", which didn't have
> this problem in tests. However, it was very slow on Gmail.

What to do you get for either:

T5 FETCH 1:* (UID FLAGS) (CHANGEDSINCE 14055062)

or

T6 UID FETCH 1:208198 (FLAGS) (CHANGEDSINCE 14055062)

That might show if there's anything interesting happening with '*'.
Your exchange definitely reads like incorrect CONDSTORE logic to my
slightly tired eyes...

Bron.

--
=A0 Bron Gondwana
=A0 [email protected]
=20
=20

--_----------=_143761005231357830
Content-Transfer-Encoding: 7bit
Content-Type: text/html; charset="ISO-8859-1"

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>On Thu, Jul 23, 2015, at 09:54, Michael Grinich wrote:<br><blockquote type="cite"><div dir="ltr"><div>Our team has seen the following strange behavior when making requests to the Gmail IMAP server. I wanted to share this with the list and Brandon to see if folks have ideas for mitigating or fixing the issue, or whether this is actually a bug in Gmail's IMAP implementation.&nbsp;<br></div>
<div>&nbsp;</div>
<div>Here's the log:&nbsp;<br></div>
<div>&nbsp;</div>
<div><div>T2 SELECT "[Gmail]/All Mail"<br></div>
<div>* FLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $Junk $NotJunk $NotPhishing $Phishing NotJunk)<br></div>
<div>* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $Junk $NotJunk $NotPhishing $Phishing NotJunk \*)] Flags permitted.<br></div>
<div>* OK [UIDVALIDITY 11] UIDs valid.<br></div>
<div>* 126069 EXISTS<br></div>
<div>* 0 RECENT<br></div>
<div>* OK [UIDNEXT 208199] Predicted next UID.<br></div>
<div>* OK [HIGHESTMODSEQ 14064776]<br></div>
<div>T2 OK [READ-WRITE] [Gmail]/All Mail selected. (Success)<br></div>
<div><b>T3 UID FETCH 207722 (FLAGS) (CHANGEDSINCE 14055062)</b><br></div>
<div><b>* OK [HIGHESTMODSEQ 14064776]</b><br></div>
<div><b>* 125605 FETCH (UID 207722 MODSEQ (14063567) FLAGS (\Answered \Seen))</b><br></div>
<div>T3 OK Success<br></div>
<div><b>T4 UID FETCH 1:* (FLAGS) (CHANGEDSINCE 14055062)</b><br></div>
<div>* 125938 FETCH (UID 208058 MODSEQ (14060020) FLAGS ())<br></div>
<div>* 125939 FETCH (UID 208059 MODSEQ (14060011) FLAGS ())<br></div>
<div>* 125940 FETCH (UID 208060 MODSEQ (14060028) FLAGS ())<br></div>
<div>* 125941 FETCH (UID 208061 MODSEQ (14060000) FLAGS ())<br></div>
<div>* 125942 FETCH (UID 208062 MODSEQ (14060036) FLAGS ())<br></div>
<div>* 125943 FETCH (UID 208063 MODSEQ (14060000) FLAGS ())<br></div>
<div>* 125944 FETCH (UID 208064 MODSEQ (14060000) FLAGS ())<br></div>
<div>* 125945 FETCH (UID 208065 MODSEQ (14060003) FLAGS ())<br></div>
<div>* 125946 FETCH (UID 208066 MODSEQ (14060037) FLAGS ())<br></div>
<div>* 125947 FETCH (UID 208067 MODSEQ (14060043) FLAGS ())<br></div>
<div>* 125948 FETCH (UID 208068 MODSEQ (14060000) FLAGS ())<br></div>
<div>* 125949 FETCH (UID 208069 MODSEQ (14060045) FLAGS ())<br></div>
<div>* 125950 FETCH (UID 208070 MODSEQ (14060000) FLAGS ())<br></div>
<div>* 125951 FETCH (UID 208071 MODSEQ (14060025) FLAGS ())<br></div>
<div>* 125952 FETCH (UID 208072 MODSEQ (14060011) FLAGS ())<br></div>
<div>* 125953 FETCH (UID 208073 MODSEQ (14060045) FLAGS ())<br></div>
<div>* 125954 FETCH (UID 208074 MODSEQ (14060044) FLAGS ())<br></div>
<div>* 125955 FETCH (UID 208075 MODSEQ (14060003) FLAGS ())<br></div>
<div>* 125956 FETCH (UID 208076 MODSEQ (14060040) FLAGS ())<br></div>
<div>* 125957 FETCH (UID 208077 MODSEQ (14060011) FLAGS ())<br></div>
<div>* 125958 FETCH (UID 208078 MODSEQ (14060044) FLAGS ())<br></div>
<div>* 125959 FETCH (UID 208079 MODSEQ (14060025) FLAGS ())<br></div>
<div>* 125960 FETCH (UID 208080 MODSEQ (14060044) FLAGS ())<br></div>
<div>* 125961 FETCH (UID 208081 MODSEQ (14060036) FLAGS ())<br></div>
<div>* 125962 FETCH (UID 208082 MODSEQ (14060037) FLAGS ())<br></div>
<div>* 125963 FETCH (UID 208083 MODSEQ (14060003) FLAGS ())<br></div>
<div>* 125964 FETCH (UID 208084 MODSEQ (14060037) FLAGS ())<br></div>
<div>T4 OK Success<br></div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>Why would "UID FETCH 207722 (FLAGS) (CHANGEDSINCE 14055062)" return message 207722, but "UID FETCH 1:* (FLAGS) (CHANGEDSINCE 14055062)" wouldn't? Is there any way to catch all messages?<br></div>
<div>&nbsp;</div>
<div>I was able to reproduce this exact IMAP exchange multiple times, so there's no way the email could have been expunged within the two FETCHes.<br></div>
<div>&nbsp;</div>
<div>We've seen CONDSTORE-related issues happen on multiple Gmail accounts. The only workaround we found is "SEARCH MODSEQ", which didn't have this problem in tests. However, it was very slow on Gmail.<br></div>
</div>
</div>
</blockquote><div>&nbsp;</div>
<div>What to do you get for either:<br></div>
<div>&nbsp;</div>
<div>T5 FETCH 1:* (UID FLAGS) (CHANGEDSINCE 14055062)<br></div>
<div>&nbsp;</div>
<div>or<br></div>
<div>&nbsp;</div>
<div>T6 UID FETCH 1:208198 (FLAGS) (CHANGEDSINCE 14055062)<br></div>
<div>&nbsp;</div>
<div>That might show if there's anything interesting happening with '*'.&nbsp; Your exchange definitely reads like incorrect CONDSTORE logic to my slightly tired eyes...<br></div>
<div>&nbsp;</div>
<div>Bron.<br></div>
<div>&nbsp;</div>
<div id="sig567075"><div class="signature">--<br></div>
<div class="signature">&nbsp; Bron Gondwana<br></div>
<div class="signature">&nbsp; [email protected]<br></div>
<div class="signature">&nbsp;</div>
</div>
<div>&nbsp;</div>
</body>
</html>

--_----------=_143761005231357830--


--===============7264596778018973202==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Imap-protocol mailing list
[email protected]
http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol
--===============7264596778018973202==--