From 744e836af4ebf52e6be62308558355ccc228546c Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 10 Jul 2019 16:07:59 +0200 Subject: [PATCH] Use OptionalLong to track enqueue time This prevents the need to box/unbox primitive longs and makes things generally more convenient. Change-Id: I6ca394526b09fdd469a9440c9313371e6185c135 Signed-off-by: Robert Varga --- .../actors/dds/AbstractProxyTransaction.java | 11 ++++---- .../dds/LocalReadWriteProxyTransaction.java | 3 ++- .../actors/dds/RemoteProxyTransaction.java | 27 ++++++++++--------- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransaction.java index 0b9f2b173a..1ed1e940d3 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransaction.java @@ -22,6 +22,7 @@ import java.util.ArrayDeque; import java.util.Deque; import java.util.Iterator; import java.util.Optional; +import java.util.OptionalLong; import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; @@ -335,7 +336,7 @@ abstract class AbstractProxyTransaction implements Identifiable enqueuedTicks) { + boolean sealAndSend(final OptionalLong enqueuedTicks) { return sealState(); } @@ -735,7 +736,7 @@ abstract class AbstractProxyTransaction implements Identifiable request, @Nullable Consumer> callback, long enqueuedTicks); - private static IllegalStateException unhandledResponseException(Response resp) { + private static IllegalStateException unhandledResponseException(final Response resp) { return new IllegalStateException("Unhandled response " + resp.getClass()); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadWriteProxyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadWriteProxyTransaction.java index c32297f0a4..9fa8ac7c42 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadWriteProxyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadWriteProxyTransaction.java @@ -10,6 +10,7 @@ package org.opendaylight.controller.cluster.databroker.actors.dds; import com.google.common.base.Preconditions; import com.google.common.base.Verify; import java.util.Optional; +import java.util.OptionalLong; import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Supplier; @@ -189,7 +190,7 @@ final class LocalReadWriteProxyTransaction extends LocalProxyTransaction { } @Override - boolean sealAndSend(final Optional enqueuedTicks) { + boolean sealAndSend(final OptionalLong enqueuedTicks) { sealModification(); return super.sealAndSend(enqueuedTicks); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/RemoteProxyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/RemoteProxyTransaction.java index 8bdf359946..d0d7946f62 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/RemoteProxyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/RemoteProxyTransaction.java @@ -13,6 +13,7 @@ import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; import java.util.Optional; +import java.util.OptionalLong; import java.util.function.Consumer; import org.opendaylight.controller.cluster.access.client.RequestTimeoutException; import org.opendaylight.controller.cluster.access.commands.AbortLocalTransactionRequest; @@ -100,17 +101,17 @@ final class RemoteProxyTransaction extends AbstractProxyTransaction { @Override void doDelete(final YangInstanceIdentifier path) { - appendModification(new TransactionDelete(path), Optional.empty()); + appendModification(new TransactionDelete(path), OptionalLong.empty()); } @Override void doMerge(final YangInstanceIdentifier path, final NormalizedNode data) { - appendModification(new TransactionMerge(path, data), Optional.empty()); + appendModification(new TransactionMerge(path, data), OptionalLong.empty()); } @Override void doWrite(final YangInstanceIdentifier path, final NormalizedNode data) { - appendModification(new TransactionWrite(path, data), Optional.empty()); + appendModification(new TransactionWrite(path, data), OptionalLong.empty()); } private FluentFuture sendReadRequest(final AbstractReadTransactionRequest request, @@ -150,35 +151,35 @@ final class RemoteProxyTransaction extends AbstractProxyTransaction { } private void ensureFlushedBuider() { - ensureFlushedBuider(Optional.empty()); + ensureFlushedBuider(OptionalLong.empty()); } - private void ensureFlushedBuider(final Optional enqueuedTicks) { + private void ensureFlushedBuider(final OptionalLong enqueuedTicks) { if (builderBusy) { flushBuilder(enqueuedTicks); } } - private void flushBuilder(final Optional enqueuedTicks) { + private void flushBuilder(final OptionalLong enqueuedTicks) { final ModifyTransactionRequest request = builder.build(); builderBusy = false; sendModification(request, enqueuedTicks); } - private void sendModification(final TransactionRequest request, final Optional enqueuedTicks) { + private void sendModification(final TransactionRequest request, final OptionalLong enqueuedTicks) { if (enqueuedTicks.isPresent()) { - enqueueRequest(request, response -> completeModify(request, response), enqueuedTicks.get().longValue()); + enqueueRequest(request, response -> completeModify(request, response), enqueuedTicks.getAsLong()); } else { sendRequest(request, response -> completeModify(request, response)); } } private void appendModification(final TransactionModification modification) { - appendModification(modification, Optional.empty()); + appendModification(modification, OptionalLong.empty()); } - private void appendModification(final TransactionModification modification, final Optional enqueuedTicks) { + private void appendModification(final TransactionModification modification, final OptionalLong enqueuedTicks) { if (operationFailure == null) { ensureInitializedBuilder(); @@ -275,7 +276,7 @@ final class RemoteProxyTransaction extends AbstractProxyTransaction { } @Override - boolean sealAndSend(final Optional enqueuedTicks) { + boolean sealAndSend(final OptionalLong enqueuedTicks) { if (sendReadyOnSeal) { ensureInitializedBuilder(); builder.setReady(); @@ -410,7 +411,7 @@ final class RemoteProxyTransaction extends AbstractProxyTransaction { private void replayLocalCommitRequest(final CommitLocalTransactionRequest request, final Consumer> callback, final long enqueuedTicks) { final DataTreeModification mod = request.getModification(); - final Optional optTicks = Optional.of(Long.valueOf(enqueuedTicks)); + final OptionalLong optTicks = OptionalLong.of(enqueuedTicks); mod.applyToCursor(new AbstractDataTreeModificationCursor() { @Override @@ -436,7 +437,7 @@ final class RemoteProxyTransaction extends AbstractProxyTransaction { void handleReplayedRemoteRequest(final TransactionRequest request, final Consumer> callback, final long enqueuedTicks) { final Consumer> cb = callback != null ? callback : resp -> { /* NOOP */ }; - final Optional optTicks = Optional.of(Long.valueOf(enqueuedTicks)); + final OptionalLong optTicks = OptionalLong.of(enqueuedTicks); if (request instanceof ModifyTransactionRequest) { handleReplayedModifyTransactionRequest(enqueuedTicks, cb, (ModifyTransactionRequest) request); -- 2.36.6