commit | e8d0439f6a92f4c5a1159adb6c895caef66cc0b4 | [log] [tgz] |
---|---|---|
author | tanbangcheng <tanbangcheng@baicells.com> | Sat Nov 18 18:12:47 2017 +0800 |
committer | Thomas Vachuska <tom@opennetworking.org> | Wed Apr 18 19:11:48 2018 +0000 |
tree | a3a7f5e0670cb1ca815303200217ae4e57eb6fb5 | |
parent | 3bb1f3f22b82c71f96646caf9bac93c9def2901c [diff] |
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); + } + } + }); } }