GrantPSpencer opened a new pull request, #2848: URL: https://github.com/apache/helix/pull/2848
### Issues - [ ] My PR addresses the following Helix issues and references them in the PR description: With the recent changes to InstanceOperation, Helix allows users to set their instances to DISABLE where all partitions are gracefully transited to the offline state. Likewise, customers can also disable specific partitions to transit them to offline (CRUSHED) or move them off the node (WAGED). However, because there can only be 1 active InstanceOperation on a node at a time, a user cannot DISABLE an evacuating or SWAP_IN instance without overriding that operation. There are scenarios where a user may want to ensure that the instance being operated on immediately downward state transits its partitions or does not receive any upward state transitions while it is being operated on. ### Description - [ ] Here are some details about my PR, including screenshots of any UI changes: This change adds support for the ALL_RESOURCES key in the disabled partitions map of an instance's config. This change mirrors the current behavior of disabling a specific partition on a node, but extends that to all partitions in the cluster. The main area this change effects are: WAGED placement calculation - AssignableNode and ReplicaActivateConstraint DelayedAutoRebalancer - computeBestPossiblePartitionState (responsible for forcing partitions down to offline) There will likely need to be discussion had on how to best reduce complexity of adding the "ALL_RESOURCES" key. Future code may need to explicitly check for this key depending on what methods they are leveraging. which will likely not be obvious for developers ### Tests - [ ] The following tests are written for this issue: **Basic Functionality** testDisableAllPartitions in TestDisablePartitions.java **Test Asserting Behavior Alongside Instance Operation** testEvacuateWithDisabledPartition in TestInstanceOperation.java ### Changes that Break Backward Compatibility (Optional) - My PR contains changes that break backward compatibility or previous assumptions for certain methods or API. They include: N/A ### Commits - My commits all reference appropriate Apache Helix GitHub issues in their subject lines. In addition, my commits follow the guidelines from "[How to write a good git commit message](http://chris.beams.io/posts/git-commit/)": 1. Subject is separated from body by a blank line 1. Subject is limited to 50 characters (not including Jira issue reference) 1. Subject does not end with a period 1. Subject uses the imperative mood ("add", not "adding") 1. Body wraps at 72 characters 1. Body explains "what" and "why", not "how" ### Code Quality - My diff has been formatted using helix-style.xml (helix-style-intellij.xml if IntelliJ IDE is used) -- 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. To unsubscribe, e-mail: reviews-unsubscr...@helix.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@helix.apache.org For additional commands, e-mail: reviews-h...@helix.apache.org