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%2FStatisticsRequestScheduler.java;h=29a27e2bb2a2cdfc85c7b49eada243bdc9f8a531;hp=bea43ef68a05c1000d7a7d904d0c36f6fccc1b4a;hb=c1362c86eb19e92e6c64d10099a45deb499c6db1;hpb=5c23f8b37b10befc3d33d20723e6bf219c37a93d diff --git a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsRequestScheduler.java b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsRequestScheduler.java index bea43ef68a..29a27e2bb2 100644 --- a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsRequestScheduler.java +++ b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsRequestScheduler.java @@ -24,7 +24,7 @@ import org.slf4j.LoggerFactory; /** * Main responsibility of the class is to check the MD-SAL data store read/write - * transaction accumulation level and send statistics request if number of pending + * transaction accumulation level and send statistics request if number of pending * read/write transactions are zero. * @author avishnoi@in.ibm.com * @@ -36,21 +36,25 @@ public class StatisticsRequestScheduler implements DataTransactionListener { private final Timer timer = new Timer("request-monitor", true); // We need ordered retrieval, and O(1) contains operation - private final Map requestQueue = + private final Map requestQueue = Collections.synchronizedMap(new LinkedHashMap()); - + private Long PendingTransactions; - + private long lastRequestTime = System.nanoTime(); - + private static final long REQUEST_MONITOR_INTERVAL = 1000; - + private final TimerTask task = new TimerTask() { @Override public void run() { - long now = System.nanoTime(); - if(now > lastRequestTime+TimeUnit.MILLISECONDS.toNanos(REQUEST_MONITOR_INTERVAL)){ - requestStatistics(); + try{ + long now = System.nanoTime(); + if(now > lastRequestTime+TimeUnit.MILLISECONDS.toNanos(REQUEST_MONITOR_INTERVAL)){ + requestStatistics(); + } + }catch (IllegalArgumentException | IllegalStateException | NullPointerException e){ + srsLogger.warn("Exception occured while sending statistics request : {}",e); } } }; @@ -58,11 +62,11 @@ public class StatisticsRequestScheduler implements DataTransactionListener { public StatisticsRequestScheduler(){ PendingTransactions = (long) 0; } - + public void addRequestToSchedulerQueue(AbstractStatsTracker statsRequest){ requestQueue.put(statsRequest, null); } - + public void removeRequestsFromSchedulerQueue(NodeRef node){ AbstractStatsTracker stats = null; synchronized(requestQueue){ @@ -97,7 +101,7 @@ public class StatisticsRequestScheduler implements DataTransactionListener { } @Override public void onStatusUpdated(DataModificationTransaction transaction, TransactionStatus status) { - + AbstractStatsTracker stats = null; synchronized(PendingTransactions){ switch(status){ @@ -119,7 +123,7 @@ public class StatisticsRequestScheduler implements DataTransactionListener { } sendStatsRequest(stats); } - + private void sendStatsRequest(AbstractStatsTracker stats){ if(stats != null){ try{