[Zodb-checkins] SVN: ZODB/branches/3.4/ Massive rewrite of cache.txt, to match current reality.

Tim Peters tim.one at comcast.net
Wed Jul 20 17:23:56 EDT 2005


Log message for revision 37352:
  Massive rewrite of cache.txt, to match current reality.
  

Changed:
  U   ZODB/branches/3.4/doc/ZEO/cache.txt
  U   ZODB/branches/3.4/src/ZEO/cache.py

-=-
Modified: ZODB/branches/3.4/doc/ZEO/cache.txt
===================================================================
--- ZODB/branches/3.4/doc/ZEO/cache.txt	2005-07-20 21:16:59 UTC (rev 37351)
+++ ZODB/branches/3.4/doc/ZEO/cache.txt	2005-07-20 21:23:55 UTC (rev 37352)
@@ -1,67 +1,48 @@
 ZEO Client Cache
 
-  The Client cache provides a disk based cache for each ZEO client.
-  The client cache allows reads to be done from local disk rather than
-  by remote access to the storage server.
+  The client cache provides a disk based cache for each ZEO client.  The
+  client cache allows reads to be done from local disk rather than by remote
+  access to the storage server.
 
-  The cache may be persistent or transient. If the cache is
-  persistent, then the cache files are retained for use after process
-  restarts. A non-persistent cache uses temporary files that are
-  removed when the client storage is closed.
+  The cache may be persistent or transient.  If the cache is persistent, then
+  the cache file is retained for use after process restarts.  A non-
+  persistent cache uses a temporary file.
 
-  The client cache is managed as two files. The cache manager
-  endeavors to maintain the two files at sizes less than or equal to
-  one half the cache size.  One of the cache files is designated the
-  "current" cache file. The other cache file is designated the "old"
-  cache file, if it exists.  All writes are done to the current cache
-  files.  When transactions are committed on the client, transactions
-  are not split between cache files. Large transactions may cause
-  cache files to be larger than one half the target cache size.
+  The client cache is managed in a single file, of the specified size.
 
   The life of the cache is as follows:
 
-  - When the cache is created, the first of the two cache files is
-    created and designated the "current" cache file.
+ -  The cache file is opened (if it already exists), or created and set to
+    the specified size.
 
-  - Cache records are written to the cache file, either as
-    transactions commit locally, or as data are loaded from the
-    server.
+  - Cache records are written to the cache file, as transactions commit
+    locally, and as data are loaded from the server.
 
-  - When the cache file size exceeds one half the cache size, the
-    second cache file is created and designated the "current" cache
-    file.  The first cache file becomes the "old" cache file.
+  - Writes are to "the current file position".  This is a pointer that
+    travels around the file, circularly.  After a record is written, the
+    pointer advances to just beyond it.  Objects starting at the current
+    file position are evicted, as needed, to make room for the next record
+    written.
 
-  - Cache records are written to the new current cache file, either as
-    transactions commit locally, or as data are loaded from the
-    server.
+  A distinct index file is not created, although indexing structures are
+  maintained in memory while a ClientStorage is running.  When a persistent
+  client cache file is reopened, these indexing structures are recreated
+  by analyzing the file contents.
 
-  - When a cache hit is found in the old cache file, it is copied to
-    the current cache file.
+  Persistent cache files are created in the directory named in the ``var``
+  argument to the ClientStorage, or if ``var`` is None, in the current
+  working directory.  Persistent cache files have names of the form::
 
-  - When the current cache file size exceeds one half the cache size, the
-    first cache file is recreated and designated the "current" cache
-    file.  The second cache file becomes the "old" cache file.
+    client-storage.zec
 
-  and so on.
-
-  Persistent cache files are created in the directory named in the
-  'var' argument to the ClientStorage (see ClientStorage.txt) or in
-  the 'var' subdirectory of the directory given by the INSTANCE_HOME
-  builtin (created by Zope), or in the current working directory.
-  Persistent cache files have names of the form::
-
-    cstorage-client-n.zec
-
   where:
 
-    storage -- the storage name
+    client -- the client name, as given by the ClientStorage's ``client``
+              argument
 
-    client -- the client name, as given by the 'ZEO_CLIENT' environment
-      variable or the 'client' argument provided when creating a client
-      storage.
+    storage -- the storage name, as given by the ClientStorage's ``storage``
+               argument; this is typically a string denoting a small integer,
+               "1" by default
 
-    n -- '0' for the first cache file and '1' for the second. 
-
-  For example, the second cache file for storage 'spam' and client 8881
-  would be named 'cspam-8881-1.zec'.
-
+  For example, the cache file for client '8881' and storage 'spam' is named
+  "8881-spam.zec".

Modified: ZODB/branches/3.4/src/ZEO/cache.py
===================================================================
--- ZODB/branches/3.4/src/ZEO/cache.py	2005-07-20 21:16:59 UTC (rev 37351)
+++ ZODB/branches/3.4/src/ZEO/cache.py	2005-07-20 21:23:55 UTC (rev 37352)
@@ -16,7 +16,7 @@
 ClientCache exposes an API used by the ZEO client storage.  FileCache stores
 objects on disk using a 2-tuple of oid and tid as key.
 
-ClientCaches API is similar to a storage API with methods like load(),
+ClientCache's API is similar to a storage API, with methods like load(),
 store(), and invalidate().  It manages in-memory data structures that allow
 it to map this richer API onto the simple key-based API of the lower-level
 FileCache.



More information about the Zodb-checkins mailing list