From: adetalhouet Date: Tue, 5 Jan 2016 13:40:25 +0000 (-0500) Subject: BUG-4709 Fix first keepalive execution X-Git-Tag: release/beryllium~40 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=75e0e15f088f1ef2285b6e6ac82d5f1c16cb0017;p=netconf.git BUG-4709 Fix first keepalive execution Change-Id: I6afcf70ec6b0b46cad861755e13ad33a2a692d19 Signed-off-by: Maros Marsalek Signed-off-by: adetalhouet --- diff --git a/opendaylight/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacade.java b/opendaylight/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacade.java index 3677ba41e9..569f642130 100644 --- a/opendaylight/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacade.java +++ b/opendaylight/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacade.java @@ -128,7 +128,7 @@ public final class KeepaliveSalFacade implements RemoteDeviceHandler { + private final ScheduledFuture previousKeepalive; + + public Keepalive(final ScheduledFuture previousKeepalive) { + this.previousKeepalive = previousKeepalive; + } + @Override public void run() { LOG.trace("{}: Invoking keepalive RPC", id); try { - if(!currentKeepalive.isDone()) { + if(previousKeepalive != null && !previousKeepalive.isDone()) { onFailure(new IllegalStateException("Previous keepalive timed out")); } else { Futures.addCallback(currentDeviceRpc.invokeRpc(PATH, KEEPALIVE_PAYLOAD), this); - scheduleKeepalive(); } } catch (NullPointerException e) { LOG.debug("{}: Skipping keepalive while reconnecting", id); diff --git a/opendaylight/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacadeTest.java b/opendaylight/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacadeTest.java index 1bb2f7a732..2a6ba4301f 100644 --- a/opendaylight/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacadeTest.java +++ b/opendaylight/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacadeTest.java @@ -114,7 +114,7 @@ public class KeepaliveSalFacadeTest { verify(underlyingSalFacade).onDeviceConnected( any(SchemaContext.class), any(NetconfSessionPreferences.class), any(DOMRpcService.class)); - verify(deviceRpc, timeout(15000).atLeast(5)).invokeRpc(any(SchemaPath.class), any(NormalizedNode.class)); + verify(deviceRpc, timeout(15000).times(5)).invokeRpc(any(SchemaPath.class), any(NormalizedNode.class)); } @Test