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=dacc130831ff18332adff071d400621096e8b48b;hb=aedea3458511bdd86280de6b9e0e937a6c1dba8a;hp=86583ace0a0f540b5347accdeb3992dcb30961fd;hpb=1415e57c132459f962afcc976da3b72c28a5702b;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..dacc130831 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,8 +131,11 @@ 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)); + } } } @@ -177,16 +180,22 @@ 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); + } } } } @@ -295,18 +304,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)); + } } } }