jackjlli opened a new issue #322: java.lang.IllegalStateException: null is 
thrown when resource is disabled.
URL: https://github.com/apache/helix/issues/322
 
 
   When CRUSH based rebalance strategy algorithm is used, if the related 
resource isn't enabled yet, Helix will throw `IllegalStateException`. The below 
is an example from one of the integration tests in Pinot code base:
   ```
   2019/06/22 09:05:16.929 WARN [BestPossibleStateCalcStage] 
[HelixController-async_tasks-OfflineClusterIntegrationTest] Event 
aaadf5d1_DEFAULT : Failed to calculate best possible states for 1 resources.
   2019/06/22 09:05:21.954 WARN [AutoRebalancer] 
[HelixController-pipeline-default-OfflineClusterIntegrationTest] Resource 
leadControllerResource has tag controller but no configured participants have 
this tag
   2019/06/22 09:05:21.954 ERROR [CRUSHPlacementAlgorithm] 
[HelixController-pipeline-default-OfflineClusterIntegrationTest] 1 nodes of 
type INSTANCE were requested but the tree has only 0 nodes!
   2019/06/22 09:05:21.955 ERROR [BestPossibleStateCalcStage] 
[HelixController-pipeline-default-OfflineClusterIntegrationTest] Event 
512cdf47_DEFAULT : Error computing assignment for resource 
leadControllerResource. Skipping.
   java.lang.IllegalStateException: null
        at 
org.apache.helix.controller.rebalancer.strategy.crushMapping.CRUSHPlacementAlgorithm$Selector.select(CRUSHPlacementAlgorithm.java:308)
 ~[helix-core-0.9.0.jar:0.9.0]
        at 
org.apache.helix.controller.rebalancer.strategy.crushMapping.CRUSHPlacementAlgorithm.select(CRUSHPlacementAlgorithm.java:119)
 ~[helix-core-0.9.0.jar:0.9.0]
        at 
org.apache.helix.controller.rebalancer.strategy.CrushRebalanceStrategy.doSelect(CrushRebalanceStrategy.java:174)
 ~[helix-core-0.9.0.jar:0.9.0]
        at 
org.apache.helix.controller.rebalancer.strategy.CrushRebalanceStrategy.select(CrushRebalanceStrategy.java:140)
 ~[helix-core-0.9.0.jar:0.9.0]
        at 
org.apache.helix.controller.rebalancer.strategy.CrushRebalanceStrategy.computePartitionAssignment(CrushRebalanceStrategy.java:92)
 ~[helix-core-0.9.0.jar:0.9.0]
        at 
org.apache.helix.controller.rebalancer.strategy.CrushRebalanceStrategy.computePartitionAssignment(CrushRebalanceStrategy.java:48)
 ~[helix-core-0.9.0.jar:0.9.0]
        at 
org.apache.helix.controller.rebalancer.strategy.AbstractEvenDistributionRebalanceStrategy.computePartitionAssignment(AbstractEvenDistributionRebalanceStrategy.java:89)
 ~[helix-core-0.9.0.jar:0.9.0]
        at 
org.apache.helix.controller.rebalancer.strategy.AbstractEvenDistributionRebalanceStrategy.computePartitionAssignment(AbstractEvenDistributionRebalanceStrategy.java:49)
 ~[helix-core-0.9.0.jar:0.9.0]
        at 
org.apache.helix.controller.rebalancer.AutoRebalancer.computeNewIdealState(AutoRebalancer.java:129)
 ~[helix-core-0.9.0.jar:0.9.0]
        at 
org.apache.helix.controller.rebalancer.AutoRebalancer.computeNewIdealState(AutoRebalancer.java:51)
 ~[helix-core-0.9.0.jar:0.9.0]
        at 
org.apache.helix.controller.stages.BestPossibleStateCalcStage.computeResourceBestPossibleState(BestPossibleStateCalcStage.java:245)
 ~[helix-core-0.9.0.jar:0.9.0]
        at 
org.apache.helix.controller.stages.BestPossibleStateCalcStage.compute(BestPossibleStateCalcStage.java:121)
 ~[helix-core-0.9.0.jar:0.9.0]
        at 
org.apache.helix.controller.stages.BestPossibleStateCalcStage.process(BestPossibleStateCalcStage.java:77)
 ~[helix-core-0.9.0.jar:0.9.0]
        at 
org.apache.helix.controller.pipeline.Pipeline.handle(Pipeline.java:68) 
~[helix-core-0.9.0.jar:0.9.0]
        at 
org.apache.helix.controller.GenericHelixController.handleEvent(GenericHelixController.java:640)
 ~[helix-core-0.9.0.jar:0.9.0]
        at 
org.apache.helix.controller.GenericHelixController.access$400(GenericHelixController.java:117)
 ~[helix-core-0.9.0.jar:0.9.0]
   ```
    This exception should be cleaned up and the behavior should just be the 
same as the default rebalance strategy.
   
   Related Pinot issue: https://github.com/apache/incubator-pinot/issues/4355

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to