fix too many open files

Change-Id: If5b31db383631dfca907a1ee1018d51ce2f0f36e
diff --git a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfControllerImpl.java b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfControllerImpl.java
index e0959cd..75dce05 100644
--- a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfControllerImpl.java
+++ b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfControllerImpl.java
@@ -315,10 +315,7 @@
                 l.deviceRemoved(deviceId);
             }
         } else {
-            netconfDeviceMap.remove(deviceId);
-            for (NetconfDeviceListener l : netconfDeviceListeners) {
-                l.deviceRemoved(deviceId);
-            }
+            stopDevice(deviceId, true);
         }
     }
 
diff --git a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfSessionMinaImpl.java b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfSessionMinaImpl.java
index 8a086b5..48be199 100644
--- a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfSessionMinaImpl.java
+++ b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/impl/NetconfSessionMinaImpl.java
@@ -705,6 +705,23 @@
         return false;
     }
 
+    @Override
+    public boolean close() throws NetconfException {
+        try {
+            return super.close();
+        } catch (IOException ioe) {
+            throw new NetconfException(ioe.getMessage());
+        } finally {
+            try {
+                session.close();
+                channel.close();
+                client.close();
+            } catch (IOException ioe) {
+                log.warn("Error closing session {} on {}", sessionID, deviceInfo, ioe);
+            }
+        }
+    }
+
     protected void publishEvent(NetconfDeviceOutputEvent event) {
         primaryListeners.forEach(lsnr -> {
             if (lsnr.isRelevant(event)) {