Database locks permanently when adding a list while an LMTP session is in progress
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
GNU Mailman |
New
|
Undecided
|
Unassigned |
Bug Description
The bug seems to be in the lmtp queue runner. If I try to create a new list while the queue runner is handling a connection, mailman.db gets permanently locked.
So, if I telnet to the lmtp server, and say:
220 quant.staff.
lhlo me
250 quant.staff.
mail from:<>
250 Ok
rcpt to:<email address hidden>
then, I switch to another shell, and try to create a list with create_list:
quant:
-q -o <email address hidden>
Traceback (most recent call last):
File "staging/
load_
File "/Users/
line 110, in main config.db.commit()
File "/Users/
line 79, in commit self.store.commit()
File "/Library/
line 107, in commit self._connectio
File "/Library/
line 125, in commit self.raw_
File "/Library/
line 153, in raw_execute return Connection.
File "/Library/
line 278, in raw_execute raw_cursor.
sqlite3.
And, it stays locked like that for eternity, or until I remove var/ data/mailman.
Barry says:
> I'm betting the LMTPRunner needs a config.db.commit() right before the successful return path in process_message().
Yes, or perhaps in some other part of the code.