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=a2da063e55d465ffd4c9bb256e9a257475d0e107;hp=f747afa7867ac8f7f6434987045315b98bc9cca5;hb=1af23ad8e572896323ed5d1c723d977a16eb7e6d;hpb=18a4539ad844c05fcd30373efa43f873aca4c142 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 f747afa786..a2da063e55 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 @@ -9,6 +9,7 @@ package org.opendaylight.controller.cluster.datastore; import akka.actor.ActorRef; +import akka.actor.PoisonPill; import akka.actor.Props; import akka.actor.UntypedActor; import akka.event.Logging; @@ -36,6 +37,7 @@ import org.opendaylight.controller.cluster.datastore.modification.MutableComposi import org.opendaylight.controller.cluster.datastore.modification.WriteModification; import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransaction; import org.opendaylight.controller.sal.core.spi.data.DOMStoreThreePhaseCommitCohort; +import org.opendaylight.controller.sal.core.spi.data.DOMStoreTransactionChain; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -67,6 +69,11 @@ public class ShardTransaction extends UntypedActor { private final ActorRef shardActor; + // FIXME : see below + // If transactionChain is not null then this transaction is part of a + // transactionChain. Not really clear as to what that buys us + private final DOMStoreTransactionChain transactionChain; + private final DOMStoreReadWriteTransaction transaction; private final MutableCompositeModification modification = @@ -77,11 +84,18 @@ public class ShardTransaction extends UntypedActor { public ShardTransaction(DOMStoreReadWriteTransaction transaction, ActorRef shardActor) { + this(null, transaction, shardActor); + } + + public ShardTransaction(DOMStoreTransactionChain transactionChain, DOMStoreReadWriteTransaction transaction, + ActorRef shardActor) { + this.transactionChain = transactionChain; this.transaction = transaction; this.shardActor = shardActor; } + public static Props props(final DOMStoreReadWriteTransaction transaction, final ActorRef shardActor) { return Props.create(new Creator() { @@ -93,6 +107,18 @@ public class ShardTransaction extends UntypedActor { }); } + public static Props props(final DOMStoreTransactionChain transactionChain, final DOMStoreReadWriteTransaction transaction, + final ActorRef shardActor) { + return Props.create(new Creator() { + + @Override + public ShardTransaction create() throws Exception { + return new ShardTransaction(transactionChain, transaction, shardActor); + } + }); + } + + @Override public void onReceive(Object message) throws Exception { log.debug("Received message {}", message); @@ -131,7 +157,7 @@ public class ShardTransaction extends UntypedActor { if (optional.isPresent()) { sender.tell(new ReadDataReply(optional.get()), self); } else { - //TODO : Need to decide what to do here + sender.tell(new ReadDataReply(null), self); } } catch (InterruptedException | ExecutionException e) { log.error(e, @@ -176,6 +202,7 @@ public class ShardTransaction extends UntypedActor { private void closeTransaction(CloseTransaction message) { transaction.close(); getSender().tell(new CloseTransactionReply(), getSelf()); + getSelf().tell(PoisonPill.getInstance(), getSelf()); }