aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/indexer/indexer.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/indexer/indexer.py')
-rw-r--r--packages/meshbay-node/src/meshbay_node/indexer/indexer.py15
1 files changed, 8 insertions, 7 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/indexer/indexer.py b/packages/meshbay-node/src/meshbay_node/indexer/indexer.py
index c1b151a..887d435 100644
--- a/packages/meshbay-node/src/meshbay_node/indexer/indexer.py
+++ b/packages/meshbay-node/src/meshbay_node/indexer/indexer.py
@@ -40,7 +40,7 @@ from meshbay_common.paths import fold, find_fold_collisions, long_path
from meshbay_common.protocol import IndexEntry
from meshbay_node.indexer.cache import IndexCache
from meshbay_node.indexer.group_index import GroupIndex
-from meshbay_node.roots import Root, RootSet
+from meshbay_node.roots import Root, RootSet, off_disk
log = logging.getLogger(__name__)
@@ -387,7 +387,7 @@ class DirectoryIndexer:
await self._initial_scan()
async def _initial_scan(self) -> None:
- self.roots.refresh_availability()
+ await off_disk(self.roots, self.roots.refresh_availability)
total = 0
waiting = [r.name for r in self.roots if r.available]
self._queue(waiting)
@@ -695,7 +695,7 @@ class DirectoryIndexer:
self._index.remove_entry(entry.id)
self.roots = roots
- roots.refresh_availability()
+ await off_disk(roots, roots.refresh_availability)
added = [r for r in roots if r.folded not in old_names and r.available]
self._index.roots = roots.describe()
@@ -794,7 +794,7 @@ class DirectoryIndexer:
return await self._reconcile()
async def _reconcile(self) -> bool:
- changed = self.roots.refresh_availability()
+ changed = await off_disk(self.roots, self.roots.refresh_availability)
touched = False
# Drained before the loop below, because persisting the flag is what
@@ -1042,7 +1042,7 @@ class DirectoryIndexer:
if root is None:
return
root.ejected = False
- root.available = root.is_live()
+ root.available = await off_disk(self.roots, root.is_live)
if not root.available:
await self._finish_plug(None)
return
@@ -1071,7 +1071,8 @@ class DirectoryIndexer:
# Ejected or removed again while it waited. `_rescan_root`
# drops the entries before it walks, so going ahead would
# empty a root that is not there to be read.
- if self._holds(root) and not root.ejected and root.is_live():
+ live = await off_disk(self.roots, root.is_live)
+ if self._holds(root) and not root.ejected and live:
await self._rescan_root(root)
finally:
if waiting:
@@ -1143,7 +1144,7 @@ class DirectoryIndexer:
if root is None:
return
- if deleted and not root.is_live():
+ if deleted and not await off_disk(self.roots, root.is_live):
# The volume went away rather than the file. Freeze: mark the
# root and touch nothing. Every other event for this root
# will arrive here too and be dropped the same way, which is