[ONOS-6345] Track tombstones within transactions for optimistic locking on null values
Change-Id: Ib4764721e512462ec1552124ff696b8f89687d8f
diff --git a/core/api/src/main/java/org/onosproject/store/service/TransactionLog.java b/core/api/src/main/java/org/onosproject/store/service/TransactionLog.java
index c367f5d..ab84c3a 100644
--- a/core/api/src/main/java/org/onosproject/store/service/TransactionLog.java
+++ b/core/api/src/main/java/org/onosproject/store/service/TransactionLog.java
@@ -31,10 +31,12 @@
*/
public class TransactionLog<T> {
private final TransactionId transactionId;
+ private final long version;
private final List<T> records;
- public TransactionLog(TransactionId transactionId, List<T> records) {
+ public TransactionLog(TransactionId transactionId, long version, List<T> records) {
this.transactionId = transactionId;
+ this.version = version;
this.records = ImmutableList.copyOf(records);
}
@@ -48,6 +50,15 @@
}
/**
+ * Returns the transaction lock version.
+ *
+ * @return the transaction lock version
+ */
+ public long version() {
+ return version;
+ }
+
+ /**
* Returns the list of transaction log records.
*
* @return a list of transaction log records
@@ -75,6 +86,7 @@
public String toString() {
return MoreObjects.toStringHelper(getClass())
.add("transactionId", transactionId)
+ .add("version", version)
.add("records", records)
.toString();
}
@@ -88,6 +100,6 @@
* @param <U> record type of returned instance
*/
public <U> TransactionLog<U> map(Function<T, U> mapper) {
- return new TransactionLog<>(transactionId, Lists.transform(records, mapper::apply));
+ return new TransactionLog<>(transactionId, version, Lists.transform(records, mapper::apply));
}
}
\ No newline at end of file