X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fstatistics-manager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fstatistics%2Fmanager%2Fimpl%2FStatisticsManagerImpl.java;h=1d03e38c165c0a51e3a257730792389abd4d42a5;hp=247703f8acb3c60bb24df0f8ffc367867e13e1bc;hb=f8670b417a2296050152faafe4157705ad2e085d;hpb=a730bd2c013381b8268cd9146e562399c9ca0c8e 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 247703f8ac..1d03e38c16 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 @@ -35,6 +35,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.me import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.OpendaylightFlowStatisticsListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.OpendaylightFlowTableStatisticsListener; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.queues.Queue; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.OpendaylightGroupStatisticsListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group; @@ -67,14 +68,12 @@ public class StatisticsManagerImpl implements StatisticsManager, Runnable { private final static Logger LOG = LoggerFactory.getLogger(StatisticsManagerImpl.class); - private static final int QUEUE_DEPTH = 1000; - private static final int MAX_BATCH = 1; + private static final int QUEUE_DEPTH = 5000; + private static final int MAX_BATCH = 100; private final BlockingQueue dataStoreOperQueue = new LinkedBlockingDeque<>(QUEUE_DEPTH); private final DataBroker dataBroker; - private final int maxNodesForCollectors; - private long minReqNetMonitInt; private final ExecutorService statRpcMsgManagerExecutor; private final ExecutorService statDataStoreOperationServ; private StatRpcMsgManager rpcMsgManager; @@ -91,23 +90,24 @@ public class StatisticsManagerImpl implements StatisticsManager, Runnable { private StatNotifyCommiter tableNotifCommiter; private StatNotifyCommiter portNotifyCommiter; - public StatisticsManagerImpl (final DataBroker dataBroker, final int maxNodesForCollector) { + private final StatisticsManagerConfig statManagerConfig; + + public StatisticsManagerImpl (final DataBroker dataBroker, final StatisticsManagerConfig statManagerconfig) { + statManagerConfig = Preconditions.checkNotNull(statManagerconfig); this.dataBroker = Preconditions.checkNotNull(dataBroker, "DataBroker can not be null!"); ThreadFactory threadFact; threadFact = new ThreadFactoryBuilder().setNameFormat("odl-stat-rpc-oper-thread-%d").build(); statRpcMsgManagerExecutor = Executors.newSingleThreadExecutor(threadFact); threadFact = new ThreadFactoryBuilder().setNameFormat("odl-stat-ds-oper-thread-%d").build(); statDataStoreOperationServ = Executors.newSingleThreadExecutor(threadFact); - maxNodesForCollectors = maxNodesForCollector; txChain = dataBroker.createTransactionChain(this); } @Override public void start(final NotificationProviderService notifService, - final RpcConsumerRegistry rpcRegistry, final long minReqNetMonitInt) { + final RpcConsumerRegistry rpcRegistry) { Preconditions.checkArgument(rpcRegistry != null, "RpcConsumerRegistry can not be null !"); - this.minReqNetMonitInt = minReqNetMonitInt; - rpcMsgManager = new StatRpcMsgManagerImpl(this, rpcRegistry, minReqNetMonitInt); + rpcMsgManager = new StatRpcMsgManagerImpl(this, rpcRegistry, statManagerConfig.getMaxNodesForCollector()); statCollectors = Collections.emptyList(); nodeRegistrator = new StatNodeRegistrationImpl(this, dataBroker, notifService); flowListeningCommiter = new StatListenCommitFlow(this, dataBroker, notifService); @@ -124,6 +124,7 @@ public class StatisticsManagerImpl implements StatisticsManager, Runnable { @Override public void close() throws Exception { + LOG.info("StatisticsManager close called"); finishing = true; if (nodeRegistrator != null) { nodeRegistrator.close(); @@ -248,10 +249,10 @@ public class StatisticsManagerImpl implements StatisticsManager, Runnable { } @Override - public void collectNextStatistics(final InstanceIdentifier nodeIdent) { + public void collectNextStatistics(final InstanceIdentifier nodeIdent, final TransactionId xid) { for (final StatPermCollector collector : statCollectors) { if (collector.isProvidedFlowNodeActive(nodeIdent)) { - collector.collectNextStatistics(); + collector.collectNextStatistics(xid); } } } @@ -271,7 +272,8 @@ public class StatisticsManagerImpl implements StatisticsManager, Runnable { } } final StatPermCollectorImpl newCollector = new StatPermCollectorImpl(this, - minReqNetMonitInt, statCollectors.size() + 1, maxNodesForCollectors); + statManagerConfig.getMinRequestNetMonitorInterval(), statCollectors.size() + 1, + statManagerConfig.getMaxNodesForCollector()); final List statCollectorsNew = new ArrayList<>(statCollectors); newCollector.connectedNodeRegistration(nodeIdent, statTypes, nrOfSwitchTables); statCollectorsNew.add(newCollector); @@ -282,6 +284,7 @@ public class StatisticsManagerImpl implements StatisticsManager, Runnable { @Override public void disconnectedNodeUnregistration(final InstanceIdentifier nodeIdent) { flowListeningCommiter.cleanForDisconnect(nodeIdent); + for (final StatPermCollector collector : statCollectors) { if (collector.disconnectedNodeUnregistration(nodeIdent)) { if ( ! collector.hasActiveNodes()) { @@ -298,7 +301,18 @@ public class StatisticsManagerImpl implements StatisticsManager, Runnable { return; } } - LOG.debug("Node {} has not removed.", nodeIdent); + LOG.debug("Node {} has not been removed.", nodeIdent); + } + + @Override + public void registerAdditionalNodeFeature(final InstanceIdentifier nodeIdent, + final StatCapabTypes statCapab) { + for (final StatPermCollector collector : statCollectors) { + if (collector.registerAdditionalNodeFeature(nodeIdent, statCapab)) { + return; + } + } + LOG.debug("Node {} has not been extended for feature {}!", nodeIdent, statCapab); } /* Getter internal Statistic Manager Job Classes */ @@ -342,5 +356,10 @@ public class StatisticsManagerImpl implements StatisticsManager, Runnable { public StatNotifyCommiter getPortNotifyCommit() { return portNotifyCommiter; } + + @Override + public StatisticsManagerConfig getConfiguration() { + return statManagerConfig; + } }