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