Commit ab76209f authored by Leonardo Rochael Almeida's avatar Leonardo Rochael Almeida

merge branch rochael-TM_sortKey: add a setSortKey method to...

merge branch rochael-TM_sortKey: add a setSortKey method to Shared.setSortKey() method to Shared.DC.ZRDB.TM.TM
parents 44562abd ee2a0b8d
...@@ -38,6 +38,10 @@ Features Added ...@@ -38,6 +38,10 @@ Features Added
- Missing = 2.13.1 - Missing = 2.13.1
- Persistence = 2.13.2 - Persistence = 2.13.2
- Added "setSortKey()" method to the "Shared.DC.ZRDB.TM.TM" class
to allow database connections to specify the commit order without
needing to override the sortKey() method.
2.12.7 (2010-06-13) 2.12.7 (2010-06-13)
------------------- -------------------
......
...@@ -26,7 +26,7 @@ class TM: ...@@ -26,7 +26,7 @@ class TM:
needed at the start of a transaction. needed at the start of a transaction.
A subclass that uses locking during transaction commit must A subclass that uses locking during transaction commit must
defined a sortKey() method. define a sortKey() method.
""" """
_registered=None _registered=None
...@@ -66,13 +66,18 @@ class TM: ...@@ -66,13 +66,18 @@ class TM:
tpc_abort = abort tpc_abort = abort
# Most DA's talking to RDBMS systems do not care about commit order, so
# return the constant 1
_sort_key = 1
def sortKey(self, *ignored): def sortKey(self, *ignored):
""" The sortKey method is used for recent ZODB compatibility which """ The sortKey method is used by ZODB to have a known commit order for
needs to have a known commit order for lock acquisition. Most lock acquisition.
DA's talking to RDBMS systems do not care about commit order, so
return the constant 1
""" """
return 1 return self._sort_key
def setSortKey(self, sort_key):
self._sort_key = sort_key
class Surrogate: class Surrogate:
......
##############################################################################
#
# Copyright (c) 2009 Zope Foundation and Contributors.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
#
##############################################################################
from unittest import TestCase, TestSuite, makeSuite
from Shared.DC.ZRDB.TM import TM
class TestTM(TestCase):
def test_sortKey(self):
tm = TM()
# the default Transaction Manager should have .sortKey() of 1 for
# backward compatibility
self.assertEquals(tm.sortKey(), 1)
# but the sortKey() should be adjustable
tm.setSortKey(())
self.assertEquals(tm.sortKey(), ())
def test_suite():
return TestSuite((makeSuite(TestTM),))
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment