Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/olpc/datastore/backingstore.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/olpc/datastore/backingstore.py')
-rw-r--r--src/olpc/datastore/backingstore.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/olpc/datastore/backingstore.py b/src/olpc/datastore/backingstore.py
index 724e7cc..2956811 100644
--- a/src/olpc/datastore/backingstore.py
+++ b/src/olpc/datastore/backingstore.py
@@ -470,6 +470,7 @@ class InplaceFileBackingStore(FileBackingStore):
# now map/update the existing data into the indexes
# but do it async
self.walker = threading.Thread(target=self._walk)
+ self._runWalker = True
self.walker.setDaemon(True)
self.walker.start()
@@ -489,6 +490,8 @@ class InplaceFileBackingStore(FileBackingStore):
for fn in filenames:
+ # give the thread a chance to exit
+ if not self._runWalker: break
# blacklist files
# ignore conventionally hidden files
if fn.startswith("."): continue
@@ -587,8 +590,9 @@ class InplaceFileBackingStore(FileBackingStore):
def stop(self):
if self.walker and self.walker.isAlive():
- self.walker.join()
- self.indexmanager.stop()
+ # XXX: just force the unmount, flush the index queue
+ self._runWalker = False
+ self.indexmanager.stop(force=True)
def complete_indexing(self):
if self.walker and self.walker.isAlive():