Disable old global lock system

Remove the old global locking system. We lock only the accounts that we
currently sync, so you can invoke OfflineImap multiple times now as long
as you sync different accounts. This system is compatible with all
releases >= 6.4.0, so don't run older releases simultanous to this one.

This mostly reverts commit 0d95651417,
disabling the old global lock system that we had in parallel to the new one.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
This commit is contained in:
Sebastian Spaeth 2012-01-06 23:50:54 +01:00
parent 5509691dcf
commit 1b85e35256
3 changed files with 6 additions and 17 deletions

View File

@ -13,6 +13,12 @@ others.
New Features New Features
------------ ------------
* Remove the old global locking system. We lock only the accounts that
we currently sync, so you can invoke OfflineImap multiple times now as
long as you sync different accounts. This system is compatible with
all releases >= 6.4.0, so don't run older releases simultanous to this
one.
Changes Changes
------- -------

View File

@ -191,7 +191,6 @@ class SyncableAccount(Account):
def lock(self): def lock(self):
"""Lock the account, throwing an exception if it is locked already""" """Lock the account, throwing an exception if it is locked already"""
# Take a new-style per-account lock
self._lockfd = open(self._lockfilepath, 'w') self._lockfd = open(self._lockfilepath, 'w')
try: try:
fcntl.lockf(self._lockfd, fcntl.LOCK_EX|fcntl.LOCK_NB) fcntl.lockf(self._lockfd, fcntl.LOCK_EX|fcntl.LOCK_NB)

View File

@ -23,10 +23,6 @@ import signal
import socket import socket
import logging import logging
from optparse import OptionParser from optparse import OptionParser
try:
import fcntl
except ImportError:
pass #it's OK
import offlineimap import offlineimap
from offlineimap import accounts, threadutil, syncmaster from offlineimap import accounts, threadutil, syncmaster
from offlineimap.error import OfflineImapError from offlineimap.error import OfflineImapError
@ -340,18 +336,6 @@ class OfflineImap:
#various initializations that need to be performed: #various initializations that need to be performed:
offlineimap.mbnames.init(self.config, syncaccounts) offlineimap.mbnames.init(self.config, syncaccounts)
#TODO: keep legacy lock for a few versions, then remove.
self._legacy_lock = open(self.config.getmetadatadir() + "/lock",
'w')
try:
fcntl.lockf(self._legacy_lock, fcntl.LOCK_EX|fcntl.LOCK_NB)
except NameError:
#fcntl not available (Windows), disable file locking... :(
pass
except IOError:
raise OfflineImapError("Could not take global lock.",
OfflineImapError.ERROR.REPO)
if options.singlethreading: if options.singlethreading:
#singlethreaded #singlethreaded
self.sync_singlethreaded(syncaccounts) self.sync_singlethreaded(syncaccounts)