Skip to content

Add check for customized resources in isEvacuatedFinished#3023

Open
proud-parselmouth wants to merge 4 commits intoapache:masterfrom
proud-parselmouth:anubagar/add_custom_resources_check_in_isevacuateFinished
Open

Add check for customized resources in isEvacuatedFinished#3023
proud-parselmouth wants to merge 4 commits intoapache:masterfrom
proud-parselmouth:anubagar/add_custom_resources_check_in_isevacuateFinished

Conversation

@proud-parselmouth
Copy link

Issues

  • Currently isEvacuateFinished doesn't check if there is any resource with customized rebalance mode in current state. For Pinot usecase this isEvacuateFinished is returning true even when there are resources with customized rebalance mode in current state.

(#200 - Link your issue number here: You can write "Fixes #XXX". Please use the proper keyword so that the issue gets closed automatically. See https://docs.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue
Any of the following keywords can be used: close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved)

Description

  • This change returns false if the current state contains any resource with rebalance mode full auto or customized
  • Because isEvactuateFinished also checks if the instance operations is set to evacaute, added another API in HelixAdmin isInstanceDrained to check if the instance doesn't has any resource with rebalance mode full auto or customized in the current state
  • Exposed the isInstanceDrained check via API
  • Added a logic in CustomRebalancer to not update the assigned mapping of instances marked as evacuted.

(Write a concise description including what, why, how)

Tests

  • The following tests are written for this issue:

  • TestInstanceOperation.testEvacuateWithCustomizedResource()

  • TestCustomRebalancer.testDisabledBootstrappingPartitions() have been adjusted appropriately

  • The following is the result of the "mvn test" command on the appropriate module:

mvn test -o -Dtest=TestInstanceOperation -pl=helix-core


[INFO] Tests run: 28, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 597.813 s - in org.apache.helix.integration.rebalancer.TestInstanceOperation
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 28, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] 
[INFO] --- jacoco:0.8.6:report (generate-code-coverage-report) @ helix-core ---
[INFO] Loading execution data file /Users/anubagar/workspace/helix-projects/apache-helix/helix/helix-core/target/jacoco.exec
[INFO] Analyzed bundle 'Apache Helix :: Core' with 962 classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  10:11 min
[INFO] Finished at: 2025-04-21T22:23:14+05:30
[INFO] ------------------------------------------------------------------------

(If CI test fails due to known issue, please specify the issue and test PR locally. Then copy & paste the result of "mvn test" to here.)

Changes that Break Backward Compatibility (Optional)

  • My PR contains changes that break backward compatibility or previous assumptions for certain methods or API. They include:

(Consider including all behavior changes for public methods or API. Also include these changes in merge description so that other developers are aware of these changes. This allows them to make relevant code changes in feature branches accounting for the new method/API behavior.)

Documentation (Optional)

  • In case of new functionality, my PR adds documentation in the following wiki page:

(Link the GitHub wiki you added)

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":
    1. Subject is separated from body by a blank line
    2. Subject is limited to 50 characters (not including Jira issue reference)
    3. Subject does not end with a period
    4. Subject uses the imperative mood ("add", not "adding")
    5. Body wraps at 72 characters
    6. 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)

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants