From c6bc227bf09c8d754f2b2e8d99d55a7f5c29633c Mon Sep 17 00:00:00 2001 From: Jason Ye Date: Mon, 22 Jul 2013 15:11:59 -0700 Subject: [PATCH] When a node is going down, remove edges in both directions associated with the node. Signed-off-by: Jason Ye --- .../openflow/internal/DiscoveryService.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DiscoveryService.java b/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DiscoveryService.java index b3cfde9c14..ee712030e9 100644 --- a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DiscoveryService.java +++ b/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/DiscoveryService.java @@ -571,7 +571,16 @@ public class DiscoveryService implements IInventoryShimExternalListener, IDataPa } for (NodeConnector nodeConnector : c) { if (node.equals(nodeConnector.getNode())) { - removeSet.add(nodeConnector); + Edge edge1 = edgeMap.get(nodeConnector); + if (edge1 != null) { + removeSet.add(nodeConnector); + + // check reverse direction + Edge edge2 = edgeMap.get(edge1.getTailNodeConnector()); + if ((edge2 != null) && node.equals(edge2.getTailNodeConnector().getNode())) { + removeSet.add(edge2.getHeadNodeConnector()); + } + } } } return removeSet; -- 2.36.6