On Sun, Nov 18, 2007 at 11:12:46AM +0200, Timo Sirainen wrote:
On Fri, 2007-11-16 at 19:50 -0500, Adam McDougall wrote:
- Right click on Trash folder in Thunderbird, choose "Empty Trash":
Nov 16 19:47:25 boomhauer dovecot: IMAP(mcdouga9): unlink_directory(/home/mcdouga9/Maildir/dovecot/boomhauer/private/indexes/.Trash.NewFolder) failed: Directory not empty .. (sometimes has a .nfs.blahblah file, I think I failed to catch it quick enough this time)
I think that's the problem. If Thunderbird opens the mailbox in one connection and then tries to delete it in another connection, Dovecot still has some files open in that directory and when they're deleted kernel goes and renames them to those .nfs* files.
I'm not sure if there's anything I can do about that, except maybe try to give a nicer error message ("Internal error" -> "Can't delete an open mailbox").
Please don't make dovecot treat it as a bigger problem (disconnect or even give an error) if there is nothing that can be done to improve the situation, I don't want my users to complain to me because their email client gives them a loud error because my server is unable to delete non-empty directories. I would bet my users don't delete folders very often, in fact my old server would fail folder deletion with an error for thunderbird clients because you cannot move a folder into a mbox Trash (workaround was to delete immediately). If we delete a folder and empty trash right away, it will reappear later either after a reconnect or maybe if the Trash folder gets refreshed. Definitely after a reconnect, the second attempt to empty Trash works. If I am lucky, human nature might make them wonder if they forgot to empty trash :) If there is no way to make all dovecot processes close all files in a folder to be purged from trash, on at least the same server, I guess I could settle for the current behavior. If a workaround is needed to empty trash and its not too much trouble for the user, we'll just have to document it in our knowledge base. Thanks for your consideration.