SVN: ZODB/trunk/src/ Bug fixed:

Jim Fulton <[email protected]>
Newsgroups gmane.comp.python.zope.zodb.cvs
Message-ID <20100715112145.5BDFB941C9__47939.3278285444$1279192910$gmane$org@cvs.zope.org>
Log message for revision 114767:
  Bug fixed:
  

Changed:
  U   ZODB/trunk/src/CHANGES.txt
  U   ZODB/trunk/src/ZODB/DemoStorage.py
  U   ZODB/trunk/src/ZODB/DemoStorage.test

-=-
Modified: ZODB/trunk/src/CHANGES.txt
===================================================================
--- ZODB/trunk/src/CHANGES.txt	2010-07-15 11:14:34 UTC (rev 114766)
+++ ZODB/trunk/src/CHANGES.txt	2010-07-15 11:21:45 UTC (rev 114767)
@@ -2,6 +2,19 @@
  Change History
 ================
 
+3.10.0b3 (2010-07-15)
+=====================
+
+Bugs fixed
+----------
+
+- A change in 3.10.0b2:
+
+  "DemoStorages didn't close their changes databases when they were
+   created temporarily (not passed to the constructor)."
+
+  Introduced a backward-compatibility problem for some applications.
+
 3.10.0b2 (2010-07-13)
 =====================
 

Modified: ZODB/trunk/src/ZODB/DemoStorage.py
===================================================================
--- ZODB/trunk/src/ZODB/DemoStorage.py	2010-07-15 11:14:34 UTC (rev 114766)
+++ ZODB/trunk/src/ZODB/DemoStorage.py	2010-07-15 11:21:45 UTC (rev 114767)
@@ -39,7 +39,7 @@
         )
 
     def __init__(self, name=None, base=None, changes=None,
-                 close_base_on_close=None, close_changes_on_close=True):
+                 close_base_on_close=None, close_changes_on_close=None):
 
         if close_base_on_close is None:
             if base is None:
@@ -56,9 +56,13 @@
             self._temporary_changes = True
             changes = ZODB.MappingStorage.MappingStorage()
             zope.interface.alsoProvides(self, ZODB.interfaces.IBlobStorage)
+            if close_changes_on_close is None:
+                close_changes_on_close = False
         else:
             if ZODB.interfaces.IBlobStorage.providedBy(changes):
                 zope.interface.alsoProvides(self, ZODB.interfaces.IBlobStorage)
+            if close_changes_on_close is None:
+                close_changes_on_close = True
 
         self.changes = changes
         self.close_changes_on_close = close_changes_on_close
@@ -77,12 +81,11 @@
 
         self._next_oid = random.randint(1, 1<<62)
 
-    __temporary_blobdir = None
     def _blobify(self):
         if (self._temporary_changes and
             isinstance(self.changes, ZODB.MappingStorage.MappingStorage)
             ):
-            blob_dir = self.__temporary_blobdir = tempfile.mkdtemp('.demoblobs')
+            blob_dir = tempfile.mkdtemp('.demoblobs')
             _temporary_blobdirs[
                 weakref.ref(self, cleanup_temporary_blobdir)
                 ] = blob_dir
@@ -104,9 +107,6 @@
             self.base.close()
         if self.close_changes_on_close:
             self.changes.close()
-            if (self.__temporary_blobdir and
-                os.path.exists(self.__temporary_blobdir)):
-                ZODB.blob.remove_committed_dir(self.__temporary_blobdir)
 
     def _copy_methods_from_changes(self, changes):
         for meth in (

Modified: ZODB/trunk/src/ZODB/DemoStorage.test
===================================================================
--- ZODB/trunk/src/ZODB/DemoStorage.test	2010-07-15 11:14:34 UTC (rev 114766)
+++ ZODB/trunk/src/ZODB/DemoStorage.test	2010-07-15 11:21:45 UTC (rev 114767)
@@ -278,9 +278,8 @@
    For now, it won't go until the storage does.
 
    >>> transaction.abort()
-   >>> conn.close()
    >>> blobdir = storage.temporaryDirectory()
-   >>> del db, conn, storage, _
+   >>> del storage, _
 
    >>> import gc
    >>> _ = gc.collect()
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.