[Checkins] SVN: ZODB/trunk/src/ZEO/cache.py Cleaned up whitespace and try to avoid a close race.

Jim Fulton jim at zope.com
Tue Dec 22 15:28:05 EST 2009


Log message for revision 106929:
  Cleaned up whitespace and try to avoid a close race.
  

Changed:
  U   ZODB/trunk/src/ZEO/cache.py

-=-
Modified: ZODB/trunk/src/ZEO/cache.py
===================================================================
--- ZODB/trunk/src/ZEO/cache.py	2009-12-22 19:59:51 UTC (rev 106928)
+++ ZODB/trunk/src/ZEO/cache.py	2009-12-22 20:28:05 UTC (rev 106929)
@@ -39,19 +39,19 @@
 logger = logging.getLogger("ZEO.cache")
 
 # A disk-based cache for ZEO clients.
-# 
+#
 # This class provides an interface to a persistent, disk-based cache
 # used by ZEO clients to store copies of database records from the
 # server.
-# 
+#
 # The details of the constructor as unspecified at this point.
-# 
+#
 # Each entry in the cache is valid for a particular range of transaction
 # ids.  The lower bound is the transaction that wrote the data.  The
 # upper bound is the next transaction that wrote a revision of the
 # object.  If the data is current, the upper bound is stored as None;
 # the data is considered current until an invalidate() call is made.
-# 
+#
 # It is an error to call store() twice with the same object without an
 # intervening invalidate() to set the upper bound on the first cache
 # entry.  Perhaps it will be necessary to have a call the removes
@@ -59,12 +59,12 @@
 # entry.
 
 # Cache verification
-# 
+#
 # When the client is connected to the server, it receives
 # invalidations every time an object is modified.  When the client is
 # disconnected then reconnects, it must perform cache verification to make
 # sure its cached data is synchronized with the storage's current state.
-# 
+#
 # quick verification
 # full verification
 #
@@ -206,7 +206,7 @@
             self.f = tempfile.TemporaryFile()
             self.f.write(magic+z64)
             logger.info("created temporary cache file %r", self.f.name)
-            
+
         self._initfile(fsize)
 
         # Statistics:  _n_adds, _n_added_bytes,
@@ -328,7 +328,7 @@
                 seek(block_size-5, 1)
             sync(self.f)
 
-            # There is always data to read and 
+            # There is always data to read and
             assert last and status in ' f1234'
             first_free_offset = last
         else:
@@ -358,7 +358,7 @@
         except KeyError:
             logger.error("Couldn't find non-current %r", (oid, tid))
 
-            
+
     def clearStats(self):
         self._n_adds = self._n_added_bytes = 0
         self._n_evicts = self._n_evicted_bytes = 0
@@ -379,10 +379,12 @@
     # Close the underlying file.  No methods accessing the cache should be
     # used after this.
     def close(self):
-        if self.f:
-            sync(self.f)
-            self.f.close()
-            self.f = None
+        f = self.f
+        self.f = None
+        if f is not None:
+            sync(f)
+            f.close()
+
         if hasattr(self,'_lock_file'):
             self._lock_file.close()
 
@@ -479,7 +481,7 @@
 
         data = read(ldata)
         assert len(data) == ldata, (ofs, self.f.tell(), oid, len(data), ldata)
-        assert read(8) == oid, (ofs, self.f.tell(), oid) 
+        assert read(8) == oid, (ofs, self.f.tell(), oid)
 
         self._n_accesses += 1
         self._trace(0x22, oid, tid, end_tid, ldata)
@@ -517,11 +519,11 @@
         data = read(ldata)
         assert len(data) == ldata, (ofs, self.f.tell())
         assert read(8) == oid, (ofs, self.f.tell(), oid)
-        
+
         if end_tid < before_tid:
             self._trace(0x24, oid, "", before_tid)
             return None
-            
+
         self._n_accesses += 1
         self._trace(0x26, oid, "", saved_tid)
         return data, saved_tid, end_tid
@@ -613,7 +615,7 @@
         else:
             self.current[oid] = ofs
             self._trace(0x52, oid, start_tid, dlen=len(data))
-            
+
         self.currentofs += size
 
     ##
@@ -635,7 +637,7 @@
     #       to threading issues, that when applying a local
     #       invalidation after a store, that later invalidations from
     #       the server may already have arrived.
-    
+
     @locked
     def invalidate(self, oid, tid, server_invalidation=True):
         if tid is not None:
@@ -750,7 +752,7 @@
             except:
                 print `tid`, `end_tid`
                 raise
-                
+
         self._trace = _trace
         _trace(0x00)
 



More information about the checkins mailing list