One more data point Timo: On Tue, Mar 12, 2019, at 9:58 AM, Kostya Vasilyev via dovecot wrote: > Timo, > > On Tue, Mar 12, 2019, at 3:56 AM, Timo Sirainen via dovecot wrote: >> On 10 Mar 2019, at 10.14, Kostya Vasilyev via dovecot <dovecot@dovecot.org> >> wrote: >>> >>> My mail is stored under ~/mail/.imap (not sure what this format is called), >>> I mean not "single file mbox". >>> >>> I have not changed any IDLE related config settings: >>> >>> doveconf | grep -i idle >>> default_idle_kill = 1 mins >>> director_ping_idle_timeout = 30 secs >>> imap_idle_notify_interval = 2 mins >>> imapc_max_idle_time = 29 mins >>> mailbox_idle_check_interval = 30 secs >>> >>> What can I do to make Dovecot notify IDLE clients about flags changes - >>> more quickly? Preferably near-instant? >> >> It should simply just work, assuming there aren't any weird inotify limits, >> but you should get errors logged about reaching those. You could see if it >> makes any difference to set mailbox_idle_check_interval=1s >> > > mailbox_idle_check_interval = 1 secs > > did not help > > Here is an interesting case > > - Let's say I have my IDLE connection. > > - Connection "A" - an email app where I set or clear \Flagged on two messages. > > The IDLE connection is silent (no unsolicited notifications about these > flags). > > - Connection "B" - an email app where I do a refresh - it does a SELECT > (CONDSTORE) followed by FETCH UID FLAGS CHANGEDSINCE (because it sees that > there are only flags changes). > > ---> the IDLE connection is notified about flags changes immediately right as > Connection "B" is pulling its changes. > > I tried a direct network connection (netcat) instead of Connection "B" and > the actual trigger is SELECT (CONDSTORE). > > - Start up IDLE connection > > - Use Connection "A" to make flags changes > > ( IDLE connection is silent ) > > - Use a netcat connection to SELECT (CONDSTORE) > > Dovecot flushes flags to the IDLE connection immediately > > - Doing SELECT (without CONDSTORE) does not > > Looks like some sort of bug in Dovecot related to CONDSTORE? > > This can probably be reproduced with several direct network connections using > netcat / openssl s_client - and CONDSTORE seems to be an important part of > the scenario. > > Ideas? > > -- K
It makes no difference if the IDLE connection does SELECT or SELECT (CONDSTORE) prior to going IDLE. But then as far as I know (?) - in Dovecot, once any connection uses CONDSTORE ever, even once, Dovecot creates data structures to track MODSEQ values, and those data structures are forever. -- K