[ 
https://issues.apache.org/jira/browse/IGNITE-18841?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kirill Gusakov updated IGNITE-18841:
------------------------------------
    Description: 
According to the new [rebalance 
design|https://github.com/apache/ignite-3/blob/main/modules/distribution-zones/tech-notes/rebalance.md]
 PrimaryReplica must handle RebalanceRequest from PlacementDriver and propogate 
to the replication group. Also, if the replication group has leader-based 
protocol, it must resend the request to a new leader, in the case of leader 
reelection.

PrimaryReplica <-> replication group communication must be implemented in a 
pluggable way, because we have plans to support different replication 
protocols. So, under this issue this communication should be designed and 
implemented for RAFT case.

*Definition of done:*
- PrimaryReplica must has mechanism to wait for all replicas, needed for 
RebalanceRequst(newPeers) (we can use AwaitReplicaRequest and send to multiple 
replicas)
- When PrimaryReplica receives RebalanceRequest(newPeers) and all replicas is 
ready - it must invoke the rebalance() (RAFT changePeers at the moment) call on 
replication group.
- When PrimaryReplica receives the message LeaderChanged from the leader of 
replication group - is must invoke rebalance() call too. So, RebalanceRequest 
supposed to be idempotent from the replication groups point of view.
- When PrimaryReplica receives RebalanceDone message - it must propogate it to 
PlacementDriver



  was:
According to the new [rebalance 
design|https://github.com/apache/ignite-3/blob/main/modules/distribution-zones/tech-notes/rebalance.md]
 PrimaryReplica must handle RebalanceRequest from PlacementDriver and propogate 
to the replication group. Also, if the replication group has leader-based 
protocol, it must resend the request to a new leader, in the case of leader 
reelection.

PrimaryReplica <-> replication group communication must be implemented in a 
pluggable way, because we have plans to support different replication 
protocols. So, under this issue this communication should be designed and 
implemented for RAFT case.

*Definition of done:*
- PrimaryReplica must has mechanism to wait for all replicas, needed for 
RebalanceRequst(newPeers) (we can use AwaitReplicaRequest and send to multiple 
replicas)
- When PrimaryReplica receives RebalanceRequest(newPeers) and all replicas is 
ready - it must invoke the rebalance() (RAFT changePeers at the moment) call on 
replication group.
- When PrimaryReplica receives the message LeaderChanged from the leader of 
replication group - is must invoke rebalance() call too. So, RebalanceRequest 
supposed to be idempotent from the replication groups point of view.




> Implement support of rebalance operation on PrimaryReplica
> ----------------------------------------------------------
>
>                 Key: IGNITE-18841
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18841
>             Project: Ignite
>          Issue Type: Task
>            Reporter: Kirill Gusakov
>            Priority: Major
>
> According to the new [rebalance 
> design|https://github.com/apache/ignite-3/blob/main/modules/distribution-zones/tech-notes/rebalance.md]
>  PrimaryReplica must handle RebalanceRequest from PlacementDriver and 
> propogate to the replication group. Also, if the replication group has 
> leader-based protocol, it must resend the request to a new leader, in the 
> case of leader reelection.
> PrimaryReplica <-> replication group communication must be implemented in a 
> pluggable way, because we have plans to support different replication 
> protocols. So, under this issue this communication should be designed and 
> implemented for RAFT case.
> *Definition of done:*
> - PrimaryReplica must has mechanism to wait for all replicas, needed for 
> RebalanceRequst(newPeers) (we can use AwaitReplicaRequest and send to 
> multiple replicas)
> - When PrimaryReplica receives RebalanceRequest(newPeers) and all replicas is 
> ready - it must invoke the rebalance() (RAFT changePeers at the moment) call 
> on replication group.
> - When PrimaryReplica receives the message LeaderChanged from the leader of 
> replication group - is must invoke rebalance() call too. So, RebalanceRequest 
> supposed to be idempotent from the replication groups point of view.
> - When PrimaryReplica receives RebalanceDone message - it must propogate it 
> to PlacementDriver



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

Reply via email to