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%2FFrontendTransaction.java;h=9240aab26c22cb8402941d01a829ef68a6855d56;hp=1b15c728a8e14106f182b1933f628d2657e201e5;hb=b00bee7547dbba0677347e991a8674f90752f6a2;hpb=cd2a6fa0d8fa6281be28d3c7b9828ecf4e932811;ds=sidebyside diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendTransaction.java index 1b15c728a8..9240aab26c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendTransaction.java @@ -73,7 +73,6 @@ final class FrontendTransaction { private long expectedSequence; private ReadWriteShardDataTreeTransaction openTransaction; - private ModifyTransactionSuccess cachedModifySuccess; private DataTreeModification sealedModification; private ShardDataTreeCohort readyCohort; @@ -170,8 +169,7 @@ final class FrontendTransaction { handleTransactionDoCommit((TransactionDoCommitRequest) request, envelope, now); return null; } else if (request instanceof TransactionAbortRequest) { - handleTransactionAbort((TransactionAbortRequest) request, envelope, now); - return null; + return handleTransactionAbort((TransactionAbortRequest) request, envelope, now); } else { throw new UnsupportedRequestException(request); } @@ -239,8 +237,13 @@ final class FrontendTransaction { }); } - private void handleTransactionAbort(final TransactionAbortRequest request, final RequestEnvelope envelope, - final long now) throws RequestException { + private TransactionSuccess handleTransactionAbort(final TransactionAbortRequest request, + final RequestEnvelope envelope, final long now) throws RequestException { + if (readyCohort == null) { + openTransaction.abort(); + return new TransactionAbortSuccess(id, request.getSequence()); + } + readyCohort.abort(new FutureCallback() { @Override public void onSuccess(final Void result) { @@ -256,6 +259,7 @@ final class FrontendTransaction { recordAndSendFailure(envelope, now, new RuntimeRequestException("Abort failed", failure)); } }); + return null; } private void coordinatedCommit(final RequestEnvelope envelope, final long now) { @@ -356,11 +360,7 @@ final class FrontendTransaction { } private ModifyTransactionSuccess replyModifySuccess(final long sequence) { - if (cachedModifySuccess == null) { - cachedModifySuccess = new ModifyTransactionSuccess(id, sequence); - } - - return recordSuccess(sequence, cachedModifySuccess); + return recordSuccess(sequence, new ModifyTransactionSuccess(id, sequence)); } private @Nullable TransactionSuccess handleModifyTransaction(final ModifyTransactionRequest request,