aboutsummaryrefslogtreecommitdiffstats
path: root/Mailman/Queue/Switchboard.py (unfollow)
Commit message (Collapse)AuthorFilesLines
2013-04-06The Switchboard.finish() method now logs the text of the exception whenMark Sapiro1-3/+3
it fails to unlink/preserve a .bak file. (LP: 1165589)
2008-11-12Apply Heiko Rommel's patch for hashlib deprecation warnings for bug 293178.Barry Warsaw1-2/+2
I've modified the patch to improve some of the stylistic issues.
2008-04-26Made the preservation of unparseable messages conditional onMark Sapiro1-2/+2
mm_cfg.QRUNNER_SAVE_BAD_MESSAGES. Changed the queue for preservation of undequeueable entries from 'shunt' to 'bad'.
2008-02-14Switchboard.py - Added code to catch exceptions thrown in unpickling .bakMark Sapiro1-18/+27
files and preserve the file. This occurred when dequeue of a large entry threw MemoryError, the runner died and restarted, and then unpickling the .bak threw another MemoryError.
2008-01-02Switchboard.py - Moved the counting of the number of recoveries of a .bak fileMark Sapiro1-27/+33
from the dequeue() method to the recover_backup_files() method in order to minimize added i/o.
2007-12-16Switchboard.py - Added a count to the queue entry metadata to count the numberMark Sapiro1-5/+25
of times the entry has been dequeued in a recover backup scenario. When the count reaches three, the entry is preserved to the shunt queue and the fact logged. This prevents looping on a bad entry that causes a runner crash.
2007-05-08- CGI/admin.pymsapiro1-4/+19
The email address which forms a part of the various CGI data keys in the admin membership list is now urllib.quote()ed. This allows changing options for and unsubbing an address which contains a double-quote character. - CGI/admindb.py Added additional test to not display "Database Updated ..." when coming from the login page. - CGI/roster.py, HTMLFormatter.py Changed to show hidden members when authorization is site or list's admin or moterator password. Patch 1587651. - Defaults.py.in, Handlers/Cleanse_DKIM.py Added a new REMOVE_DKIM_HEADERS Defaults.py/mm_cfg.py setting (default = No) to control removing dkim/domainkey signatures from posts and mail to -owner. - Handlers/Decorate.py, Handlers/Scrubber.py Changed to preserve format=flowed and delsp=yes in the Content-Type: of the body when adding header/footer and when scrubbing attachments and to remove trailing spaces from the header/footer lines so they won't be flowed. Bug 1495122. Fixed a scrubber issue where the i18n translated 'next part' separator can be garbled if the list charset is different from the message. - Queue/Runner.py. Queue/Switchboard.py Now that we have .bak queue entries for recovery, it is no longer the case that an unparseable message is lost. In this case, and in case of other exceptions when dequeueing, I added a preservation feature to move the .bak file to qfiles/shunt as a .psv file and write an appropriate log entry. It is also possible for an attempt to shunt a message to fail. One example that occurred in practice (bug 1656289) was caused by a huge message that threw a MemoryError in processing and then threw another MemoryError in the attempt to pickle the message for the shunt queue. In this case as well, I log and attempt to preserve the original queue entry by renaming.
2006-07-23- Switchboard.py Changed "while key in times.keys():" tomsapiro1-1/+1
"while times.has_key(key):" for execution efficiency while maintaining Python 2.1 compatibility.
2006-07-22- Switchboard.py Added missing newline at EOF.msapiro1-1/+1
2006-07-22- bin/unshuntmsapiro1-6/+31
- Queue/Runner.py - Queue/Switchboard.py Backported the gfiles backup changes from the trunk. The following comments are from the trunk checkin. Note that the test cases are not added. Added robustness to Switchboards and Runners so that if a runner crashes uncleanly (e.g. segfaults the Python interpreter), messages being processed will not be lost. The vulnerability, ideas, and patches are credited to Richard Barrett and Mark Sapiro. Their original work was modified by Barry for this commit and any bugs are his fault. The basic idea is that instead of unlinking a .pck file in dequeue(), the file is renamed to a .bak file. The Switchboard grows a finish() method which then unlinks the .bak file. That class's constructor also grows a 'restore' argument (defaulting to false), which when true moves all .bak files it finds in its hash space to .pck, thereby restoring a file lost while "in flight". This relies on the fact that even with multiple qrunners, exactly one process will be responsible for one hash space slice, so it's never possible (under normal operation) for a .bak file to be renamed to .pck by some other process. Test cases for both the new Switchboard behavior and the use of that by Runner subclasses has been added. There are two things to watch out for, either of which may require some additional changes. There is some small potential to duplicate messages in various queues, if say 'mailmanctl' were improperly started more than once by a site admin. This usually won't happen unless an admin is overly eager with the mailmanctl -s switch, so we can chalk this one up to operator error. I'm not sure what more we can do about that. There's also a possibility that if we're processing a message that continually causes the Python interpreter to crash, we could end up duplicating messages endlessly. This is especially troublesome for the Outgoing runner which could conceivably cause a mail flood. I consider this the more critical issue to defend against, probably by adding a numbering scheme to the .bak file names and refusing to restore a .bak file more than say 3 times without human intervention.
2006-07-09 - Switchboard.py - Closed very tiny holes at the upper ends of queuemsapiro1-5/+13
slices that could result in unprocessable queue entries. Improved FIFO processing when two queue entries have the same timestamp.
2005-08-27FSF office has moved to 51 Franklin Street.tkikuchi1-1/+1
2004-10-31[ 1008983 ] qrunner w/ multiple slices crashing.tkikuchi1-1/+1
2004-02-10enqueue(), dequeue(), files(): Implementation of new, more efficient,bwarsaw1-226/+37
one-file-per-queued-message architecture. The message object and metadata dictionary are now written to the same .pck file -- in that order -- instead of to separate files which were more complicated to manage. dequeue() especially simplifies considerably. Also, get rid of the special _Switchboard hack, as well as the MarshalSwitchboard, ASCIISwitchboard, and BSDDBSwitchboard implementations. Also get rid of the DumperSwitchboard class.
2003-11-21enqueue(): Always flush and sync the message file.bwarsaw1-1/+3
2003-10-10MarshalSwitchboard._ext_write(), ASCIISwitchboard._ext_write():bwarsaw1-6/+2
Promote SYNC_AFTER_WRITE to a Defaults.py/mm_cfg.py variable after all.
2003-09-22Backporting from the HEAD -- updated queue runnersbwarsaw1-1/+23
2003-04-20Backporting from the trunk.bwarsaw1-3/+3
2003-04-02Backport:bwarsaw1-1/+2
dequeue(): If we can't read a .db file, initialize data to the empty dictionary, since the following test expects to do a has_key() on the value. Closes SF bug #707608.