[gobject-introspection] cachestore: handle cache getting deleted while loading it. Fixes #278
- From: Christoph Reiter <creiter src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gobject-introspection] cachestore: handle cache getting deleted while loading it. Fixes #278
- Date: Sat, 20 Apr 2019 17:37:08 +0000 (UTC)
commit 2e9554ec13e362dc1d289e2f4ba4ad79e1c1ef1a
Author: Christoph Reiter <reiter christoph gmail com>
Date: Wed Apr 17 20:33:12 2019 +0200
cachestore: handle cache getting deleted while loading it. Fixes #278
In the unlucky event where the cache gets deleted after the os.path.exists()
check but before we get its mtime things would error out.
Instead of using os.path.exists() handle the exceptions of the operations
which we expect to possibly fail.
giscanner/cachestore.py | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/giscanner/cachestore.py b/giscanner/cachestore.py
index e98b52f1..baaaf1ed 100644
--- a/giscanner/cachestore.py
+++ b/giscanner/cachestore.py
@@ -106,8 +106,12 @@ class CacheStore(object):
return os.path.join(self._directory, hexdigest)
def _cache_is_valid(self, store_filename, filename):
- return (os.stat(store_filename).st_mtime >=
- os.stat(filename).st_mtime)
+ try:
+ store_mtime = os.stat(store_filename).st_mtime
+ except FileNotFoundError:
+ return False
+
+ return store_mtime >= os.stat(filename).st_mtime
def _remove_filename(self, filename):
try:
@@ -130,7 +134,7 @@ class CacheStore(object):
if store_filename is None:
return
- if (os.path.exists(store_filename) and self._cache_is_valid(store_filename, filename)):
+ if self._cache_is_valid(store_filename, filename):
return None
tmp_fd, tmp_filename = tempfile.mkstemp(prefix='g-ir-scanner-cache-')
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]