self.fresh()
- def can_clear(self):
- if not super(Directory, self).can_clear():
- return False
+ def in_use(self):
+ if super(Directory, self).in_use():
+ return True
for v in self._entries.itervalues():
- if not v.can_clear():
- return False
- return True
+ if v.in_use():
+ return True
+ return False
+
+ def has_ref(self, only_children):
+ if super(Directory, self).has_ref(only_children):
+ return True
+ for v in self._entries.itervalues():
+ if v.has_ref(False):
+ return True
+ return False
def clear(self):
"""Delete all entries"""
self._entries = {}
for n in oldentries:
oldentries[n].clear()
- for n in oldentries:
self.inodes.invalidate_entry(self.inode, n.encode(self.inodes.encoding))
self.inodes.del_entry(oldentries[n])
self.inodes.invalidate_inode(self.inode)
self.invalidate()
+ def kernel_invalidate(self):
+ for n, e in self._entries.iteritems():
+ self.inodes.invalidate_entry(self.inode, n.encode(self.inodes.encoding))
+ e.kernel_invalidate()
+ self.inodes.invalidate_inode(self.inode)
+
def mtime(self):
return self._mtime
src.flush()
def clear(self):
- r = super(CollectionDirectoryBase, self).clear()
+ super(CollectionDirectoryBase, self).clear()
self.collection = None
- return r
class CollectionDirectory(CollectionDirectoryBase):
self.collection.save()
self.collection.stop_threads()
+ def clear(self):
+ super(CollectionDirectory, self).clear()
+ self._manifest_size = 0
+
class TmpCollectionDirectory(CollectionDirectoryBase):
"""A directory backed by an Arvados collection that never gets saved.
return not self.pdh_only
-class RecursiveInvalidateDirectory(Directory):
- def invalidate(self):
- try:
- super(RecursiveInvalidateDirectory, self).invalidate()
- for a in self._entries:
- self._entries[a].invalidate()
- except Exception:
- _logger.exception()
-
-
-class TagsDirectory(RecursiveInvalidateDirectory):
+class TagsDirectory(Directory):
"""A special directory that contains as subdirectories all tags visible to the user."""
def __init__(self, parent_inode, inodes, api, num_retries, poll_time=60):