Nothing changed yet.
Add logging to the pyramid tween transaction factory to show the settings that are in use.
TransactionLoop.side_effect_free_log_level, and change the default value to DEBUG. It is useful to set this to ERROR or higher in tests.
Add missing dependency on zope.event.
AlreadyInTransactionerror on the second and subsequent calls to a loop when a transaction synchronizer raises an error on the first call. See issue 49.
Require at least version 3.0 of the
Drop dependency on the
dm.transaction.aborthookpackage. That functionality is now natively provided in transaction 3.0.
Add support for Python 3.8.
Refactor internal implementation details. Instead of importing everything from
nti.transactions.transactions, more specific modules are used to group objects by function. The old imports continue to work. In 4.0 they will generate a deprecation warning and in 5.0 they will be removed.
Add a Pyramid tween to manage transactions and transaction retries. Various settings can be configured as Pyramid deployment settings (e.g., in the ini file).
Make the transaction loop increase the time it sleeps between retries following the random binary exponential backoff algorithm used by Ethernet.
Reduce the default number of attempts to 4 (one attempt and 3 retries). See issue 35.
Make the transaction loop emit more metrics. See issue 31.
Make commit logging now always happen at least at the debug level, escalating to warning for long commits. It also includes the number of retries taken and the amount of time spent sleeping. See issue 32.
Make the transaction loop emit events (using
zope.event) at certain parts of the transaction lifecycle. See issue 33.
TransactionLoopplace its transaction manager in explicit mode. This can be faster and is easier to reason about, but forbids the called handler from manually calling
commit(). See issue 20.
transaction.begin()out of the block of code that is retried. Previously, an error there would probably be raised anyway and not retried, unless a subclass had made customizations.
tearDownmethods to TransactionLoop to give subclasses a place to hook into the inners of the transaction loop. This is particularly helpful if they need to do something after the transaction manager has been put in explicit mode. See issue 22.
Fix compatibility with perfmetrics 3.0: drop
from __future__ import unicode_literals.
Use the new public
isRetryableErrorin transaction 2.2. The interface for this package is unchanged, but a major version bump of a dependency necessitates a major bump here. See issue 12.
Test support for Python 3.7; remove test support for Python 3.4.
TransactionLoopis more careful to not keep traceback objects around, especially on Python 2.
TypeError, it preserves the original message.
Test support for Python 3.6.
Add a new ObjectDataManager that will attempt to execute after other ObjectDataManagers.
Add support for Python 3.
Eliminate ZODB dependency. Instead of raising a
TypeErrorsduring commit, the new class
Introduce a new subclass of
AbortFailedErrorthat is raised when an abort fails due to a system error.