Refactor transaction support in preparation for migration to latest APIs
- Added a explicit transaction id type
- cli command now just returns the identifiers of in-progress transactions
- Removed redriveTransactions until a better alternative is provided
- Removed DatabaseUpdate and replaced its usage with MapUpdate
Change-Id: Ic4a14967072068834510cd8459fd2a6790e456ef
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionContextBuilder.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionContextBuilder.java
index 36b2831..99d62ca 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionContextBuilder.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionContextBuilder.java
@@ -15,6 +15,13 @@
*/
package org.onosproject.store.primitives.impl;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Function;
+import java.util.function.Supplier;
+
+import org.onosproject.store.primitives.TransactionId;
+import org.onosproject.store.primitives.resources.impl.CommitResult;
+import org.onosproject.store.service.ConsistentMapBuilder;
import org.onosproject.store.service.TransactionContext;
import org.onosproject.store.service.TransactionContextBuilder;
@@ -22,29 +29,28 @@
* The default implementation of a transaction context builder. This builder
* generates a {@link DefaultTransactionContext}.
*/
-public class DefaultTransactionContextBuilder implements TransactionContextBuilder {
+public class DefaultTransactionContextBuilder extends TransactionContextBuilder {
- private boolean partitionsEnabled = true;
- private final DatabaseManager manager;
- private final long transactionId;
+ private final Supplier<ConsistentMapBuilder> mapBuilderSupplier;
+ private final Function<Transaction, CompletableFuture<CommitResult>> transactionCommitter;
+ private final TransactionId transactionId;
- public DefaultTransactionContextBuilder(DatabaseManager manager, long transactionId) {
- this.manager = manager;
+ public DefaultTransactionContextBuilder(Supplier<ConsistentMapBuilder> mapBuilderSupplier,
+ Function<Transaction, CompletableFuture<CommitResult>> transactionCommiter,
+ TransactionId transactionId) {
+ this.mapBuilderSupplier = mapBuilderSupplier;
+ this.transactionCommitter = transactionCommiter;
this.transactionId = transactionId;
}
@Override
- public TransactionContextBuilder withPartitionsDisabled() {
- partitionsEnabled = false;
- return this;
- }
-
- @Override
public TransactionContext build() {
- return new DefaultTransactionContext(
- transactionId,
- partitionsEnabled ? manager.partitionedDatabase : manager.inMemoryDatabase,
- () -> partitionsEnabled ? manager.consistentMapBuilder()
- : manager.consistentMapBuilder().withPartitionsDisabled());
+ return new DefaultTransactionContext(transactionId, transactionCommitter, () -> {
+ ConsistentMapBuilder mapBuilder = mapBuilderSupplier.get();
+ if (partitionsDisabled()) {
+ mapBuilder = mapBuilder.withPartitionsDisabled();
+ }
+ return mapBuilder;
+ });
}
}