race conditon on 2 concurrent mailbox rename in murder setup
Michael Menge
michael.menge at zdv.uni-tuebingen.de
Thu Sep 8 04:24:42 EDT 2016
Hi,
I discovered a race condition in cyrus imapd 2.4.18 if 2 concurrent
rename operation are running on the same folder
19:44:15 mailserv08 imap[1001]: Rename: user.userA.Folder ->
user.userA.Mail.someotherFolder.Folder
19:45:27 mailserv08 imap[1002]: Rename: user.userA.Folder ->
user.userA.jetanotherFolder.Folder
19:46:43 mailserv08 imap[1001]: Deleted mailbox user.userA.Folder
19:46:43 mailserv08 imap[1002]: MUPDATE: can't commit mailbox entry
for 'user.userA.jetanotherFolder.Folder'
19:46:43 mailserv08 imap[1002]: Deleted mailbox
user.userA.jetanotherFolder.Folder
The first rename succeeds, but the second rename recreates the
mailboxdb entry for the original folder, which does not exist in the
filesystem. Which will lead to IOErrors if the original folder is
accessed (e.g. cyr_expung / squatter)
I am not sure if the race condition was introduced by my patch for Bug
3862 (https://bugzilla.cyrusimap.org/show_bug.cgi?id=3862) or if it
existed before.
At the moment i restore the original folder (mkdir Folder; touch
cyrus.index cyrus.header; reconstruct)
and delete it with cyradm. Is there an better way to remove the non
existing folder from the
mailboxdb / mupdate without restoring it?
Regards,
Michael Menge
--------------------------------------------------------------------------------
M.Menge Tel.: (49) 7071/29-70316
Universität Tübingen Fax.: (49) 7071/29-5912
Zentrum für Datenverarbeitung mail:
michael.menge at zdv.uni-tuebingen.de
Wächterstraße 76
72074 Tübingen
More information about the Cyrus-devel
mailing list