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%2FRemoteTransactionContextSupport.java;h=4f41d8902e029dc97b99b9cb385e47682e076f7b;hp=4302ed05d31ce572338d0cc698e40ba3b83cae63;hb=c796596b5c46b5203c30b143e6282662e66c5642;hpb=e448e4e5f1f071aa61152b2f49b239d878c0a580;ds=sidebyside diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/RemoteTransactionContextSupport.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/RemoteTransactionContextSupport.java index 4302ed05d3..4f41d8902e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/RemoteTransactionContextSupport.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/RemoteTransactionContextSupport.java @@ -14,13 +14,14 @@ import akka.pattern.AskTimeoutException; import akka.util.Timeout; import com.google.common.base.Preconditions; import java.util.concurrent.TimeUnit; +import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.controller.cluster.datastore.exceptions.NoShardLeaderException; import org.opendaylight.controller.cluster.datastore.exceptions.ShardLeaderNotRespondingException; -import org.opendaylight.controller.cluster.datastore.identifiers.TransactionIdentifier; import org.opendaylight.controller.cluster.datastore.messages.CreateTransaction; import org.opendaylight.controller.cluster.datastore.messages.CreateTransactionReply; import org.opendaylight.controller.cluster.datastore.messages.PrimaryShardInfo; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; +import org.opendaylight.controller.cluster.datastore.utils.TransactionIdentifierUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import scala.concurrent.Future; @@ -110,12 +111,21 @@ final class RemoteTransactionContextSupport { // For write-only Tx's we prepare the transaction modifications directly on the shard actor // to avoid the overhead of creating a separate transaction actor. transactionContextWrapper.executePriorTransactionOperations(createValidTransactionContext( - primaryShard, primaryShard.path().toString(), primaryShardInfo.getPrimaryShardVersion())); + primaryShard, String.valueOf(primaryShard.path()), primaryShardInfo.getPrimaryShardVersion())); } else { tryCreateTransaction(); } } + /** + * @deprecated Temporary utility for extracting transaction chain ID from a {@link TransactionIdentifier} + */ + @Deprecated + static String compatTransactionChainId(final TransactionIdentifier txId) { + final long historyId = txId.getHistoryId().getHistoryId(); + return historyId == 0 ? "" : Long.toUnsignedString(historyId); + } + /** * Performs a CreateTransaction try async. */ @@ -125,8 +135,8 @@ final class RemoteTransactionContextSupport { primaryShardInfo.getPrimaryShardActor()); } - Object serializedCreateMessage = new CreateTransaction(getIdentifier().toString(), - getTransactionType().ordinal(), getIdentifier().getChainId(), + Object serializedCreateMessage = new CreateTransaction(TransactionIdentifierUtils.actorNameFor(getIdentifier()), + getTransactionType().ordinal(), compatTransactionChainId(getIdentifier()), primaryShardInfo.getPrimaryShardVersion()).toSerializable(); Future createTxFuture = getActorContext().executeOperationAsync( @@ -253,7 +263,7 @@ final class RemoteTransactionContextSupport { transactionActor, getActorContext(), remoteTransactionVersion, transactionContextWrapper.getLimiter()); if(parent.getType() == TransactionType.READ_ONLY) { - TransactionContextCleanup.track(this, ret); + TransactionContextCleanup.track(parent, ret); } return ret;