Added distributed transaction support through a two phase commit protocol
Change-Id: I85d64234a24823fee8b3c2ea830abbb6867dad38
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 b404bae..94942e2 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
@@ -19,21 +19,31 @@
/**
* Provides a context for transactional operations.
* <p>
- * A transaction context provides a boundary within which transactions
- * are run. It also is a place where all modifications made within a transaction
- * are cached until the point when the transaction commits or aborts. It thus ensures
- * isolation of work happening with in the transaction boundary.
- * <p>
* A transaction context is a vehicle for grouping operations into a unit with the
* properties of atomicity, isolation, and durability. Transactions also provide the
* ability to maintain an application's invariants or integrity constraints,
* supporting the property of consistency. Together these properties are known as ACID.
+ * <p>
+ * A transaction context provides a boundary within which transactions
+ * are run. It also is a place where all modifications made within a transaction
+ * are cached until the point when the transaction commits or aborts. It thus ensures
+ * isolation of work happening with in the transaction boundary. Within a transaction
+ * context isolation level is REPEATABLE_READS i.e. only data that is committed can be read.
+ * The only uncommitted data that can be read is the data modified by the current transaction.
*/
public interface TransactionContext {
/**
+ * Returns the unique transactionId.
+ *
+ * @return transaction id
+ */
+ long transactionId();
+
+ /**
* Returns if this transaction context is open.
- * @return true if open, false otherwise.
+ *
+ * @return true if open, false otherwise
*/
boolean isOpen();
@@ -45,22 +55,24 @@
/**
* Commits a transaction that was previously started thereby making its changes permanent
* and externally visible.
- * @throws TransactionException if transaction fails to commit.
+ *
+ * @throws TransactionException if transaction fails to commit
*/
void commit();
/**
- * Rolls back the current transaction, discarding all its changes.
+ * Aborts any changes made in this transaction context and discarding all locally cached updates.
*/
- void rollback();
+ void abort();
/**
- * Creates a new transactional map.
+ * Returns a transactional map data structure with the specified name.
+ *
* @param <K> key type
* @param <V> value type
- * @param mapName name of the transactional map.
- * @param serializer serializer to use for encoding/decoding keys and vaulues.
- * @return new Transactional Map.
+ * @param mapName name of the transactional map
+ * @param serializer serializer to use for encoding/decoding keys and values of the map
+ * @return Transactional Map
*/
- <K, V> TransactionalMap<K, V> createTransactionalMap(String mapName, Serializer serializer);
+ <K, V> TransactionalMap<K, V> getTransactionalMap(String mapName, Serializer serializer);
}