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%2FCompositeDataTreeCohort.java;h=2aab8260f318ff871ae5d8b14695edaf599f2710;hb=refs%2Fchanges%2F12%2F100012%2F5;hp=bca00ebc4a6bdbb88cd928ffe609bdb6ae1acd5f;hpb=14c92df74247c884a43c5aaea2f154992b0ec798;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/CompositeDataTreeCohort.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/CompositeDataTreeCohort.java index bca00ebc4a..2aab8260f3 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/CompositeDataTreeCohort.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/CompositeDataTreeCohort.java @@ -20,11 +20,9 @@ import akka.dispatch.Recover; import akka.pattern.Patterns; import akka.util.Timeout; import com.google.common.collect.Lists; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.AbstractMap.SimpleImmutableEntry; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map.Entry; @@ -36,7 +34,8 @@ import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.controller.cluster.datastore.DataTreeCohortActor.CanCommit; import org.opendaylight.controller.cluster.datastore.DataTreeCohortActor.Success; -import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; +import org.opendaylight.yangtools.yang.common.Empty; +import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidate; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,7 +47,6 @@ import scala.concurrent.Future; *

* It tracks current operation and list of cohorts which successfuly finished previous phase in * case, if abort is necessary to invoke it only on cohort steps which are still active. - * */ class CompositeDataTreeCohort { private static final Logger LOG = LoggerFactory.getLogger(CompositeDataTreeCohort.class); @@ -92,7 +90,7 @@ class CompositeDataTreeCohort { ABORTED } - static final Recover EXCEPTION_TO_MESSAGE = new Recover() { + static final Recover EXCEPTION_TO_MESSAGE = new Recover<>() { @Override public Failure recover(final Throwable error) { return new Failure(error); @@ -105,13 +103,13 @@ class CompositeDataTreeCohort { private final Executor callbackExecutor; private final Timeout timeout; - private @NonNull List successfulFromPrevious = Collections.emptyList(); + private @NonNull List successfulFromPrevious = List.of(); private State state = State.IDLE; CompositeDataTreeCohort(final DataTreeCohortActorRegistry registry, final TransactionIdentifier transactionID, final SchemaContext schema, final Executor callbackExecutor, final Timeout timeout) { this.registry = requireNonNull(registry); - this.txId = requireNonNull(transactionID); + txId = requireNonNull(transactionID); this.schema = requireNonNull(schema); this.callbackExecutor = requireNonNull(callbackExecutor); this.timeout = requireNonNull(timeout); @@ -135,11 +133,11 @@ class CompositeDataTreeCohort { throw new IllegalStateException("Unhandled state " + state); } - successfulFromPrevious = Collections.emptyList(); + successfulFromPrevious = List.of(); state = State.IDLE; } - Optional> canCommit(final DataTreeCandidate tip) { + Optional> canCommit(final DataTreeCandidate tip) { if (LOG.isTraceEnabled()) { LOG.trace("{}: canCommit - candidate: {}", txId, tip); } else { @@ -149,7 +147,7 @@ class CompositeDataTreeCohort { final List messages = registry.createCanCommitMessages(txId, tip, schema); LOG.debug("{}: canCommit - messages: {}", txId, messages); if (messages.isEmpty()) { - successfulFromPrevious = Collections.emptyList(); + successfulFromPrevious = List.of(); changeStateFrom(State.IDLE, State.CAN_COMMIT_SUCCESSFUL); return Optional.empty(); } @@ -167,7 +165,7 @@ class CompositeDataTreeCohort { return Optional.of(processResponses(futures, State.CAN_COMMIT_SENT, State.CAN_COMMIT_SUCCESSFUL)); } - Optional> preCommit() { + Optional> preCommit() { LOG.debug("{}: preCommit - successfulFromPrevious: {}", txId, successfulFromPrevious); if (successfulFromPrevious.isEmpty()) { @@ -181,7 +179,7 @@ class CompositeDataTreeCohort { return Optional.of(processResponses(futures, State.PRE_COMMIT_SENT, State.PRE_COMMIT_SUCCESSFUL)); } - Optional> commit() { + Optional> commit() { LOG.debug("{}: commit - successfulFromPrevious: {}", txId, successfulFromPrevious); if (successfulFromPrevious.isEmpty()) { changeStateFrom(State.PRE_COMMIT_SUCCESSFUL, State.COMMITED); @@ -222,10 +220,10 @@ class CompositeDataTreeCohort { return ret; } - private @NonNull CompletionStage processResponses(final List>> futures, + private @NonNull CompletionStage processResponses(final List>> futures, final State currentState, final State afterState) { LOG.debug("{}: processResponses - currentState: {}, afterState: {}", txId, currentState, afterState); - final CompletableFuture returnFuture = new CompletableFuture<>(); + final CompletableFuture returnFuture = new CompletableFuture<>(); Future> aggregateFuture = Futures.sequence(Lists.transform(futures, Entry::getValue), ExecutionContexts.global()); @@ -240,14 +238,10 @@ class CompositeDataTreeCohort { return returnFuture; } - // FB issues violation for passing null to CompletableFuture#complete but it is valid and necessary when the - // generic type is Void. - @SuppressFBWarnings(value = { "NP_NONNULL_PARAM_VIOLATION", "UPM_UNCALLED_PRIVATE_METHOD" }, - justification = "https://github.com/spotbugs/spotbugs/issues/811") private void processResponses(final Throwable failure, final Iterable results, - final State currentState, final State afterState, final CompletableFuture resultFuture) { + final State currentState, final State afterState, final CompletableFuture resultFuture) { if (failure != null) { - successfulFromPrevious = Collections.emptyList(); + successfulFromPrevious = List.of(); resultFuture.completeExceptionally(failure); return; } @@ -274,12 +268,12 @@ class CompositeDataTreeCohort { firstEx.addSuppressed(it.next().cause()); } - successfulFromPrevious = Collections.emptyList(); + successfulFromPrevious = List.of(); resultFuture.completeExceptionally(firstEx); } else { successfulFromPrevious = successful; changeStateFrom(currentState, afterState); - resultFuture.complete(null); + resultFuture.complete(Empty.value()); } }