[ONOS-6342] Refactor transaction architecture to support a shared cache for transactional primitives
Change-Id: I2a17965100895f5aa4d2202028047bb980c11d26
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TranscodingAsyncConsistentMap.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TranscodingAsyncConsistentMap.java
index 2afb5df..c2f167a 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TranscodingAsyncConsistentMap.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/TranscodingAsyncConsistentMap.java
@@ -29,11 +29,13 @@
import java.util.stream.Collectors;
import org.onlab.util.Tools;
+import org.onosproject.store.primitives.MapUpdate;
import org.onosproject.store.primitives.TransactionId;
import org.onosproject.store.service.AsyncConsistentMap;
import org.onosproject.store.service.MapEvent;
import org.onosproject.store.service.MapEventListener;
-import org.onosproject.store.service.MapTransaction;
+import org.onosproject.store.service.TransactionLog;
+import org.onosproject.store.service.Version;
import org.onosproject.store.service.Versioned;
import com.google.common.collect.Maps;
@@ -266,9 +268,27 @@
}
@Override
- public CompletableFuture<Boolean> prepare(MapTransaction<K1, V1> transaction) {
+ public CompletableFuture<Version> begin(TransactionId transactionId) {
try {
- return backingMap.prepare(transaction.map(keyEncoder, valueEncoder));
+ return backingMap.begin(transactionId);
+ } catch (Exception e) {
+ return Tools.exceptionalFuture(e);
+ }
+ }
+
+ @Override
+ public CompletableFuture<Boolean> prepare(TransactionLog<MapUpdate<K1, V1>> transactionLog) {
+ try {
+ return backingMap.prepare(transactionLog.map(record -> record.map(keyEncoder, valueEncoder)));
+ } catch (Exception e) {
+ return Tools.exceptionalFuture(e);
+ }
+ }
+
+ @Override
+ public CompletableFuture<Boolean> prepareAndCommit(TransactionLog<MapUpdate<K1, V1>> transactionLog) {
+ try {
+ return backingMap.prepareAndCommit(transactionLog.map(record -> record.map(keyEncoder, valueEncoder)));
} catch (Exception e) {
return Tools.exceptionalFuture(e);
}
@@ -276,18 +296,17 @@
@Override
public CompletableFuture<Void> commit(TransactionId transactionId) {
- return backingMap.commit(transactionId);
+ try {
+ return backingMap.commit(transactionId);
+ } catch (Exception e) {
+ return Tools.exceptionalFuture(e);
+ }
}
@Override
public CompletableFuture<Void> rollback(TransactionId transactionId) {
- return backingMap.rollback(transactionId);
- }
-
- @Override
- public CompletableFuture<Boolean> prepareAndCommit(MapTransaction<K1, V1> transaction) {
try {
- return backingMap.prepareAndCommit(transaction.map(keyEncoder, valueEncoder));
+ return backingMap.rollback(transactionId);
} catch (Exception e) {
return Tools.exceptionalFuture(e);
}