Fix issues with LeastLoadedCandidateSelectionStrategy
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / entityownership / selectionstrategy / EntityOwnerSelectionStrategyConfig.java
index c1ddab3c7d67aa351a38654351a93a34673e6d27..5a785fcc00b5610f42e6730f8334fddb0a0edf07 100644 (file)
@@ -30,7 +30,7 @@ public final class EntityOwnerSelectionStrategyConfig {
         return entityTypeToStrategyInfo.get(entityType) != null;
     }
 
-    public EntityOwnerSelectionStrategy createStrategy(final String entityType) {
+    public EntityOwnerSelectionStrategy createStrategy(String entityType, Map<String, Long> initialStatistics){
         final EntityOwnerSelectionStrategy strategy;
         final EntityOwnerSelectionStrategy existingStrategy = entityTypeToOwnerSelectionStrategy.get(entityType);
         if(existingStrategy != null){
@@ -40,7 +40,7 @@ public final class EntityOwnerSelectionStrategyConfig {
             if(strategyInfo == null){
                 strategy = FirstCandidateSelectionStrategy.INSTANCE;
             } else {
-                strategy = strategyInfo.createStrategy();
+                strategy = strategyInfo.createStrategy(initialStatistics);
             }
             entityTypeToOwnerSelectionStrategy.put(entityType, strategy);
         }
@@ -58,6 +58,10 @@ public final class EntityOwnerSelectionStrategyConfig {
      * using it.
      */
     @Deprecated
+    public void clearStrategies() {
+        entityTypeToOwnerSelectionStrategy.clear();
+    }
+
     private static final class StrategyInfo {
         private final Class<? extends EntityOwnerSelectionStrategy> strategyClass;
         private final long delay;
@@ -67,9 +71,9 @@ public final class EntityOwnerSelectionStrategyConfig {
             this.delay = delay;
         }
 
-        public EntityOwnerSelectionStrategy createStrategy({
+        public EntityOwnerSelectionStrategy createStrategy(Map<String, Long> initialStatistics){
             try {
-                return strategyClass.getDeclaredConstructor(long.class).newInstance(delay);
+                return strategyClass.getDeclaredConstructor(long.class, Map.class).newInstance(delay, initialStatistics);
             } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
                 LOG.warn("could not create custom strategy", e);
             }