From b124e8216055ee30a87207c8b8a95e5c9661f291 Mon Sep 17 00:00:00 2001 From: Tom Pantelis Date: Fri, 19 Feb 2016 06:59:21 -0500 Subject: [PATCH] Remove clientTxVersion from ShardTransaction With the removal of the pre-Lithium transaction messages, ShardTransaction et al no longer need the clientTxVersion passed on creation so this field was removed. When readying a tx, the version is obtained from the BatchedModifications. Change-Id: I96835f51f3665d205f93f6d98fd9497be5159510 Signed-off-by: Tom Pantelis --- .../controller/cluster/datastore/Shard.java | 12 ++++------ .../datastore/ShardReadTransaction.java | 4 ++-- .../datastore/ShardReadWriteTransaction.java | 4 ++-- .../datastore/ShardSnapshotCohort.java | 4 ++-- .../cluster/datastore/ShardTransaction.java | 23 ++++++------------- .../datastore/ShardTransactionFactory.java | 4 ++-- .../datastore/ShardWriteTransaction.java | 10 ++++---- .../ShardTransactionFailureTest.java | 6 ++--- .../datastore/ShardTransactionTest.java | 15 +++--------- 9 files changed, 31 insertions(+), 51 deletions(-) diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java index b63cb862ac..1c0a5b5dec 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java @@ -533,11 +533,10 @@ public class Shard extends RaftActor { } private ActorRef createTypedTransactionActor(int transactionType, - ShardTransactionIdentifier transactionId, String transactionChainId, - short clientVersion ) { + ShardTransactionIdentifier transactionId, String transactionChainId) { return transactionActorFactory.newShardTransaction(TransactionType.fromInt(transactionType), - transactionId, transactionChainId, clientVersion); + transactionId, transactionChainId); } private void createTransaction(CreateTransaction createTransaction) { @@ -548,8 +547,7 @@ public class Shard extends RaftActor { } ActorRef transactionActor = createTransaction(createTransaction.getTransactionType(), - createTransaction.getTransactionId(), createTransaction.getTransactionChainId(), - createTransaction.getVersion()); + createTransaction.getTransactionId(), createTransaction.getTransactionChainId()); getSender().tell(new CreateTransactionReply(Serialization.serializedActorPath(transactionActor), createTransaction.getTransactionId(), createTransaction.getVersion()).toSerializable(), getSelf()); @@ -559,7 +557,7 @@ public class Shard extends RaftActor { } private ActorRef createTransaction(int transactionType, String remoteTransactionId, - String transactionChainId, short clientVersion) { + String transactionChainId) { ShardTransactionIdentifier transactionId = new ShardTransactionIdentifier(remoteTransactionId); @@ -569,7 +567,7 @@ public class Shard extends RaftActor { } ActorRef transactionActor = createTypedTransactionActor(transactionType, transactionId, - transactionChainId, clientVersion); + transactionChainId); return transactionActor; } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadTransaction.java index 4bde37c202..6b40d9be49 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadTransaction.java @@ -30,8 +30,8 @@ public class ShardReadTransaction extends ShardTransaction { private final AbstractShardDataTreeTransaction transaction; public ShardReadTransaction(AbstractShardDataTreeTransaction transaction, ActorRef shardActor, - ShardStats shardStats, String transactionID, short clientTxVersion) { - super(shardActor, shardStats, transactionID, clientTxVersion); + ShardStats shardStats, String transactionID) { + super(shardActor, shardStats, transactionID); this.transaction = transaction; } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadWriteTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadWriteTransaction.java index 90607dea0f..515b448f7b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadWriteTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardReadWriteTransaction.java @@ -19,8 +19,8 @@ import org.opendaylight.controller.cluster.datastore.messages.ReadData; */ public class ShardReadWriteTransaction extends ShardWriteTransaction { public ShardReadWriteTransaction(ReadWriteShardDataTreeTransaction transaction, ActorRef shardActor, - ShardStats shardStats, String transactionID, short clientTxVersion) { - super(transaction, shardActor, shardStats, transactionID, clientTxVersion); + ShardStats shardStats, String transactionID) { + super(transaction, shardActor, shardStats, transactionID); } @Override diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardSnapshotCohort.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardSnapshotCohort.java index c4ac727cb3..30299c7bb2 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardSnapshotCohort.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardSnapshotCohort.java @@ -7,8 +7,8 @@ */ package org.opendaylight.controller.cluster.datastore; -import com.google.common.base.Preconditions; import akka.actor.ActorRef; +import com.google.common.base.Preconditions; import java.util.concurrent.ExecutionException; import org.opendaylight.controller.cluster.datastore.identifiers.ShardTransactionIdentifier; import org.opendaylight.controller.cluster.datastore.messages.CreateSnapshot; @@ -51,7 +51,7 @@ class ShardSnapshotCohort implements RaftActorSnapshotCohort { "createSnapshot" + ++createSnapshotTransactionCounter); ActorRef createSnapshotTransaction = transactionActorFactory.newShardTransaction( - TransactionType.READ_ONLY, transactionID, "", DataStoreVersions.CURRENT_VERSION); + TransactionType.READ_ONLY, transactionID, ""); createSnapshotTransaction.tell(CreateSnapshot.INSTANCE, actorRef); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java index 82770a20bd..ebec5a1014 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java @@ -44,21 +44,18 @@ public abstract class ShardTransaction extends AbstractUntypedActorWithMetering private final ActorRef shardActor; private final ShardStats shardStats; private final String transactionID; - private final short clientTxVersion; - protected ShardTransaction(ActorRef shardActor, ShardStats shardStats, String transactionID, - short clientTxVersion) { + protected ShardTransaction(ActorRef shardActor, ShardStats shardStats, String transactionID) { super("shard-tx"); //actor name override used for metering. This does not change the "real" actor name this.shardActor = shardActor; this.shardStats = shardStats; this.transactionID = Preconditions.checkNotNull(transactionID); - this.clientTxVersion = clientTxVersion; } public static Props props(TransactionType type, AbstractShardDataTreeTransaction transaction, ActorRef shardActor, - DatastoreContext datastoreContext, ShardStats shardStats, String transactionID, short txnClientVersion) { + DatastoreContext datastoreContext, ShardStats shardStats, String transactionID) { return Props.create(new ShardTransactionCreator(type, transaction, shardActor, - datastoreContext, shardStats, transactionID, txnClientVersion)); + datastoreContext, shardStats, transactionID)); } protected abstract AbstractShardDataTreeTransaction getDOMStoreTransaction(); @@ -71,10 +68,6 @@ public abstract class ShardTransaction extends AbstractUntypedActorWithMetering return transactionID; } - protected short getClientTxVersion() { - return clientTxVersion; - } - @Override public void handleReceive(Object message) throws Exception { if (CloseTransaction.isSerializedType(message)) { @@ -142,17 +135,15 @@ public abstract class ShardTransaction extends AbstractUntypedActorWithMetering final DatastoreContext datastoreContext; final ShardStats shardStats; final String transactionID; - final short txnClientVersion; final TransactionType type; ShardTransactionCreator(TransactionType type, AbstractShardDataTreeTransaction transaction, ActorRef shardActor, - DatastoreContext datastoreContext, ShardStats shardStats, String transactionID, short txnClientVersion) { + DatastoreContext datastoreContext, ShardStats shardStats, String transactionID) { this.transaction = Preconditions.checkNotNull(transaction); this.shardActor = shardActor; this.shardStats = shardStats; this.datastoreContext = datastoreContext; this.transactionID = Preconditions.checkNotNull(transactionID); - this.txnClientVersion = txnClientVersion; this.type = type; } @@ -162,15 +153,15 @@ public abstract class ShardTransaction extends AbstractUntypedActorWithMetering switch (type) { case READ_ONLY: tx = new ShardReadTransaction(transaction, shardActor, - shardStats, transactionID, txnClientVersion); + shardStats, transactionID); break; case READ_WRITE: tx = new ShardReadWriteTransaction((ReadWriteShardDataTreeTransaction)transaction, - shardActor, shardStats, transactionID, txnClientVersion); + shardActor, shardStats, transactionID); break; case WRITE_ONLY: tx = new ShardWriteTransaction((ReadWriteShardDataTreeTransaction)transaction, - shardActor, shardStats, transactionID, txnClientVersion); + shardActor, shardStats, transactionID); break; default: throw new IllegalArgumentException("Unhandled transaction type " + type); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFactory.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFactory.java index 887f656205..76838dd2f8 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFactory.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFactory.java @@ -38,7 +38,7 @@ class ShardTransactionActorFactory { } ActorRef newShardTransaction(TransactionType type, ShardTransactionIdentifier transactionID, - String transactionChainID, short clientVersion) { + String transactionChainID) { final AbstractShardDataTreeTransaction transaction; switch (type) { case READ_ONLY: @@ -58,7 +58,7 @@ class ShardTransactionActorFactory { } return actorContext.actorOf(ShardTransaction.props(type, transaction, shardActor, datastoreContext, shardMBean, - transactionID.getRemoteTransactionId(), clientVersion).withDispatcher(txnDispatcherPath), + transactionID.getRemoteTransactionId()).withDispatcher(txnDispatcherPath), transactionID.toString()); } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardWriteTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardWriteTransaction.java index 1a50d9b06f..07f9c90fa2 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardWriteTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardWriteTransaction.java @@ -30,8 +30,8 @@ public class ShardWriteTransaction extends ShardTransaction { private final ReadWriteShardDataTreeTransaction transaction; public ShardWriteTransaction(ReadWriteShardDataTreeTransaction transaction, ActorRef shardActor, - ShardStats shardStats, String transactionID, short clientTxVersion) { - super(shardActor, shardStats, transactionID, clientTxVersion); + ShardStats shardStats, String transactionID) { + super(shardActor, shardStats, transactionID); this.transaction = transaction; } @@ -75,7 +75,7 @@ public class ShardWriteTransaction extends ShardTransaction { totalBatchedModificationsReceived, batched.getTotalMessagesSent())); } - readyTransaction(false, batched.isDoCommitOnReady()); + readyTransaction(false, batched.isDoCommitOnReady(), batched.getVersion()); } else { getSender().tell(new BatchedModificationsReply(batched.getModifications().size()), getSelf()); } @@ -106,12 +106,12 @@ public class ShardWriteTransaction extends ShardTransaction { } } - private void readyTransaction(boolean returnSerialized, boolean doImmediateCommit) { + private void readyTransaction(boolean returnSerialized, boolean doImmediateCommit, short clientTxVersion) { String transactionID = getTransactionID(); LOG.debug("readyTransaction : {}", transactionID); - getShardActor().forward(new ForwardedReadyTransaction(transactionID, getClientTxVersion(), + getShardActor().forward(new ForwardedReadyTransaction(transactionID, clientTxVersion, transaction, returnSerialized, doImmediateCommit), getContext()); // The shard will handle the commit from here so we're no longer needed - self-destruct. diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java index ae4426e35b..77301f1de6 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java @@ -60,7 +60,7 @@ public class ShardTransactionFailureTest extends AbstractActorTest { final ActorRef shard = createShard(); final Props props = ShardTransaction.props(RO, store.newReadOnlyTransaction("test-txn", null), shard, - datastoreContext, shardStats, "txn", DataStoreVersions.CURRENT_VERSION); + datastoreContext, shardStats, "txn"); final TestActorRef subject = TestActorRef.create(getSystem(), props, "testNegativeReadWithReadOnlyTransactionClosed"); @@ -82,7 +82,7 @@ public class ShardTransactionFailureTest extends AbstractActorTest { final ActorRef shard = createShard(); final Props props = ShardTransaction.props(RW, store.newReadWriteTransaction("test-txn", null), shard, - datastoreContext, shardStats, "txn", DataStoreVersions.CURRENT_VERSION); + datastoreContext, shardStats, "txn"); final TestActorRef subject = TestActorRef.create(getSystem(), props, "testNegativeReadWithReadWriteTransactionClosed"); @@ -103,7 +103,7 @@ public class ShardTransactionFailureTest extends AbstractActorTest { final ActorRef shard = createShard(); final Props props = ShardTransaction.props(RW, store.newReadWriteTransaction("test-txn", null), shard, - datastoreContext, shardStats, "txn", DataStoreVersions.CURRENT_VERSION); + datastoreContext, shardStats, "txn"); final TestActorRef subject = TestActorRef.create(getSystem(), props, "testNegativeExistsWithReadWriteTransactionClosed"); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java index 73c81fe9b7..e0c9ace760 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java @@ -80,21 +80,12 @@ public class ShardTransactionTest extends AbstractActorTest { } private ActorRef newTransactionActor(TransactionType type, AbstractShardDataTreeTransaction transaction, String name) { - return newTransactionActor(type, transaction, name, DataStoreVersions.CURRENT_VERSION); - } - - private ActorRef newTransactionActor(TransactionType type, AbstractShardDataTreeTransaction transaction, String name, short version) { - return newTransactionActor(type, transaction, null, name, version); + return newTransactionActor(type, transaction, null, name); } private ActorRef newTransactionActor(TransactionType type, AbstractShardDataTreeTransaction transaction, ActorRef shard, String name) { - return newTransactionActor(type, transaction, null, name, DataStoreVersions.CURRENT_VERSION); - } - - private ActorRef newTransactionActor(TransactionType type, AbstractShardDataTreeTransaction transaction, ActorRef shard, String name, - short version) { Props props = ShardTransaction.props(type, transaction, shard != null ? shard : createShard(), - datastoreContext, shardStats, "txn", version); + datastoreContext, shardStats, "txn"); return getSystem().actorOf(props, name); } @@ -426,7 +417,7 @@ public class ShardTransactionTest extends AbstractActorTest { public void testNegativePerformingWriteOperationOnReadTransaction() throws Exception { final ActorRef shard = createShard(); final Props props = ShardTransaction.props(TransactionType.READ_ONLY, readOnlyTransaction(), shard, - datastoreContext, shardStats, "txn", DataStoreVersions.CURRENT_VERSION); + datastoreContext, shardStats, "txn"); final TestActorRef transaction = TestActorRef.apply(props,getSystem()); transaction.receive(new BatchedModifications("tx1", DataStoreVersions.CURRENT_VERSION, null), -- 2.36.6