X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fprotocol_plugins%2Fopenflow%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fprotocol_plugin%2Fopenflow%2Finternal%2FTopologyServiceShim.java;h=08ddbde30af11d3551447e9cb03f05a405e35887;hb=edf5bfcee83c750853253ccfd991ba7000f5f65b;hp=86583ace0a0f540b5347accdeb3992dcb30961fd;hpb=024912bcf6b5c303ee6d4e87b163ff36bb5d806e;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 86583ace0a..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 @@ -131,14 +131,17 @@ public class TopologyServiceShim implements IDiscoveryListener, if (notifyListeners) { for (String container : teuMap.keySet()) { // notify the listener - topologyServiceShimListeners.get(container) - .edgeUpdate(teuMap.get(container)); + ITopologyServiceShimListener l = topologyServiceShimListeners.get(container); + // container topology service may not have come up yet + if (l != null) { + l.edgeUpdate(teuMap.get(container)); + } } } Thread.sleep(100); } catch (InterruptedException e1) { - logger.warn("TopologyNotify interrupted {}", + logger.trace("TopologyNotify interrupted {}", e1.getMessage()); if (shuttingDown) { return; @@ -177,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) { @@ -226,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; } } } } @@ -256,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; } @@ -295,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)); + } } } } @@ -348,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,