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%2FFrontendTransaction.java;h=b25e5da42a22f95b861bdbf9ea5cdbf2d331fecb;hb=9b235df8e0b4d8c4c7419419538188cdf7b2bfc2;hp=6c7ae07a3cf890c8cba9db65eba9e3fec349a405;hpb=225fa198c5964a505695afb60f4adbcd9e9bebf5;p=controller.git 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 6c7ae07a3c..b25e5da42a 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 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2016, 2017 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -11,7 +11,7 @@ import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; import com.google.common.base.Verify; import java.util.ArrayDeque; -import java.util.Iterator; +import java.util.Optional; import java.util.Queue; import javax.annotation.Nullable; import javax.annotation.concurrent.NotThreadSafe; @@ -95,16 +95,14 @@ abstract class FrontendTransaction implements Identifiable it = replayQueue.iterator(); - while (it.hasNext()) { - final Object replay = it.next(); + for (Object replay : replayQueue) { if (replaySequence == sequence) { if (replay instanceof RequestException) { throw (RequestException) replay; } Verify.verify(replay instanceof TransactionSuccess); - return java.util.Optional.of((TransactionSuccess) replay); + return Optional.of((TransactionSuccess) replay); } replaySequence++; @@ -122,14 +120,15 @@ abstract class FrontendTransaction implements Identifiable handleRequest(final TransactionRequest request, - final RequestEnvelope envelope, final long now) throws RequestException { + @Nullable + final TransactionSuccess handleRequest(final TransactionRequest request, final RequestEnvelope envelope, + final long now) throws RequestException { if (request instanceof IncrementTransactionSequenceRequest) { final IncrementTransactionSequenceRequest incr = (IncrementTransactionSequenceRequest) request; expectedSequence += incr.getIncrement(); - return recordSuccess(incr.getSequence(), new IncrementTransactionSequenceSuccess(incr.getTarget(), - incr.getSequence())); + return recordSuccess(incr.getSequence(), + new IncrementTransactionSequenceSuccess(incr.getTarget(), incr.getSequence())); } if (previousFailure != null) { @@ -141,8 +140,10 @@ abstract class FrontendTransaction implements Identifiable doHandleRequest(TransactionRequest request, RequestEnvelope envelope, + @Nullable + abstract TransactionSuccess doHandleRequest(TransactionRequest request, RequestEnvelope envelope, long now) throws RequestException; + abstract void retire(); + private void recordResponse(final long sequence, final Object response) { if (replayQueue.isEmpty()) { firstReplaySequence = sequence; @@ -189,5 +193,4 @@ abstract class FrontendTransaction implements Identifiable