cruise-control
cruise-control copied to clipboard
Cruise-control falsely report OVER_PROVISIONED when the cluster is right_sized
There are multiple goals in cruise-control that could provide OVER_PROVISIONED as the ProvisionStatus. After all goals are optimized, there will be an aggregated ProvisionStatus.
It is expected that the aggregated ProvisionStatus is OVER_PROVISIONED if and only if ALL relative goals provide OVER_PROVISIONED status.
Today there is a bug in cruise-control that violates the above rule. For example:
For ReplicaDistributionGoal, even if this goal decides the cluster is NOT OVER_PROVISIONED, the final aggregated provision response could still be OVER_PROVISIONED. This happens when ReplicaDistributionGoal fails and returns an UNDECIDED provision status.
As a fix, we should make sure that all the goals that can possibly returns OVER_PROVISIONED, will never returns UNDECIDED as provision status. These goals include:
- BrokerSetAwareGoal
- RackAwareDistributionGoal
- RackAwareGoal
- ReplicaDistributionGoal
- ResourceDistributionGoal