X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fprotocol_plugins%2Fopenflow%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fprotocol_plugin%2Fopenflow%2Finternal%2FTopologyServiceShim.java;h=08ddbde30af11d3551447e9cb03f05a405e35887;hb=f330b481b7f70fb165f423cc566214d1efddade8;hp=bb5681b2dff0dbc988407885fa6b65599617617a;hpb=c7d163f8320b264bc779bf1035f4660d323e689d;p=controller.git diff --git a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TopologyServiceShim.java b/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TopologyServiceShim.java index bb5681b2df..08ddbde30a 100644 --- a/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TopologyServiceShim.java +++ b/opendaylight/protocol_plugins/openflow/src/main/java/org/opendaylight/controller/protocol_plugin/openflow/internal/TopologyServiceShim.java @@ -141,7 +141,7 @@ public class TopologyServiceShim implements IDiscoveryListener, Thread.sleep(100); } catch (InterruptedException e1) { - logger.warn("TopologyNotify interrupted {}", + logger.trace("TopologyNotify interrupted {}", e1.getMessage()); if (shuttingDown) { return; @@ -180,21 +180,27 @@ public class TopologyServiceShim implements IDiscoveryListener, for (String container : containerList) { Map>> edgePropsMap = edgeMap .get(container); - Edge edge = edgePropsMap.get(connector).getLeft(); - if (edge.getTailNodeConnector().equals(connector)) { - ITopologyServiceShimListener topologServiceShimListener = topologyServiceShimListeners - .get(container); - if (update.type == UpdateType.ADDED) { - topologServiceShimListener - .edgeOverUtilized(edge); - } else { - topologServiceShimListener - .edgeUtilBackToNormal(edge); + // the edgePropsMap for a particular container may not have + // the connector. + // so check for null + Pair> edgeProp = edgePropsMap.get(connector); + if(edgeProp != null) { + Edge edge = edgeProp.getLeft(); + if (edge.getTailNodeConnector().equals(connector)) { + ITopologyServiceShimListener topologServiceShimListener = topologyServiceShimListeners + .get(container); + if (update.type == UpdateType.ADDED) { + topologServiceShimListener + .edgeOverUtilized(edge); + } else { + topologServiceShimListener + .edgeUtilBackToNormal(edge); + } } } } } catch (InterruptedException e1) { - logger.warn( + logger.trace( "Edge Bandwidth Utilization Notify Thread interrupted {}", e1.getMessage()); if (shuttingDown) { @@ -229,10 +235,9 @@ public class TopologyServiceShim implements IDiscoveryListener, logger.debug("Bulk Notify container:{}", containerName); TopologyBulkUpdate(containerName); } catch (InterruptedException e) { - logger.warn("Topology Bulk update thread interrupted"); + logger.trace("Topology Bulk update thread interrupted"); if (shuttingDown) { - return; - } + return; } } } } @@ -259,6 +264,10 @@ public class TopologyServiceShim implements IDiscoveryListener, protected void pollTxBitRates() { Map>> globalContainerEdges = edgeMap .get(GlobalConstants.DEFAULT.toString()); + if (shuttingDown) { + logger.trace("Getting out the pollTxBitRates because bundle going down"); + return; + } if (globalContainerEdges == null) { return; } @@ -298,18 +307,18 @@ public class TopologyServiceShim implements IDiscoveryListener, // Compare bandwidth usage Long switchId = (Long) connector.getNode().getID(); Short port = (Short) connector.getID(); - float rate = statsMgr.getTransmitRate(switchId, port); - if (rate > bwThresholdFactor * bw) { - if (!connectorsOverUtilized.contains(connector)) { - connectorsOverUtilized.add(connector); - this.bwUtilNotifyQ.add(new UtilizationUpdate(connector, - UpdateType.ADDED)); - } - } else { - if (connectorsOverUtilized.contains(connector)) { - connectorsOverUtilized.remove(connector); - this.bwUtilNotifyQ.add(new UtilizationUpdate(connector, - UpdateType.REMOVED)); + if (statsMgr != null) { + float rate = statsMgr.getTransmitRate(switchId, port); + if (rate > bwThresholdFactor * bw) { + if (!connectorsOverUtilized.contains(connector)) { + connectorsOverUtilized.add(connector); + this.bwUtilNotifyQ.add(new UtilizationUpdate(connector, UpdateType.ADDED)); + } + } else { + if (connectorsOverUtilized.contains(connector)) { + connectorsOverUtilized.remove(connector); + this.bwUtilNotifyQ.add(new UtilizationUpdate(connector, UpdateType.REMOVED)); + } } } } @@ -351,6 +360,9 @@ public class TopologyServiceShim implements IDiscoveryListener, logger.trace("STOP called!"); shuttingDown = true; notifyThread.interrupt(); + bwUtilNotifyThread.interrupt(); + ofPluginTopoBulkUpdate.interrupt(); + pollTimer.cancel(); } void setTopologyServiceShimListener(Map props,