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%2FFrontendReadWriteTransaction.java;h=64aef6838b1af2969fbe077a7127ff4a04e24c17;hp=f9d9580214e41c2d28430c3a46c68b005ad6e8bc;hb=2bc808b02828fde2da3dd9bfabab658156faa3c6;hpb=17a38939f6ba3cbbc1ff0f1f3e00b58f5002813d;ds=sidebyside diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java index f9d9580214..64aef6838b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java @@ -104,6 +104,7 @@ final class FrontendReadWriteTransaction extends FrontendTransaction { handleTransactionAbort((TransactionAbortRequest) request, envelope, now); return null; } else { + LOG.warn("Rejecting unsupported request {}", request); throw new UnsupportedRequestException(request); } } @@ -198,7 +199,7 @@ final class FrontendReadWriteTransaction extends FrontendTransaction { }); } - private void successfulDirectCanCommit(final RequestEnvelope envelope, final long startTime) { + void successfulDirectCanCommit(final RequestEnvelope envelope, final long startTime) { readyCohort.preCommit(new FutureCallback() { @Override public void onSuccess(final DataTreeCandidate result) { @@ -213,9 +214,8 @@ final class FrontendReadWriteTransaction extends FrontendTransaction { }); } - private void successfulDirectPreCommit(final RequestEnvelope envelope, final long startTime) { + void successfulDirectPreCommit(final RequestEnvelope envelope, final long startTime) { readyCohort.commit(new FutureCallback() { - @Override public void onSuccess(final UnsignedLong result) { successfulCommit(envelope, startTime); @@ -229,7 +229,7 @@ final class FrontendReadWriteTransaction extends FrontendTransaction { }); } - private void successfulCommit(final RequestEnvelope envelope, final long startTime) { + void successfulCommit(final RequestEnvelope envelope, final long startTime) { recordAndSendSuccess(envelope, startTime, new TransactionCommitSuccess(readyCohort.getIdentifier(), envelope.getMessage().getSequence())); readyCohort = null; @@ -237,16 +237,22 @@ final class FrontendReadWriteTransaction extends FrontendTransaction { private void handleCommitLocalTransaction(final CommitLocalTransactionRequest request, final RequestEnvelope envelope, final long now) throws RequestException { - if (sealedModification.equals(request.getModification())) { + if (!sealedModification.equals(request.getModification())) { + LOG.warn("Expecting modification {}, commit request has {}", sealedModification, request.getModification()); + throw new UnsupportedRequestException(request); + } + + final java.util.Optional optFailure = request.getDelayedFailure(); + if (optFailure.isPresent()) { + readyCohort = history().createFailedCohort(getIdentifier(), sealedModification, optFailure.get()); + } else { readyCohort = history().createReadyCohort(getIdentifier(), sealedModification); + } - if (request.isCoordinated()) { - coordinatedCommit(envelope, now); - } else { - directCommit(envelope, now); - } + if (request.isCoordinated()) { + coordinatedCommit(envelope, now); } else { - throw new UnsupportedRequestException(request); + directCommit(envelope, now); } } @@ -309,6 +315,7 @@ final class FrontendReadWriteTransaction extends FrontendTransaction { coordinatedCommit(envelope, now); return null; default: + LOG.warn("{}: rejecting unsupported protocol {}", history().persistenceId(), maybeProto.get()); throw new UnsupportedRequestException(request); } }