[
https://issues.apache.org/jira/browse/IGNITE-24538?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17936417#comment-17936417
]
Mirza Aliev commented on IGNITE-24538:
--------------------------------------
My ideas regarding algorithm
https://gist.github.com/alievmirza/dfa4ed8e98112ec12d29ae6ae2010177
> 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
> Assignee: Mirza Aliev
> Priority: Major
> Labels: ignite-3
>
> 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 and recovered
> 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)