Modification in ResourceBatchingManager.java 40/42540/1
authorSuraj Ranjan <suraj.ranjan@ericsson.com>
Tue, 26 Jul 2016 06:56:18 +0000 (12:26 +0530)
committerSuraj Ranjan <suraj.ranjan@ericsson.com>
Tue, 26 Jul 2016 06:56:18 +0000 (12:26 +0530)
This change is done to support a change in netvirt that deals with
VPN Engine concurrency fixes.

Change-Id: I6e95549e17a500726fa1ce0c9d4812bcb58056fe
Signed-off-by: Suraj Ranjan <suraj.ranjan@ericsson.com>
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/utils/batching/ResourceBatchingManager.java

index 99792dfc2a05aa33dfeb9f94205fda1a893c1d7f..cd3e543e10cabd6cca49531c45ed6bb6f1d6b818 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.genius.utils.batching;
 
+import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.CheckedFuture;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
@@ -48,11 +49,15 @@ public class ResourceBatchingManager implements AutoCloseable {
     }
 
     public void registerBatchableResource(String resourceType, final BlockingQueue<ActionableResource> resQueue, final ResourceHandler resHandler) {
+        Preconditions.checkNotNull(resQueue, "ResourceQueue to use for batching cannot not be null.");
+        Preconditions.checkNotNull(resHandler, "ResourceHandler cannot not be null.");
         resourceHandlerMapper.put(resourceType, new ImmutablePair<BlockingQueue, ResourceHandler>(resQueue, resHandler));
         ScheduledThreadPoolExecutor resDelegatorService =(ScheduledThreadPoolExecutor) Executors.newScheduledThreadPool(1);
         resourceBatchingThreadMapper.put(resourceType, resDelegatorService);
+        LOG.info("Registered resourceType {} with batchSize {} and batchInterval {}", resourceType,
+                resHandler.getBatchSize(), resHandler.getBatchInterval());
         if (resDelegatorService.getPoolSize() == 0 )
-            resDelegatorService.scheduleAtFixedRate(new Batcher(resourceType), INITIAL_DELAY, resHandler.getBatchInterval(), TIME_UNIT);
+            resDelegatorService.scheduleWithFixedDelay(new Batcher(resourceType), INITIAL_DELAY, resHandler.getBatchInterval(), TIME_UNIT);
     }
 
     public void deregisterBatchableResource(String resourceType) {
@@ -100,7 +105,7 @@ public class ResourceBatchingManager implements AutoCloseable {
                     new MdsalDsTask<>(resourceType, resList.subList(batches * batchSize, resList.size())).process();
                 } else {
                     // process less than OR == batchsize routes
-                    LOG.info("Picked up 2 size {}", resList.size());
+                    LOG.trace("Picked up 2 size {}", resList.size());
                     new MdsalDsTask<>(resourceType, resList).process();
                 }
 
@@ -130,7 +135,7 @@ public class ResourceBatchingManager implements AutoCloseable {
             InstanceIdentifier<T> identifier;
             Object instance;
             try {
-                LOG.trace("Picked up 3 size {}", actResourceList.size());
+                LOG.trace("Picked up 3 size {} of resourceType {}", actResourceList.size(), resourceType);
                 Pair<BlockingQueue, ResourceHandler> resMapper = resourceHandlerMapper.get(resourceType);
                 if (resMapper == null) {
                     LOG.error("Unable to find resourceMapper for batching the ResourceType {}", resourceType);