netconf retry disconnect() 88/97988/1
authorOleg Mitsura <oleg.mitsura@amdocs.com>
Tue, 5 Nov 2019 20:37:15 +0000 (15:37 -0500)
committerOleg Mitsura <omitsura@gmail.com>
Tue, 5 Nov 2019 21:28:07 +0000 (21:28 +0000)
Issue-ID: CCSDK-1908

Signed-off-by: Oleg Mitsura <oleg.mitsura@amdocs.com>
Change-Id: I90ca822c042ec84fda717a152c4f699bacdd87ad

ms/blueprintsprocessor/functions/netconf-executor/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/functions/netconf/executor/core/NetconfSessionImpl.kt

index a0f6535..69b9d70 100644 (file)
@@ -66,8 +66,15 @@ class NetconfSessionImpl(private val deviceInfo: DeviceInfo, private val rpcServ
     }
 
     override fun disconnect() {
-        if (rpcService.closeSession(false).status.equals(
-                RpcStatus.FAILURE, true)) {
+        var retryNum = 3
+        while(rpcService.closeSession(false).status
+                .equals(RpcStatus.FAILURE, true) &&retryNum>0) {
+            log.error("disconnect: graceful disconnect failed, attempt $retryNum")
+            retryNum--;
+        }
+        //if we can't close the session, try to force terminate.
+        if(retryNum == 0) {
+            log.error("disconnect: trying to force-terminate the session.")
             rpcService.closeSession(true)
         }
         try {
@@ -276,6 +283,7 @@ class NetconfSessionImpl(private val deviceInfo: DeviceInfo, private val rpcServ
      */
     @Throws(IOException::class)
     private fun close() {
+        log.debug("close was called.")
         session.close()
         // Closes the socket which should interrupt the streamHandler
         channel.close()