X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FShardTransaction.java;h=2421cce26c0afa6f7a7c7cc3cf6b5da5830f6fd0;hp=ebec5a101491690f891605fd7908a1dac7aac0c3;hb=4639f61a41a93d6a762af97b819d164781b0f9f8;hpb=b124e8216055ee30a87207c8b8a95e5c9661f291 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 ebec5a1014..2421cce26c 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 @@ -15,8 +15,8 @@ import akka.actor.ReceiveTimeout; import akka.japi.Creator; import com.google.common.base.Optional; import com.google.common.base.Preconditions; +import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.controller.cluster.common.actor.AbstractUntypedActorWithMetering; -import org.opendaylight.controller.cluster.datastore.exceptions.UnknownMessageException; import org.opendaylight.controller.cluster.datastore.jmx.mbeans.shard.ShardStats; import org.opendaylight.controller.cluster.datastore.messages.CloseTransaction; import org.opendaylight.controller.cluster.datastore.messages.CloseTransactionReply; @@ -43,9 +43,9 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; public abstract class ShardTransaction extends AbstractUntypedActorWithMetering { private final ActorRef shardActor; private final ShardStats shardStats; - private final String transactionID; + private final TransactionIdentifier transactionID; - protected ShardTransaction(ActorRef shardActor, ShardStats shardStats, String transactionID) { + protected ShardTransaction(ActorRef shardActor, ShardStats shardStats, TransactionIdentifier transactionID) { super("shard-tx"); //actor name override used for metering. This does not change the "real" actor name this.shardActor = shardActor; this.shardStats = shardStats; @@ -53,9 +53,8 @@ public abstract class ShardTransaction extends AbstractUntypedActorWithMetering } public static Props props(TransactionType type, AbstractShardDataTreeTransaction transaction, ActorRef shardActor, - DatastoreContext datastoreContext, ShardStats shardStats, String transactionID) { - return Props.create(new ShardTransactionCreator(type, transaction, shardActor, - datastoreContext, shardStats, transactionID)); + DatastoreContext datastoreContext, ShardStats shardStats) { + return Props.create(new ShardTransactionCreator(type, transaction, shardActor, datastoreContext, shardStats)); } protected abstract AbstractShardDataTreeTransaction getDOMStoreTransaction(); @@ -64,21 +63,19 @@ public abstract class ShardTransaction extends AbstractUntypedActorWithMetering return shardActor; } - protected String getTransactionID() { + protected final TransactionIdentifier getTransactionID() { return transactionID; } @Override - public void handleReceive(Object message) throws Exception { + public void handleReceive(Object message) { if (CloseTransaction.isSerializedType(message)) { closeTransaction(true); } else if (message instanceof ReceiveTimeout) { - if(LOG.isDebugEnabled()) { - LOG.debug("Got ReceiveTimeout for inactivity - closing Tx"); - } + LOG.debug("Got ReceiveTimeout for inactivity - closing transaction {}", transactionID); closeTransaction(false); } else { - throw new UnknownMessageException(message); + unknownMessage(message); } } @@ -134,16 +131,14 @@ public abstract class ShardTransaction extends AbstractUntypedActorWithMetering final ActorRef shardActor; final DatastoreContext datastoreContext; final ShardStats shardStats; - final String transactionID; final TransactionType type; ShardTransactionCreator(TransactionType type, AbstractShardDataTreeTransaction transaction, ActorRef shardActor, - DatastoreContext datastoreContext, ShardStats shardStats, String transactionID) { + DatastoreContext datastoreContext, ShardStats shardStats) { this.transaction = Preconditions.checkNotNull(transaction); this.shardActor = shardActor; this.shardStats = shardStats; this.datastoreContext = datastoreContext; - this.transactionID = Preconditions.checkNotNull(transactionID); this.type = type; } @@ -152,16 +147,13 @@ public abstract class ShardTransaction extends AbstractUntypedActorWithMetering final ShardTransaction tx; switch (type) { case READ_ONLY: - tx = new ShardReadTransaction(transaction, shardActor, - shardStats, transactionID); + tx = new ShardReadTransaction(transaction, shardActor, shardStats); break; case READ_WRITE: - tx = new ShardReadWriteTransaction((ReadWriteShardDataTreeTransaction)transaction, - shardActor, shardStats, transactionID); + tx = new ShardReadWriteTransaction((ReadWriteShardDataTreeTransaction)transaction, shardActor, shardStats); break; case WRITE_ONLY: - tx = new ShardWriteTransaction((ReadWriteShardDataTreeTransaction)transaction, - shardActor, shardStats, transactionID); + tx = new ShardWriteTransaction((ReadWriteShardDataTreeTransaction)transaction, shardActor, shardStats); break; default: throw new IllegalArgumentException("Unhandled transaction type " + type);