Oswald Buddenhagen on 2016/02/05 +0100 @09:47:05:
> On Thu, Feb 04, 2016 at 02:43:50PM -0800, Scott Mcdermott wrote:
> > Getting this nearly every time I sync my local Maildirs with
> > Google's IMAP server:
> >
> >     Maildir notice: sleeping due to recent directory
> >     modification.
>
> i suppose that may mean that you're syncing folders multiple
> times directly adjacently. maybe your Patterns are botched? ...
> try mbsync -l, possibly in combination with -DMn ...

Thanks, that was the needed info.  It turns out I was fetching
INBOX twice, in two different channels.  That's why it was
running so close in time and hit the timestamp check.  The
program could possibly keep track of (mailstore, folder) tuples
it has seen already and issue a warning or halt if it sees the
same tuple twice, in order to avoid this.

If you're curious how this happened: what I'm doing is mapping
the Gmail special folder names to local ones that are my own, by
making separate channels for each one, such as:

    Channel     gmail-sent
    Master      :imapsrv:"[Gmail]/Sent Mail"
    Slave       :maildir:sent

    Channel     gmail-postponed
    Master      :imapsrv:"[Gmail]/Drafts"
    Slave       :maildir:postponed

    ...

and so on.  Then to get the rest of the folders, which already
have my preferred labels (since I control them with delivery
rules on the server) so I don't need to map them:

    Channel     gmail-user-labels
    Master      :imapsrv:
    Slave       :maildir:
    Pattern     *
    Pattern     ![Gmail]/*
    Pattern     !sent !postponed !saved !spam !trash !spool

(note the exclusions needed, since I already matched those with
the previous specific mapped channels above.)

I also made a separate channel for Inbox, because, even though my
Inbox did live under Path on the local side (and thus was globbed
by the 'Pattern *'), I didn't want to get caught later if it was
ever somewhere else not within Path, so I made a separate channel
with no pattern to match just INBOX:

    Channel     gmail-inbox
    Master      :imapsrv:
    Slave       :maildir:

and tried to exclude it in 'gmail-user-labels' channel with its
mapped name, ie by '!spool' (which doesn't actually match btw,
presumably because the 'Inbox'-provided name isn't part of the
"mailbox list from slave").

What I did not realize was that patterns have to be excluded
twice (as they match on both Master and Slave side), because of
this misleading text from the manual's description of Pattern:

    The mailbox names are the same on both Master and Slave

(In fact, they can be completely different names if they are
given explicitly in the channel definition as I'm doing, and also
by using the 'Inbox' directive.)

Anyways, it seems to work correctly now, after adding '!INBOX', I
have only the 'gmail-inbox' channel matching it now.  I have not
seen the warning since adding that exclude pattern to my
'gmail-user-labels' channel (so far).

> the purpose of the check is to ensure that we have an atomic
> snapshot of the mailbox, which is important when messages get
> moved between the cur and new subdirectories (failure to do so
> would produce a double listing and subsequent UID clash and
> error out, or no listing and a resulting bogus propagation of a
> deletion and thus data loss).

Indeed, but atomic reads at mailbox level with Maildir are not
actually possible, so this sleep check could loop for a while
(potentially forever) if the Maildir is busy being changed by
other software.

(Actually, my understanding is that getdents64(), if used
directly, can give all the dirents atomically if provided with a
big enough buffer, but readdir() is required for portability of
course.)

-- 
Scott

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
isync-devel mailing list
isync-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/isync-devel

Reply via email to