Implement managed transactions 43/75943/13
authorStephen Kitt <skitt@redhat.com>
Mon, 10 Sep 2018 16:31:07 +0000 (18:31 +0200)
committerRobert Varga <nite@hq.sk>
Thu, 4 Oct 2018 15:27:10 +0000 (15:27 +0000)
commitdb54f9d1bbb9ca06985d768f37b34d2ae992dfcb
tree6fb25c4646c1c12578e364d11149b51a266a0c6e
parent877877a2abd7a44ce6a3bea6b7da4dec53ce755f
Implement managed transactions

Managed transactions ensure that transactions are always closed in the
appropriate way:
* read-only transactions are closed when they are no longer needed;
* read-write and write-only transactions are submitted if the code
  manipulating them didn’t throw an exception, cancelled otherwise.

Managed transactions are datastore-specific and enforce either
configuration or operational reads and writes.

Two providers are included: a basic transaction manager which provides
transactions, ensures they are closed, without any extras, and a
retrying transaction manager which will retry if a retriable error
occurs (i.e. an OptimisticLockFailedException when writing, or a
ReadFailedException when reading).

This is copied from Genius where it’s used extensively; it’s also used
in NetVirt.

Change-Id: I391ca4ca50d1b1177d827e33c0d11e98378e1fb4
Signed-off-by: Stephen Kitt <skitt@redhat.com>
34 files changed:
binding/mdsal-binding-util-tests/pom.xml [new file with mode: 0644]
binding/mdsal-binding-util-tests/src/test/java/org/opendaylight/mdsal/binding/util/ManagedNewTransactionRunnerImplTest.java [new file with mode: 0644]
binding/mdsal-binding-util-tests/src/test/java/org/opendaylight/mdsal/binding/util/RetryingManagedNewTransactionRunnerTest.java [new file with mode: 0644]
binding/mdsal-binding-util-tests/src/test/java/org/opendaylight/mdsal/binding/util/TransactionAdapterTest.java [new file with mode: 0644]
binding/mdsal-binding-util/pom.xml
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/CheckedConsumer.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/CheckedFunction.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/Datastore.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/InterruptibleCheckedConsumer.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/InterruptibleCheckedFunction.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/ManagedNewTransactionRunner.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/ManagedNewTransactionRunnerImpl.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/ManagedTransactionChain.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/ManagedTransactionChainImpl.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/ManagedTransactionFactory.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/ManagedTransactionFactoryImpl.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/RetryingManagedNewTransactionRunner.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/RetryingManagedNewTransactionRunnerImpl.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/TransactionAdapter.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/TypedReadTransaction.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/TypedReadTransactionImpl.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/TypedReadWriteTransaction.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/TypedReadWriteTransactionImpl.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/TypedTransaction.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/TypedWriteTransaction.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/TypedWriteTransactionImpl.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/WriteTrackingReadWriteTransaction.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/WriteTrackingTransaction.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/WriteTrackingTypedReadWriteTransactionImpl.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/WriteTrackingTypedWriteTransactionImpl.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/WriteTrackingWriteTransaction.java [new file with mode: 0644]
binding/mdsal-binding-util/src/main/java/org/opendaylight/mdsal/binding/util/package-info.java [new file with mode: 0644]
binding/mdsal-binding-util/src/test/java/org/opendaylight/mdsal/binding/util/DatastoreTest.java [new file with mode: 0644]
binding/pom.xml