X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fcds-access-client%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Faccess%2Fclient%2FReconnectingClientConnection.java;h=e63e7253bcf9b66731e78dc5c698a9d1ab879215;hb=HEAD;hp=0209f95bce2d8d7676b4ae09330c6e355e5e04dd;hpb=320a4e5cd2d9d80468a3f82798744f2035488218;p=controller.git diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ReconnectingClientConnection.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ReconnectingClientConnection.java index 0209f95bce..e63e7253bc 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ReconnectingClientConnection.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ReconnectingClientConnection.java @@ -7,6 +7,9 @@ */ package org.opendaylight.controller.cluster.access.client; +import static java.util.Objects.requireNonNull; + +import org.opendaylight.controller.cluster.access.concepts.RequestException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,19 +23,36 @@ import org.slf4j.LoggerFactory; public final class ReconnectingClientConnection extends AbstractReceivingClientConnection { private static final Logger LOG = LoggerFactory.getLogger(ReconnectingClientConnection.class); - ReconnectingClientConnection(final ConnectedClientConnection oldConnection) { + private RequestException cause; + + ReconnectingClientConnection(final ConnectedClientConnection oldConnection, final RequestException cause) { super(oldConnection); + this.cause = requireNonNull(cause); } @Override - void sendMessages(final int count) { - LOG.debug("Connection {} is reconnecting, not transmitting anything", this); + long backendSilentTicks(final long now) { + // We do not want to reconnect this connection, as we need the timer to to keep running + return 0; } @Override - ClientActorBehavior reconnectConnection(final ClientActorBehavior current) { - // Intentional no-op - LOG.debug("Skipping reconnect of already-reconnecting connection {}", this); + @SuppressWarnings("checkstyle:hiddenField") + ClientActorBehavior lockedReconnect(final ClientActorBehavior current, final RequestException cause) { + this.cause = requireNonNull(cause); + LOG.warn("Skipping reconnect of already-reconnecting connection {}", this); return current; } + + @Override + RequestException enrichPoison(final RequestException ex) { + if (ex.getCause() != null) { + ex.addSuppressed(cause); + } else { + ex.initCause(cause); + } + + return ex; + } + }