pyinotify-backend: stability fix for sporadically errors in multi-threaded environment (without lock)

pull/1557/head
sebres 2016-09-09 10:56:35 +02:00
parent 8c4eebc3e3
commit 4404642fa3
1 changed files with 14 additions and 10 deletions

View File

@ -119,13 +119,14 @@ class FilterPyinotify(FileFilter):
logSys.debug("Added file watcher for %s", path) logSys.debug("Added file watcher for %s", path)
def _delFileWatcher(self, path): def _delFileWatcher(self, path):
wdInt = self.__watches[path] try:
wdInt = self.__watches.pop(path)
wd = self.__monitor.rm_watch(wdInt) wd = self.__monitor.rm_watch(wdInt)
if wd[wdInt]: if wd[wdInt]:
del self.__watches[path]
logSys.debug("Removed file watcher for %s", path) logSys.debug("Removed file watcher for %s", path)
return True return True
else: except KeyError: # pragma: no cover
pass
return False return False
## ##
@ -158,8 +159,11 @@ class FilterPyinotify(FileFilter):
if k.startswith(path_dir + pathsep)]): if k.startswith(path_dir + pathsep)]):
# Remove watches for the directory # Remove watches for the directory
# since there is no other monitored file under this directory # since there is no other monitored file under this directory
try:
wdInt = self.__watches.pop(path_dir) wdInt = self.__watches.pop(path_dir)
self.__monitor.rm_watch(wdInt) self.__monitor.rm_watch(wdInt)
except KeyError: # pragma: no cover
pass
logSys.debug("Removed monitor for the parent directory %s", path_dir) logSys.debug("Removed monitor for the parent directory %s", path_dir)
# pyinotify.ProcessEvent default handler: # pyinotify.ProcessEvent default handler: