X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fcds-access-client%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Faccess%2Fclient%2FReconnectingClientConnection.java;h=6a3ba276fbe2ac58d4df2ad0ac7b621dd8fe0122;hb=80e6514d56cd4dc6aa40997dea2b460723148341;hp=0aac7f46637fc49716ca094ce46bc42baca1a4b0;hpb=8265c26f7692086677fa943976824966f32eecf6;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 0aac7f4663..6a3ba276fb 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,8 @@ */ package org.opendaylight.controller.cluster.access.client; +import com.google.common.base.Preconditions; +import org.opendaylight.controller.cluster.access.concepts.RequestException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,14 +22,35 @@ 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 = Preconditions.checkNotNull(cause); } @Override - ClientActorBehavior lockedReconnect(final ClientActorBehavior current) { - // Intentional no-op - LOG.debug("Skipping reconnect of already-reconnecting connection {}", 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 lockedReconnect(final ClientActorBehavior current, final RequestException cause) { + this.cause = Preconditions.checkNotNull(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; + } + }