Mirza Aliev created IGNITE-24538: ------------------------------------ Summary: Describe algorithm in the HA mode which solves force reset rewriting scheduled rebalance problem Key: IGNITE-24538 URL: https://issues.apache.org/jira/browse/IGNITE-24538 Project: Ignite Issue Type: Task Reporter: Mirza Aliev
h3. Motivation While we was implementing task with extending test coverage (https://issues.apache.org/jira/browse/IGNITE-24410), we have found a scenario where we lost majority, change filter and after that automatic reset try to reset majority, it turned out that force reset rewrites intent to rebalance partition that was triggered by filter change, and moreover, this intent won't be triggered again. In that case user needs to change filter again, which looks a bit odd. Detailed scenario: *Precondition* - Create an HA zone with a filter that allows nodes A, B and C. - Make sure {{partitionDistributionResetTimeout}} is high enough not to trigger before the following actions happen - Stop nodes B and C - Change zone filter to allow nodes D, E and F. These new nodes should be up and running - Change {{partitionDistributionResetTimeout}} to a smaller value or 0 to trigger automatic reset *Result* The partition remains on node A *Expected result* The partition is moved to D, E and F as per the filter The same problem could happen to scale up/scale down or other rebalance triggers, which are about to be applied, but all of sudden majority is lost and such intents will be lost. In this task we need to come up with algorithm to resolve such issues. Expected behaviour is that filter change event, or other events that changed assignments must be some how applied when majority was lost concurrently after such events. h3. Implementation notes Some ideas, that could help: when we do 2 phase reset, when we write single node with most up-to-date raft log to pending in froce manner, we also write planned with the rest alive nodes from stable. Instead of writing such planned, we could write planned in accordance with the pending that was before the moment we try to write new force pending. In our example, we could write D,E,F to planned instead of empty set. h3. Definition of Done * We have described algorithm that solves the problem of lost pending rebalances when we write force pending on majority lost -- This message was sent by Atlassian Jira (v8.20.10#820010)