bitbake: 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.

(Bitbake rev: ec60459fe2ba16966544eebff43b061abb7ed3ba)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2017-08-09 12:57:57 +01:00
parent 019f518287
commit a0f729d31d
2 changed files with 8 additions and 1 deletions

View File

@ -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)

View File

@ -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:])