This is an automated email from the ASF dual-hosted git repository.

jxue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/helix.git


The following commit(s) were added to refs/heads/master by this push:
     new 057a4a8ee Fix partition assignment npe (#2903)
057a4a8ee is described below

commit 057a4a8eec472155cf41f5460694abbfe7c98cb5
Author: Grant Paláu Spencer <gspen...@linkedin.com>
AuthorDate: Thu Sep 5 23:26:07 2024 -0700

    Fix partition assignment npe (#2903)
    
    I will merge this change first for 1.4.1 release. But please think of the 
impact of this error.
---
 .../controller/dataproviders/BaseControllerDataProvider.java     | 4 ++++
 helix-core/src/main/java/org/apache/helix/util/HelixUtil.java    | 9 ++++++---
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git 
a/helix-core/src/main/java/org/apache/helix/controller/dataproviders/BaseControllerDataProvider.java
 
b/helix-core/src/main/java/org/apache/helix/controller/dataproviders/BaseControllerDataProvider.java
index 885e789f6..997f0f8aa 100644
--- 
a/helix-core/src/main/java/org/apache/helix/controller/dataproviders/BaseControllerDataProvider.java
+++ 
b/helix-core/src/main/java/org/apache/helix/controller/dataproviders/BaseControllerDataProvider.java
@@ -950,6 +950,10 @@ public class BaseControllerDataProvider implements 
ControlContextProvider {
     return _stateModelDefinitionCache.getPropertyMap();
   }
 
+  public void setStateModelDefMap(Map<String, StateModelDefinition> 
stateModelDefMap) {
+    _stateModelDefinitionCache.setPropertyMap(stateModelDefMap);
+  }
+
   /**
    * Provides the idealstate for a given resource
    * @param resourceName
diff --git a/helix-core/src/main/java/org/apache/helix/util/HelixUtil.java 
b/helix-core/src/main/java/org/apache/helix/util/HelixUtil.java
index 70269a746..6a7716732 100644
--- a/helix-core/src/main/java/org/apache/helix/util/HelixUtil.java
+++ b/helix-core/src/main/java/org/apache/helix/util/HelixUtil.java
@@ -382,13 +382,16 @@ public final class HelixUtil {
       allNodes.add(instanceConfig.getInstanceName());
       instanceConfigMap.put(instanceConfig.getInstanceName(), instanceConfig);
     }
-    ResourceControllerDataProvider cache = new 
ResourceControllerDataProvider();
-    cache.setClusterConfig(clusterConfig);
-    cache.setInstanceConfigMap(instanceConfigMap);
 
+    // TODO: Consider full cache refresh to prevent needing to manually set 
necessary fields
     StateModelDefinition stateModelDefinition =
         BuiltInStateModelDefinitions.valueOf(idealState.getStateModelDefRef())
             .getStateModelDefinition();
+    ResourceControllerDataProvider cache = new 
ResourceControllerDataProvider(clusterConfig.getClusterName());
+    cache.setClusterConfig(clusterConfig);
+    cache.setInstanceConfigMap(instanceConfigMap);
+    cache.setIdealStates(Collections.singletonList(idealState));
+    
cache.setStateModelDefMap(Collections.singletonMap(stateModelDefinition.getId(),
 stateModelDefinition));
 
     RebalanceStrategy strategy =
         RebalanceStrategy.class.cast(loadClass(HelixUtil.class, 
strategyClassName).newInstance());

Reply via email to