ONOS-4218: Fixes for resource store transaction failures
Change-Id: Ie48bb04d7daf6ed7b63c33a3c3c2703496179aa6
diff --git a/core/api/src/main/java/org/onosproject/store/primitives/MapUpdate.java b/core/api/src/main/java/org/onosproject/store/primitives/MapUpdate.java
index c8151e3..8f7cd1f 100644
--- a/core/api/src/main/java/org/onosproject/store/primitives/MapUpdate.java
+++ b/core/api/src/main/java/org/onosproject/store/primitives/MapUpdate.java
@@ -21,6 +21,8 @@
import java.util.function.Function;
+import org.onlab.util.ByteArraySizeHashPrinter;
+
import com.google.common.base.MoreObjects;
/**
@@ -153,7 +155,7 @@
.add("mapName", mapName)
.add("type", type)
.add("key", key)
- .add("value", value)
+ .add("value", value instanceof byte[] ? new ByteArraySizeHashPrinter((byte[]) value) : value)
.add("currentValue", currentValue)
.add("currentVersion", currentVersion)
.toString();
diff --git a/core/api/src/main/java/org/onosproject/store/service/CommitStatus.java b/core/api/src/main/java/org/onosproject/store/service/CommitStatus.java
new file mode 100644
index 0000000..8e86184
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/store/service/CommitStatus.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.store.service;
+
+/**
+ * Completion status of transaction.
+ */
+public enum CommitStatus {
+ /**
+ * Indicates a successfully completed transaction with all the updates committed.
+ */
+ SUCCESS,
+
+ /**
+ * Indicates a aborted transaction i.e. no updates were committed.
+ */
+ FAILURE
+}
\ No newline at end of file
diff --git a/core/api/src/main/java/org/onosproject/store/service/TransactionContext.java b/core/api/src/main/java/org/onosproject/store/service/TransactionContext.java
index 3027fcf..8f37caf 100644
--- a/core/api/src/main/java/org/onosproject/store/service/TransactionContext.java
+++ b/core/api/src/main/java/org/onosproject/store/service/TransactionContext.java
@@ -16,6 +16,8 @@
package org.onosproject.store.service;
+import java.util.concurrent.CompletableFuture;
+
import org.onosproject.store.primitives.TransactionId;
/**
@@ -63,9 +65,9 @@
* Commits a transaction that was previously started thereby making its changes permanent
* and externally visible.
*
- * @return true if this transaction succeeded, otherwise false.
+ * @return A future that will be completed when the operation completes
*/
- boolean commit();
+ CompletableFuture<CommitStatus> commit();
/**
* Aborts any changes made in this transaction context and discarding all locally cached updates.