You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Kirill Gusakov (Jira)" <ji...@apache.org> on 2024/10/29 12:26:00 UTC

[jira] [Commented] (IGNITE-23328) Check if current resetPartitions mechanism ready for reuse in the HA mode

    [ 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)