r3048 - in zodb/trunk/debian (10 files)

jmuchemb-guest at users.alioth.debian.org jmuchemb-guest at users.alioth.debian.org
Wed Jan 25 18:25:21 UTC 2017


    Date: Wednesday, January 25, 2017 @ 18:25:20
  Author: jmuchemb-guest
Revision: 3048

New upstream release 3.10.7

This is the last upstream version for branch 3, which is not maintained
anymore. This new minor release comes with a few bugfixes and at the moment,
it is a good stable version.

The next upstream version will be from branch 4 or 5. d/watch is already
changed to track the new egg name: the upstream repository is the same and it
is planned to continue with this Debian source package instead of creating a
new one.

This is probably the last time that get-orig-source is used.

Added:
  zodb/trunk/debian/patches/Revert-Update-synchronizers-tests-wrt-to-transaction.patch
  zodb/trunk/debian/pydist-overrides
Modified:
  zodb/trunk/debian/changelog
  zodb/trunk/debian/compat
  zodb/trunk/debian/control
  zodb/trunk/debian/copyright
  zodb/trunk/debian/patches/series
  zodb/trunk/debian/rules
  zodb/trunk/debian/watch
Deleted:
  zodb/trunk/debian/patches/Fix-possible-data-corruption-after-FileStorage-is-tr.patch

