X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FFrontendReadOnlyTransaction.java;h=81400a2f0458bc2f8486944fffdc3fdecd30cd9b;hb=0fdb21f91e0e61e8ee911beb4cda9053537a0ccd;hp=071fded649adf0dd275602864fa51a3d22eab6c6;hpb=073066012e12969cf901accf9b5fbf4999a18934;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadOnlyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadOnlyTransaction.java index 071fded649..81400a2f04 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadOnlyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadOnlyTransaction.java @@ -7,16 +7,17 @@ */ package org.opendaylight.controller.cluster.datastore; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; +import java.util.Optional; import javax.annotation.Nullable; import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.cluster.access.commands.ExistsTransactionRequest; import org.opendaylight.controller.cluster.access.commands.ExistsTransactionSuccess; +import org.opendaylight.controller.cluster.access.commands.ModifyTransactionRequest; +import org.opendaylight.controller.cluster.access.commands.ModifyTransactionSuccess; +import org.opendaylight.controller.cluster.access.commands.PersistenceProtocol; import org.opendaylight.controller.cluster.access.commands.ReadTransactionRequest; import org.opendaylight.controller.cluster.access.commands.ReadTransactionSuccess; -import org.opendaylight.controller.cluster.access.commands.TransactionAbortRequest; -import org.opendaylight.controller.cluster.access.commands.TransactionAbortSuccess; import org.opendaylight.controller.cluster.access.commands.TransactionRequest; import org.opendaylight.controller.cluster.access.commands.TransactionSuccess; import org.opendaylight.controller.cluster.access.concepts.RequestEnvelope; @@ -50,14 +51,14 @@ final class FrontendReadOnlyTransaction extends FrontendTransaction { // Sequence has already been checked @Override - @Nullable TransactionSuccess handleRequest(final TransactionRequest request, final RequestEnvelope envelope, + @Nullable TransactionSuccess doHandleRequest(final TransactionRequest request, final RequestEnvelope envelope, final long now) throws RequestException { if (request instanceof ExistsTransactionRequest) { return handleExistsTransaction((ExistsTransactionRequest) request); } else if (request instanceof ReadTransactionRequest) { return handleReadTransaction((ReadTransactionRequest) request); - } else if (request instanceof TransactionAbortRequest) { - handleTransactionAbort((TransactionAbortRequest) request, envelope, now); + } else if (request instanceof ModifyTransactionRequest) { + handleModifyTransaction((ModifyTransactionRequest) request, envelope, now); return null; } else { LOG.warn("Rejecting unsupported request {}", request); @@ -65,21 +66,29 @@ final class FrontendReadOnlyTransaction extends FrontendTransaction { } } - private void handleTransactionAbort(final TransactionAbortRequest request, final RequestEnvelope envelope, - final long now) throws RequestException { - openTransaction.abort(() -> recordAndSendSuccess(envelope, now, new TransactionAbortSuccess(request.getTarget(), - request.getSequence()))); + @Override + void retire() { + // No-op + } + + private void handleModifyTransaction(final ModifyTransactionRequest request, final RequestEnvelope envelope, + final long now) { + // The only valid request here is with abort protocol + final java.util.Optional optProto = request.getPersistenceProtocol(); + Preconditions.checkArgument(optProto.isPresent(), "Commit protocol is missing in %s", request); + Preconditions.checkArgument(optProto.get() == PersistenceProtocol.ABORT, "Unsupported commit protocol in %s", + request); + openTransaction.abort(() -> recordAndSendSuccess(envelope, now, + new ModifyTransactionSuccess(request.getTarget(), request.getSequence()))); } - private ExistsTransactionSuccess handleExistsTransaction(final ExistsTransactionRequest request) - throws RequestException { + private ExistsTransactionSuccess handleExistsTransaction(final ExistsTransactionRequest request) { final Optional> data = openTransaction.getSnapshot().readNode(request.getPath()); return recordSuccess(request.getSequence(), new ExistsTransactionSuccess(openTransaction.getIdentifier(), request.getSequence(), data.isPresent())); } - private ReadTransactionSuccess handleReadTransaction(final ReadTransactionRequest request) - throws RequestException { + private ReadTransactionSuccess handleReadTransaction(final ReadTransactionRequest request) { final Optional> data = openTransaction.getSnapshot().readNode(request.getPath()); return recordSuccess(request.getSequence(), new ReadTransactionSuccess(openTransaction.getIdentifier(), request.getSequence(), data));