aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2017-08-09 12:57:57 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-08-09 23:45:28 +0100
commitec60459fe2ba16966544eebff43b061abb7ed3ba (patch)
treedb81adc6d690e453e81ae18ec89a5c55ecc2cb90
parentbf76cd7e5881adf264b8ba64e27a5b6ca9df4fde (diff)
downloadbitbake-contrib-ec60459fe2ba16966544eebff43b061abb7ed3ba.tar.gz
cooker: Improve inotify overflow handling
Add a proper function for clearing the mtime cache. Clean up the inotify event overflow case to err on the side of caution and clear any potentially now out of sync caches. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/cooker.py5
-rw-r--r--lib/bb/parse/__init__.py4
2 files changed, 8 insertions, 1 deletions
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 77b7f3dde..b3d6cd9e3 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -189,7 +189,7 @@ class BBCooker:
# If being called by something like tinfoil, we need to clean cached data
# which may now be invalid
- bb.parse.__mtime_cache = {}
+ bb.parse.clear_cache()
bb.parse.BBHandler.cached_statements = {}
self.ui_cmdline = None
@@ -247,7 +247,9 @@ class BBCooker:
def config_notifications(self, event):
if event.maskname == "IN_Q_OVERFLOW":
bb.warn("inotify event queue overflowed, invalidating caches.")
+ self.parsecache_valid = False
self.baseconfig_valid = False
+ bb.parse.clear_cache()
return
if not event.pathname in self.configwatcher.bbwatchedfiles:
return
@@ -259,6 +261,7 @@ class BBCooker:
if event.maskname == "IN_Q_OVERFLOW":
bb.warn("inotify event queue overflowed, invalidating caches.")
self.parsecache_valid = False
+ bb.parse.clear_cache()
return
if not event.pathname in self.inotify_modified_files:
self.inotify_modified_files.append(event.pathname)
diff --git a/lib/bb/parse/__init__.py b/lib/bb/parse/__init__.py
index a2952ecc0..2fc4002db 100644
--- a/lib/bb/parse/__init__.py
+++ b/lib/bb/parse/__init__.py
@@ -84,6 +84,10 @@ def update_cache(f):
logger.debug(1, "Updating mtime cache for %s" % f)
update_mtime(f)
+def clear_cache():
+ global __mtime_cache
+ __mtime_cache = {}
+
def mark_dependency(d, f):
if f.startswith('./'):
f = "%s/%s" % (os.getcwd(), f[2:])