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());