|
|
|
@ -277,15 +277,16 @@ class Storage(object): |
|
|
|
def _create_lock(self): |
|
|
|
def _create_lock(self): |
|
|
|
if self.read_only: |
|
|
|
if self.read_only: |
|
|
|
return |
|
|
|
return |
|
|
|
self._lock_file = '{}.lock'.format(self.path) |
|
|
|
lock_filename = '{}.lock'.format(self.path) |
|
|
|
|
|
|
|
self._lock_file = lock_filename |
|
|
|
if os.path.exists(self._lock_file): |
|
|
|
if os.path.exists(self._lock_file): |
|
|
|
with open(self._lock_file, 'r') as f: |
|
|
|
with open(self._lock_file, 'r') as f: |
|
|
|
locked_by_pid = f.read() |
|
|
|
locked_by_pid = f.read() |
|
|
|
self._lock_file = None |
|
|
|
self._lock_file = None |
|
|
|
raise StorageError("File is currently in use (locked by pid {}). " |
|
|
|
raise StorageError("File is currently in use (locked by pid {}). " |
|
|
|
"If this is a leftover from a crashed instance " |
|
|
|
"If this is a leftover from a crashed instance " |
|
|
|
"you need to remove the lock file manually" . |
|
|
|
"you need to remove the lock file `{}` manually." . |
|
|
|
format(locked_by_pid)) |
|
|
|
format(locked_by_pid, lock_filename)) |
|
|
|
#FIXME: in python >=3.3 use mode x |
|
|
|
#FIXME: in python >=3.3 use mode x |
|
|
|
with open(self._lock_file, 'w') as f: |
|
|
|
with open(self._lock_file, 'w') as f: |
|
|
|
f.write(str(os.getpid())) |
|
|
|
f.write(str(os.getpid())) |
|
|
|
|