X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fstatistics-manager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fstatistics%2Fmanager%2Fimpl%2FStatisticsManagerImpl.java;h=437c92f6a09e27d1646a893c644bf688c0ad4af7;hb=65a42d265f05715437e760af145ebf9b864e13ba;hp=1d03e38c165c0a51e3a257730792389abd4d42a5;hpb=7ce44a14175815c85189845c918454a037f0db10;p=controller.git diff --git a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatisticsManagerImpl.java b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatisticsManagerImpl.java index 1d03e38c16..437c92f6a0 100644 --- a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatisticsManagerImpl.java +++ b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/impl/StatisticsManagerImpl.java @@ -29,6 +29,7 @@ import org.opendaylight.controller.md.statistics.manager.StatPermCollector; import org.opendaylight.controller.md.statistics.manager.StatPermCollector.StatCapabTypes; import org.opendaylight.controller.md.statistics.manager.StatRpcMsgManager; import org.opendaylight.controller.md.statistics.manager.StatisticsManager; +import org.opendaylight.controller.md.statistics.manager.StatisticsManager.StatDataStoreOperation.StatsManagerOperationType; import org.opendaylight.controller.sal.binding.api.NotificationProviderService; import org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.Meter; @@ -223,7 +224,18 @@ public class StatisticsManagerImpl implements StatisticsManager, Runnable { private synchronized void cleanDataStoreOperQueue() { // Drain all events, making sure any blocked threads are unblocked while (! dataStoreOperQueue.isEmpty()) { - dataStoreOperQueue.poll(); + StatDataStoreOperation op = dataStoreOperQueue.poll(); + + // Execute the node removal clean up operation if queued in the + // operational queue. + if (op.getType() == StatsManagerOperationType.NODE_REMOVAL) { + try { + LOG.debug("Node {} disconnected. Cleaning internal data.",op.getNodeId()); + op.applyOperation(null); + } catch (final Exception ex) { + LOG.warn("Unhandled exception while cleaning up internal data of node [{}]",op.getNodeId()); + } + } } }