diff options
| author | bwarsaw | 2000-06-28 18:40:48 +0000 |
|---|---|---|
| committer | bwarsaw | 2000-06-28 18:40:48 +0000 |
| commit | 2ac16aece23be336921e9285b6a83be4752a8af8 (patch) | |
| tree | 0021afb32b3b74ab49a09147deaadd80c5236c39 /Mailman/pythonlib/nntplib.py | |
| parent | f03a12908abc83c1970281e3d4b5e8f41e6347fa (diff) | |
| download | mailman-2ac16aece23be336921e9285b6a83be4752a8af8.tar.gz mailman-2ac16aece23be336921e9285b6a83be4752a8af8.tar.zst mailman-2ac16aece23be336921e9285b6a83be4752a8af8.zip | |
Unlock(): Use unconditionally flag to avoid NotLockedErrors.
Lock(): Always re-load the config.db file once the lock has been
acquired. This fixes a very serious data consistency bug, explained
briefly as:
- Process A opens a list unlocked, loading the marshaled
dictionary. Process A then tries to acquire the list lock.
- Meanwhile, Process B does the same, but it actually acquires the
lock first. Process B makes some changes, saves the list's
marshal and relinquishes the lock.
- Process A now acquires the lock. However, its database is now
out-of-date because of the Process B write. It does its work
and blithely rewrites the marshal, blowing away all of Process
B's changes.
The solution is to reload the marshal when the list lock is acquired.
__init__(): Use the new Lock() semantics more efficiently.
Diffstat (limited to 'Mailman/pythonlib/nntplib.py')
0 files changed, 0 insertions, 0 deletions
