Fix OvsdbControllerImpl memory leak. Fix dispatch NodeRemoved Event twice.

Change-Id: I3ddf48858549195e43f91fa23322d6b264349e6b
diff --git a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java
index 6056be2..e1f916f 100644
--- a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java
+++ b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java
@@ -1813,7 +1813,6 @@
     @Override
     public void disconnect() {
         channel.disconnect();
-        this.agent.removeConnectedNode(nodeId);
     }
 
     @Override
diff --git a/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbControllerImpl.java b/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbControllerImpl.java
index 0349f84..0bd3cee 100644
--- a/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbControllerImpl.java
+++ b/protocols/ovsdb/ctl/src/main/java/org/onosproject/ovsdb/controller/impl/OvsdbControllerImpl.java
@@ -199,8 +199,7 @@
      * Dispatches event to the north.
      *
      * @param clientService OvsdbClientService instance
-     * @param newRow        a new row
-     * @param oldRow        an old row
+     * @param row           a new row
      * @param eventType     type of event
      * @param dbSchema      ovsdb database schema
      */
@@ -384,11 +383,18 @@
 
         @Override
         public void removeConnectedNode(OvsdbNodeId nodeId) {
-            ovsdbClients.remove(nodeId);
-            log.debug("Node connection is removed");
-            for (OvsdbNodeListener l : ovsdbNodeListener) {
-                l.nodeRemoved(nodeId);
-            }
+            requestNotification.forEach((k, v) -> {
+                if (v.nodeId().equals(nodeId)) {
+                    requestNotification.remove(k);
+                    requestDbName.remove(k);
+
+                    ovsdbClients.remove(nodeId);
+                    log.debug("Node connection is removed");
+                    for (OvsdbNodeListener l : ovsdbNodeListener) {
+                        l.nodeRemoved(nodeId);
+                    }
+                }
+            });
         }
     }