Bug 3197: Netconf client not reconnecting due address unresolved 14/20414/5
authorMarian Dubai <mdubai@cisco.com>
Thu, 14 May 2015 16:55:03 +0000 (18:55 +0200)
committerGerrit Code Review <gerrit@opendaylight.org>
Tue, 19 May 2015 09:55:58 +0000 (09:55 +0000)
Netconf client not reconnecting, when failed 1st time due
address unresolved. InetSocketAddress remains in state unresolved,
after connection failed first time due address unresolved.
Now recreating InetSocketAddress by each reconnect,
so address is checked by each reconnect attempt.

Change-Id: I29ef130d7bf3f65023a611cee51245a6ae6f9a03
Signed-off-by: Marian Dubai <mdubai@cisco.com>
opendaylight/commons/protocol-framework/src/main/java/org/opendaylight/protocol/framework/ProtocolSessionPromise.java

index b64c4828a4a7315524afc3370a6bca95c8711b29..494ccf8ec4cb5d305dad89d9cf54ed41ab3f3263 100644 (file)
@@ -28,7 +28,7 @@ import org.slf4j.LoggerFactory;
 final class ProtocolSessionPromise<S extends ProtocolSession<?>> extends DefaultPromise<S> {
     private static final Logger LOG = LoggerFactory.getLogger(ProtocolSessionPromise.class);
     private final ReconnectStrategy strategy;
-    private final InetSocketAddress address;
+    private InetSocketAddress address;
     private final Bootstrap b;
 
     @GuardedBy("this")
@@ -50,6 +50,9 @@ final class ProtocolSessionPromise<S extends ProtocolSession<?>> extends Default
 
             LOG.debug("Promise {} attempting connect for {}ms", lock, timeout);
 
+            if(this.address.isUnresolved()) {
+                this.address = new InetSocketAddress(this.address.getHostName(), this.address.getPort());
+            }
             this.b.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, timeout);
             final ChannelFuture connectFuture = this.b.connect(this.address);
             // Add listener that attempts reconnect by invoking this method again.