[server] Improve rebalance stability and scalability
- Dominant language
- Java
- Stars
- 2.1k
- Forks
- 625
- Avg merge
- 3d 14h
- Merged PRs (30d)
- 97
Description
### Search before asking
- [x] I searched in the [issues](https://github.com/apache/fluss/issues) and found nothing similar.
### Description
The goal of this umbrella issue is to improve the overall stability, scalability, and optimization quality of Fluss rebalance.
A production-ready rebalance workflow should generate plans from meaningful cluster load signals, execute large plans efficiently, preserve the intended replica and leader placement, and remain recoverable across timeouts, partial failures, cancellation, and coordinator failover. The current implementation has several independent gaps across those areas, so this issue groups them under one roadmap while keeping each change separately designable and reviewable.
The tracked work covers:
- Execution scalability through configurable bucket-task concurrency.
- Plan durability for plans that exceed ZooKeeper's node-size limit.
- Execution correctness for the leader selected by a reassignment plan.
- Recoverable timeout, retry, restart, and cancellation semantics.
- Disk-load reporting and a corresponding optimization goal for better placement decisions.
### Goals
- Improve rebalance throughput without bypassing coordinator event-thread safety.
- Keep ZooKeeper metadata small and make large plans recoverable.
- Make the final leader and replica assignment match the generated plan.
- Make timeout, retry, restart, and cancellation behavior idempotent and recoverable.
- Incorporate disk utilization into the cluster model and provide an optimization goal that can balance disk load.
- Preserve a clear persisted source of truth across coordinator failover.
### Sub-tasks
- [ ] #3536
- [ ] #3868
- [ ] #3869
- [ ] #3859
- [ ] #1479
These issues are also attached through GitHub's native sub-issue relationship.
### Dependency and sequencing
The timeout recovery and event-fencing state machine in #3859 should remain independent from configurable concurrency. The concurrency work in #3536 can build on that state machine afterward. Remote-plan storage, planned-leader execution, and disk-load optimization can be designed and delivered independently.
### Non-goals
This umbrella does not require all sub-tasks to be implemented in one pull request. Each sub-task should have its own focused design, tests, and pull request.
### Willingness to contribute
- [x] I'm willing to submit PRs for these tasks.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reading the linked sub-tasks #3536, #3868, #3869, #3859, and #1479, paying attention to the stated sequencing between timeout recovery and concurrency. This umbrella is complete when each independently scoped change has its own design, tests, and pull request; it is not intended to be implemented as one contribution.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100