forked from platformio/platformio-core
Fix broken lock file for "appstate" storage // Resolve #288
This commit is contained in:
@ -4,6 +4,13 @@ Release History
|
||||
PlatformIO 2.0
|
||||
--------------
|
||||
|
||||
2.3.3 (2015-09-??)
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* Fixed broken lock file for "appstate" storage
|
||||
(`issue #288 <https://github.com/platformio/platformio/issues/288>`_)
|
||||
|
||||
|
||||
2.3.2 (2015-09-10)
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Copyright (C) Ivan Kravets <me@ikravets.com>
|
||||
# See LICENSE for details.
|
||||
|
||||
VERSION = (2, 3, 2)
|
||||
VERSION = (2, 3, "3.dev0")
|
||||
__version__ = ".".join([str(s) for s in VERSION])
|
||||
|
||||
__title__ = "platformio"
|
||||
|
@ -3,7 +3,8 @@
|
||||
|
||||
import json
|
||||
from os import environ, getenv
|
||||
from os.path import isfile, join
|
||||
from os.path import getmtime, isfile, join
|
||||
from time import time
|
||||
|
||||
from lockfile import LockFile
|
||||
|
||||
@ -68,9 +69,8 @@ class State(object):
|
||||
|
||||
def __enter__(self):
|
||||
try:
|
||||
self._lock_state_file()
|
||||
if isfile(self.path):
|
||||
self._lock = LockFile(self.path)
|
||||
self._lock.acquire()
|
||||
with open(self.path, "r") as fp:
|
||||
self._state = json.load(fp)
|
||||
except ValueError:
|
||||
@ -85,6 +85,18 @@ class State(object):
|
||||
json.dump(self._state, fp, indent=4)
|
||||
else:
|
||||
json.dump(self._state, fp)
|
||||
self._unlock_state_file()
|
||||
|
||||
def _lock_state_file(self):
|
||||
self._lock = LockFile(self.path)
|
||||
|
||||
if (self._lock.is_locked() and
|
||||
(time() - getmtime(self._lock.lock_file)) > 10):
|
||||
self._lock.break_lock()
|
||||
|
||||
self._lock.acquire()
|
||||
|
||||
def _unlock_state_file(self):
|
||||
if self._lock:
|
||||
self._lock.release()
|
||||
|
||||
|
Reference in New Issue
Block a user