Introduce Dry-run Waged Rebalancer for the verifiers and tests. (#573)

Use a dry-run rebalancer to avoid updating the persisted rebalancer status in the verifiers or tests.
Also, refine several rebalancer related interfaces so as to simplify the dry-run rebalancer implementation.
Convert the test cases back to use the BestPossibleExternalViewVerifier.

Additional fixing:
- Updating the rebalancer preference for every rebalancer.compute calls. Since the preference might be updated at runtime.
- Fix one minor metric domain name bug in the WagedRebalancerMetricCollector.
- Minor test case fix to make them more stable after the change.
23 files changed
tree: 7b5e09d5c0fd782a329f99346e606732a92baa05
  1. helix-admin-webapp/
  2. helix-agent/
  3. helix-core/
  4. helix-front/
  5. helix-rest/
  6. recipes/
  7. scripts/
  8. website/
  9. .gitignore
  10. build
  11. bump-up.command
  12. deploySite.sh
  13. helix-style-intellij.xml
  14. helix-style.xml
  15. hpost-review.sh
  16. LICENSE
  17. NOTICE
  18. pom.xml
  19. README.md
README.md

Apache Helix

Helix is part of the Apache Software Foundation.

Project page: http://helix.apache.org/

Mailing list: http://helix.apache.org/mail-lists.html

Build

mvn clean install package -DskipTests

WHAT IS HELIX

Helix is a generic cluster management framework used for automatic management of partitioned, replicated and distributed resources hosted on a cluster of nodes. Helix provides the following features:

  1. Automatic assignment of resource/partition to nodes
  2. Node failure detection and recovery
  3. Dynamic addition of Resources
  4. Dynamic addition of nodes to the cluster
  5. Pluggable distributed state machine to manage the state of a resource via state transitions
  6. Automatic load balancing and throttling of transitions