I should include: the plan to fix this is to have intent logging in 
mailboxes.db - so we'll create a record for the destination name with a flag 
marking the intent to rename, such that you can't possibly create a rename loop.

Bron.

On Thu, Sep 3, 2015, at 22:42, Bron Gondwana wrote:
> IOERROR: failed to create fastmail.com!user.REDACTED.#calendars (Mailbox is 
> locked)
> 
> We get these occasionally, and I wondered why until just now, when I 
> remembered...
> 
> The initial CREATE or RENAME lock.. it's a mboxname_lock EXCLUSIVE, and it's 
> taken with nowait, and error if exists.  It needs to, because the source 
> mailbox is locked, and you need to break a lock loop if you issued rename A 
> => B and rename B => A in parallel.
> 
> So it was assumed as being not a problem, because you'd never try to create 
> the same name twice concurrently.  The name didn't exist before, so nobody 
> will be looking at it.
> 
> When I say "it was assumed", I mean that I assumed.  In 2009 some time.
> 
> But that's not true when you're autocreating the same name when you try to 
> read something.  Anything.
> 
> In fact, the way that the parser works, you wind up doing it for any http 
> request.  So you get a race between two processes, one loses, logs this.
> 
> We should probably fix this :)
> 
> Bron.
> 
> 
> 
> -- 
>   Bron Gondwana
>   br...@fastmail.fm


-- 
  Bron Gondwana
  br...@fastmail.fm

Reply via email to