Modified: zodb/trunk/debian/changelog
===================================================================
--- zodb/trunk/debian/changelog	2016-12-14 12:00:50 UTC (rev 3047)
+++ zodb/trunk/debian/changelog	2017-01-25 18:25:20 UTC (rev 3048)
@@ -1,3 +1,26 @@
+zodb (1:3.10.7-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream release 3.10.7
+    - drop patch merged upstream:
+      Fix-possible-data-corruption-after-FileStorage-is-tr.patch
+    - new patch to make tests run with transaction < 1.6.1:
+      Revert-Update-synchronizers-tests-wrt-to-transaction.patch
+  * Use pybuild instead of van.pydeb.
+  * Use debhelper 10.
+  * d/control:
+    - Drop 'Conflicts: zope3': this package was removed long time ago.
+    - Update Standards-Version to 3.9.8 (no change needed).
+    - Use HTTPS for Vcs-Browser.
+    - Set section back to 'python'. As clarified upstream:
+      « ZODB doesn't depend on Zope in any way and is used in many projects
+        that have nothing to do with Zope. »
+      This also fixes an override disparity.
+  * d/copyright: update Copyright: year.
+  * d/watch: fix by refreshing it from pypi.debian.net
+
+ -- Julien Muchembled <jm at jmuchemb.eu>  Sat, 21 Jan 2017 22:25:01 +0100
+
 zodb (1:3.10.5+1.gb28a24c-1) unstable; urgency=medium
 
   * Team upload.

Modified: zodb/trunk/debian/compat
===================================================================
--- zodb/trunk/debian/compat	2016-12-14 12:00:50 UTC (rev 3047)
+++ zodb/trunk/debian/compat	2017-01-25 18:25:20 UTC (rev 3048)
@@ -1 +1 @@
-9
+10

Modified: zodb/trunk/debian/control
===================================================================
--- zodb/trunk/debian/control	2016-12-14 12:00:50 UTC (rev 3047)
+++ zodb/trunk/debian/control	2017-01-25 18:25:20 UTC (rev 3048)
@@ -1,35 +1,31 @@
 Source: zodb
-Section: zope
+Section: python
 Priority: extra
 Maintainer: Debian/Ubuntu Zope Team <pkg-zope-developers at lists.alioth.debian.org>
 Uploaders: Brian Sutherland <brian at vanguardistas.net>,
            Fabio Tranchitella <kobold at debian.org>
-Build-Depends: debhelper (>= 9),
+Build-Depends: debhelper (>= 10),
                python-all-dev (>= 2.6.6-3~),
                python-setuptools,
-               python-van.pydeb (>= 1.3.3-2),
                dh-python,
-Standards-Version: 3.9.6
+Standards-Version: 3.9.8
 X-Python-Version: >= 2.5
 XS-Testsuite: autopkgtest
 Vcs-Svn: svn://anonscm.debian.org/pkg-zope/zodb/trunk
-Vcs-Browser: http://anonscm.debian.org/viewvc/pkg-zope/zodb/trunk
+Vcs-Browser: https://anonscm.debian.org/viewvc/pkg-zope/zodb/trunk
 Homepage: http://zodb.org/
 
 Package: python-zodb
 Architecture: any
-Depends: ${pydeb:Depends},
-         ${python:Depends},
+Depends: ${python:Depends},
          ${misc:Depends},
          ${shlibs:Depends},
          python-persistent
-Provides: ${pydeb:Provides}
-Suggests: ${pydeb:Suggests}
-Conflicts: zope3
+Suggests: python-manuel, python-zope.testing
 Description: Zope Object Database (ZODB)
  The Zope Object Database is an object-oriented database for Python that
  provides a high-degree of transparency. Applications can take advantage of
- object database features with few, if any, changes to application logic. 
+ object database features with few, if any, changes to application logic.
  .
  ZODB includes features such as a pluggable storage interface, rich transaction
  support, and undo.

Modified: zodb/trunk/debian/copyright
===================================================================
--- zodb/trunk/debian/copyright	2016-12-14 12:00:50 UTC (rev 3047)
+++ zodb/trunk/debian/copyright	2017-01-25 18:25:20 UTC (rev 3048)
@@ -4,7 +4,7 @@
 Source: http://pypi.python.org/pypi/ZODB3
 
 Files: *
-Copyright: (c) 2001-2010 Zope Foundation and Contributors.
+Copyright: (c) 2001-2016 Zope Foundation and Contributors.
 License: Zope-2.1
  Zope Public License (ZPL) Version 2.1
  .

Deleted: zodb/trunk/debian/patches/Fix-possible-data-corruption-after-FileStorage-is-tr.patch
===================================================================
--- zodb/trunk/debian/patches/Fix-possible-data-corruption-after-FileStorage-is-tr.patch	2016-12-14 12:00:50 UTC (rev 3047)
+++ zodb/trunk/debian/patches/Fix-possible-data-corruption-after-FileStorage-is-tr.patch	2017-01-25 18:25:20 UTC (rev 3048)
@@ -1,76 +0,0 @@
-From: Julien Muchembled <jm at nexedi.com>
-Date: Tue, 11 Feb 2014 19:17:07 +0100
-Subject: Fix possible data corruption after FileStorage is truncated to roll
- back a transaction
-
-Multi-threaded IO support, which is new to ZODB 3.10, allows clients to read
-data (load & loadBefore) even after tpc_vote has started to write a new
-transaction to disk. This is done by using different 'file' objects.
-
-Issues start when a transaction is rolled back after data has been appended
-(using the writing file object). Truncating is not enough because the FilePool
-may have been used concurrently to read the end of the last transaction:
-file objects have their own read buffers which, in this case, may also contain
-the beginning of the aborted transaction.
-
-So a solution is to invalidate read buffers whenever they may contain wrong
-data. This patch does it on truncation, which happens rarely enough to not
-affect performance.
-
-We discovered this bug in the following conditions:
-- ZODB splitted in several FileStorage
-- many conflicts in the first committed DB, but always resolved
-- unresolved conflict in another DB
-If the transaction is replayed with success (no more conflict in the other DB),
-a subsequent load of the object that could be resolved in the first DB may, for
-example, return a wrong serial (tid of the aborted transaction) if the layout
-of the committed transaction matches that of the aborted one.
-
-The bug usually manifests with POSKeyError & CorruptedDataError exceptions in
-ZEO logs (+ ZEO freeze due to https://github.com/zopefoundation/ZODB/pull/15),
-for example while trying to resolve a conflict (and restarting the transaction
-does not help, causing Site Errors in Zope).
-But theorically, this could also cause silent corruption or unpickling errors
-at client side.
-
-Forwarded: http://thread.gmane.org/gmane.comp.web.zope.zodb/12685/focus=12751
----
- src/ZODB/FileStorage/FileStorage.py | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-diff --git a/src/ZODB/FileStorage/FileStorage.py b/src/ZODB/FileStorage/FileStorage.py
-index be9d58b..241cfdb 100644
---- a/src/ZODB/FileStorage/FileStorage.py
-+++ b/src/ZODB/FileStorage/FileStorage.py
-@@ -683,6 +683,7 @@ def tpc_vote(self, transaction):
-                 # Hm, an error occurred writing out the data. Maybe the
-                 # disk is full. We don't want any turd at the end.
-                 self._file.truncate(self._pos)
-+                self._files.flush()
-                 raise
-             self._nextpos = self._pos + (tl + 8)
- 
-@@ -737,6 +738,7 @@ def _finish_finish(self, tid):
-     def _abort(self):
-         if self._nextpos:
-             self._file.truncate(self._pos)
-+            self._files.flush()
-             self._nextpos=0
-             self._blob_tpc_abort()
- 
-@@ -1997,6 +1999,15 @@ def __init__(self, file_name):
-         self._out = []
-         self._cond = threading.Condition()
- 
-+    def flush(self):
-+        """Empty read buffers.
-+
-+        This is required if they contain data of rolled back transactions.
-+        """
-+        with self.write_lock():
-+            for f in self._files:
-+                f.flush()
-+
-     @contextlib.contextmanager
-     def write_lock(self):
-         with self._cond:

Added: zodb/trunk/debian/patches/Revert-Update-synchronizers-tests-wrt-to-transaction.patch
===================================================================
--- zodb/trunk/debian/patches/Revert-Update-synchronizers-tests-wrt-to-transaction.patch	                        (rev 0)
+++ zodb/trunk/debian/patches/Revert-Update-synchronizers-tests-wrt-to-transaction.patch	2017-01-25 18:25:20 UTC (rev 3048)
@@ -0,0 +1,97 @@
+From 68ab70d35c43db24f21297364649ba6aec96894e Mon Sep 17 00:00:00 2001
+From: Julien Muchembled <jm at nexedi.com>
+Date: Wed, 25 Jan 2017 11:28:05 +0100
+Subject: [PATCH] Revert "Update 'synchronizers' tests wrt to transaction
+ 1.6.1"
+
+We still have transaction < 1.6.1 in Debian.
+
+This reverts commit d84096169dea3a7bc056da59830746c7468ee62f.
+---
+ src/ZODB/tests/synchronizers.txt | 56 ++++++++++++++++++++++++----------------
+ 1 file changed, 34 insertions(+), 22 deletions(-)
+
+diff --git a/src/ZODB/tests/synchronizers.txt b/src/ZODB/tests/synchronizers.txt
+index ef825ac..3c5035e 100644
+--- a/src/ZODB/tests/synchronizers.txt
++++ b/src/ZODB/tests/synchronizers.txt
+@@ -25,27 +25,11 @@ Make a change locally:
+     >>> rt = cn.root()
+     >>> rt['a'] = 1
+ 
+-Sync isn't called when a connection is opened, even though that
+-implicitly starts a new transaction:
++Sync should not have been called yet.
+ 
+-    >>> st.sync_called
++    >>> st.sync_called  # False before 3.4
+     False
+ 
+-Sync is called when we explicitly start a new transaction:
+-
+-    >>> _ = transaction.begin()
+-
+-    >>> st.sync_called
+-    True
+-    >>> st.sync_called = False
+-
+-BTW, calling ``sync()`` on a connection starts a new transaction, which
+-caused ``sync()`` to be called on the storage:
+-
+-    >>> cn.sync()
+-    >>> st.sync_called
+-    True
+-    >>> st.sync_called = False
+ 
+ ``sync()`` is called by the Connection's ``afterCompletion()`` hook after the
+ commit completes.
+@@ -78,14 +62,42 @@ traceback then ;-)
+ 
+     >>> cn.close()
+ 
+-As a special case, if a synchronizer registers while a transaction is
+-in flight, then newTransaction and thus the storage sync method is
+-called:
++One more, very obscure.  It was the case that if the first action a new
++threaded transaction manager saw was a ``begin()`` call, then synchronizers
++registered after that in the same transaction weren't communicated to the
++`Transaction` object, and so the synchronizers' ``afterCompletion()`` hooks
++weren't called when the transaction commited.  None of the test suites
++(ZODB's, Zope 2.8's, or Zope3's) caught that, but apparently Zope 3 takes this
++path at some point when serving pages.
+ 
++    >>> tm = transaction.ThreadTransactionManager()
++    >>> st.sync_called = False
++    >>> dummy = tm.begin()  # we're doing this _before_ opening a connection
++    >>> cn = db.open(transaction_manager=tm)
++    >>> rt = cn.root()      # make a change
++    >>> rt['c'] = 3
++    >>> st.sync_called
++    False
++
++Now ensure that ``cn.afterCompletion() -> st.sync()`` gets called by commit
++despite that the `Connection` registered after the transaction began:
++
++    >>> tm.commit()
++    >>> st.sync_called
++    True
++
++And try the same thing with a non-threaded transaction manager:
++
++    >>> cn.close()
+     >>> tm = transaction.TransactionManager()
+     >>> st.sync_called = False
+-    >>> _ = tm.begin()  # we're doing this _before_ opening a connection
++    >>> dummy = tm.begin()  # we're doing this _before_ opening a connection
+     >>> cn = db.open(transaction_manager=tm)
++    >>> rt = cn.root()      # make a change
++    >>> rt['d'] = 4
++    >>> st.sync_called
++    False
++    >>> tm.commit()
+     >>> st.sync_called
+     True
+ 
+-- 
+2.10.2.2.g19ca937.dirty
+

Modified: zodb/trunk/debian/patches/series
===================================================================
--- zodb/trunk/debian/patches/series	2016-12-14 12:00:50 UTC (rev 3047)
+++ zodb/trunk/debian/patches/series	2017-01-25 18:25:20 UTC (rev 3048)
@@ -1,3 +1,3 @@
 Make-compatible-with-python-persistent-4.x.patch
 Don-t-provide-persistent-headers-in-python-zodb.patch
-Fix-possible-data-corruption-after-FileStorage-is-tr.patch
+Revert-Update-synchronizers-tests-wrt-to-transaction.patch

Added: zodb/trunk/debian/pydist-overrides
===================================================================
--- zodb/trunk/debian/pydist-overrides	                        (rev 0)
+++ zodb/trunk/debian/pydist-overrides	2017-01-25 18:25:20 UTC (rev 3048)
@@ -0,0 +1,2 @@
+# versioned dependencies
+transaction python-transaction; PEP386

Modified: zodb/trunk/debian/rules
===================================================================
--- zodb/trunk/debian/rules	2016-12-14 12:00:50 UTC (rev 3047)
+++ zodb/trunk/debian/rules	2017-01-25 18:25:20 UTC (rev 3048)
@@ -1,7 +1,10 @@
 #!/usr/bin/make -f
 
-export PYDEB_SUGGESTS_EXTRAS=test
+export PYBUILD_NAME=zodb
 
+# All tests are run by autopkgtest.
+export PYBUILD_DISABLE = test
+
 PKD  = $(abspath $(dir $(MAKEFILE_LIST)))
 PKG  = $(word 2, $(shell dpkg-parsechangelog -l$(PKD)/changelog))
 UVER = $(shell dpkg-parsechangelog -l$(PKD)/changelog | \
@@ -13,7 +16,7 @@
 	set $(UVER); wget -O $@ https://github.com/zopefoundation/ZODB/archive/$${1#*.g}.tar.gz
 
 %:
-	dh $@ --with pydeb --with python2
+	dh $@ --with python2 --buildsystem=pybuild
 
 override_dh_install:
 	dh_install

Modified: zodb/trunk/debian/watch
===================================================================
--- zodb/trunk/debian/watch	2016-12-14 12:00:50 UTC (rev 3047)
+++ zodb/trunk/debian/watch	2017-01-25 18:25:20 UTC (rev 3048)
@@ -1,2 +1,4 @@
+# please also check https://pypi.debian.net/ZODB/watch
 version=3
-http://pypi.debian.net/ZODB/ZODB-([0-9.]+)\.tar\.gz
+opts=uversionmangle=s/(rc|a|b|c)/~$1/ \
+https://pypi.debian.net/ZODB/ZODB-(.+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz)))




More information about the pkg-zope-developers mailing list