14885: Updates sdk/cwl and services/fuse ciso8601 dependency
[arvados.git] / services / fuse / arvados_fuse / fresh.py
index 34295ef319afb125d1fe4971e37519cdb0ec983c..2e7a2a8182b62e2ffe8aa474a75c1f35b2723a43 100644 (file)
@@ -12,7 +12,7 @@ def convertTime(t):
     if not t:
         return 0
     try:
-        return calendar.timegm(ciso8601.parse_datetime_unaware(t).timetuple())
+        return calendar.timegm(ciso8601.parse_datetime_as_naive(t).timetuple())
     except (TypeError, ValueError):
         return 0
 
@@ -59,6 +59,10 @@ class FreshBase(object):
     * Clear the object contents (invalidates the object)
 
     """
+
+    __slots__ = ("_stale", "_poll", "_last_update", "_atime", "_poll_time", "use_count",
+                 "ref_count", "dead", "cache_size", "cache_uuid", "allow_attr_cache")
+
     def __init__(self):
         self._stale = True
         self._poll = False
@@ -70,8 +74,9 @@ class FreshBase(object):
         self.dead = False
         self.cache_size = 0
         self.cache_uuid = None
+
+        # Can the kernel cache attributes?
         self.allow_attr_cache = True
-        self.allow_dirent_cache = True
 
     def invalidate(self):
         """Indicate that object contents should be refreshed from source."""
@@ -139,3 +144,16 @@ class FreshBase(object):
 
     def finalize(self):
         pass
+
+    def child_event(self, ev):
+        pass
+
+    def time_to_next_poll(self):
+        if self._poll:
+            t = (self._last_update + self._poll_time) - self._atime
+            if t < 0:
+                return 0
+            else:
+                return t
+        else:
+            return self._poll_time