Make Batching size and interval as configurable parameters 55/82955/5
authorR P Karthika <r.p.karthika@ericsson.com>
Mon, 8 Jul 2019 12:56:51 +0000 (18:26 +0530)
committerR P Karthika <r.p.karthika@ericsson.com>
Fri, 26 Jul 2019 06:31:34 +0000 (12:01 +0530)
in ITM

Define batch size and interval in itm-config.yang and use that instead
of using it from system.properties(),so it can be configured if needed.

Change-Id: I6f292bad3323fd4b5cd1d1be6cb6e575e41c3c1a
Signed-off-by: R P Karthika <r.p.karthika@ericsson.com>
itm/itm-api/src/main/java/org/opendaylight/genius/itm/globals/ITMConstants.java
itm/itm-api/src/main/yang/itm-config.yang
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ITMBatchingUtils.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmProvider.java
itm/itm-impl/src/main/resources/initial/genius-itm-config.xml

index 7797104bef042d6e6e3ceeaba298f2381ad0977e..8ce11d84911e5c5e3674cfb787a868e63cecde92 100644 (file)
@@ -26,6 +26,9 @@ public interface ITMConstants {
     int REG6_END_INDEX = 31;
     int JOB_MAX_RETRIES = 6;
 
+    int BATCH_SIZE = 1000;
+    int PERIODICITY = 500;
+
     int LLDP_SERVICE_ID = 0;
     // Tunnel Monitoring
     boolean DEFAULT_MONITOR_ENABLED = false;
index 86250b4ff9d0fcff2a0f101ac250d8bce3bffb2b..6e9c375c2c245dc67fda22731a6d87ea4acb9fa1 100644 (file)
@@ -97,5 +97,11 @@ module itm-config {
        leaf portname {
            type string;
        }
+       leaf batch-interval {
+            type uint16;
+       }
+       leaf batch-size {
+            type uint16;
+       }
     }
 }
index 4a009a924c839c5880d1039859939806e1c2729a..dfdf0aa6bd7576df1c536989dadccefead11365c 100644 (file)
@@ -25,8 +25,6 @@ public final class ITMBatchingUtils {
 
     private static final Logger LOG = LoggerFactory.getLogger(ITMBatchingUtils.class);
 
-    private static final int DEF_BATCH_SIZE = 1000;
-    private static final int DEF_PERIODICITY = 500;
 
     private static final BlockingQueue<ActionableResource> DEFAULT_OPERATIONAL_SHARD_BUFFER_Q
             = new LinkedBlockingQueue<>();
@@ -53,10 +51,8 @@ public final class ITMBatchingUtils {
         dataBroker = broker;
     }
 
-    public static void registerWithBatchManager(DataBroker broker) {
+    public static void registerWithBatchManager(DataBroker broker,Integer batchSize,Integer batchInterval) {
         ITMBatchingUtils.setBroker(broker);
-        Integer batchSize = Integer.getInteger("batch.size", DEF_BATCH_SIZE);
-        Integer batchInterval = Integer.getInteger("batch.wait.time", DEF_PERIODICITY);
         ResourceBatchingManager resBatchingManager = ResourceBatchingManager.getInstance();
         resBatchingManager.registerBatchableResource("ITM-DEFAULT-OPERATIONAL", DEFAULT_OPERATIONAL_SHARD_BUFFER_Q,
                                                      new DefaultBatchHandler(broker, LogicalDatastoreType.OPERATIONAL,
index 5b7b02f74438508823733fde7ee684b840dbfe3f..68a3558b3eac30bc0f3135bfe1c654a868c5c613 100644 (file)
@@ -93,6 +93,9 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi
     private final ItmConfig itmConfig;
     private final JobCoordinator jobCoordinator;
     private final ItmProvider.ItmProviderEOSListener itmProviderEOSListener;
+    public  Integer batchSize;
+    public  Integer batchInterval;
+
 
     @Inject
     public ItmProvider(DataBroker dataBroker,
@@ -128,7 +131,6 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi
         this.dpnTepStateCache = dpnTepStateCache;
         this.itmStatusProvider = itmDiagStatusProvider;
         this.tunnelStateCache = tunnelStateCache;
-        ITMBatchingUtils.registerWithBatchManager(this.dataBroker);
 
         this.itmConfig = itmConfig;
         this.jobCoordinator = jobCoordinator;
@@ -141,6 +143,7 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi
         try {
             createIdPool();
             registerEntityForOwnership();
+            initialiseBatchingManager();
             LOG.info("ItmProvider Started");
         } catch (Exception ex) {
             itmStatusProvider.reportStatus(ex);
@@ -149,6 +152,19 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi
         }
     }
 
+    public void initialiseBatchingManager() {
+        batchSize = ITMConstants.BATCH_SIZE;
+        LOG.info("entered initialse");
+        if (itmConfig.getBatchSize() != null) {
+            batchSize = itmConfig.getBatchSize();
+        }
+        batchInterval = ITMConstants.PERIODICITY;
+        if (itmConfig.getBatchInterval() != null) {
+            batchInterval = itmConfig.getBatchInterval();
+        }
+        ITMBatchingUtils.registerWithBatchManager(this.dataBroker,this.batchSize,this.batchInterval);
+    }
+
     public void createDefaultTransportZone(ItmConfig itmConfigObj) {
         jobCoordinator.enqueueJob(ITMConstants.DEFAULT_TRANSPORT_ZONE, () -> {
             boolean defTzEnabled = itmConfigObj.isDefTzEnabled();
index 5162694af2c666893bb81e76998c2153524a370d..dac4462bdcaa4c5fe7046ac862721312182262a3 100644 (file)
@@ -1,4 +1,6 @@
 <itm-config xmlns="urn:opendaylight:genius:itm:config">
+    <batch-interval>500</batch-interval>
+    <batch-size>1000</batch-size>
     <def-tz-enabled>true</def-tz-enabled>
     <def-tz-tunnel-type>vxlan</def-tz-tunnel-type>
     <tunnel-aggregation>