[ 
https://issues.apache.org/jira/browse/IGNITE-23328?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17893800#comment-17893800
 ] 

Kirill Gusakov commented on IGNITE-23328:
-----------------------------------------

Actually, after some investigations under the we discovered, that we need only 
one property from resetPartitions in the scope of concurrent invocations:
 * Protection from reordering issues. So, if we call resets [A,B,C] → [A,B] → 
[A] they can’t be reordered.

*Results*
 * When the future of DisasterRecoveryManager#resetPartitions is done - we have 
a guerantee, that the ongoing request is

 ** saved to the local ongoing operation list

 ** saved to metastore

 * On the local side DisasterRecoveryManager produce the metastorage record 
about pending assignments
*So, on the local side it looks like the example chain can’t be reordered*

 * On the receivers side pending assignments will be handled in the 
pseudo-syncronous manner. It means the that metastore event future will be done 
only after the actual reset of raft configuration.
*So, on the remote side (every node which receive assignments update) we have 
no issues also.*

Some details:
 * Actually, we call resetPartitions not with the actual node list, but with 
the 

{{  public CompletableFuture<Void> resetPartitions(String zoneName, String 
tableName, Set<Integer> partitionIds) }}

And then
 * Prepare the ManualGroupUpdateRequest(UUID operationId, int catalogVersion, 
int zoneId, int tableId, Set<Integer> partitionIds)

 * Which will be handled by metastore listener. During this phase we have the 
concrete metastore revision, which will be used to receive the actual list of 
data nodes {*}at the event firing moment{*}.

 * But the same time call to topology list is not covered with the metastore 
revision, W{*}e need to update this call with revision also{*}

*As a result, it looks like with the some additions we can reuse the 
resetPartitions approach.*

> Check if current resetPartitions mechanism ready for reuse in the HA mode
> -------------------------------------------------------------------------
>
>                 Key: IGNITE-23328
>                 URL: https://issues.apache.org/jira/browse/IGNITE-23328
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Kirill Gusakov
>            Assignee: Kirill Gusakov
>            Priority: Major
>              Labels: ignite-3
>
> *Motivation*
> We have some plans to implement the rebalance cancel mechanism, when the 
> collocation track will be done IGNITE-22115. But at the same time we have 
> significant difficulties with it already now. So, we need to design the 
> lightweight cancel mechanism already now. 
> *Defition of done*
> - We can cancel rebalance at the any rebalance state. Also, it must work with 
> the lost majority
> *Implementation details*
> - IGNITE-22036 can help, because the PrimaryReplica can be the only actor, 
> which run and cancel rebalances



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to