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

Kirill Gusakov updated IGNITE-18840:
------------------------------------
    Description: 
According to the new [rebalance 
design|https://github.com/apache/ignite-3/blob/main/modules/distribution-zones/tech-notes/rebalance.md]
 PlacementDriver must initiate arebalance process by sending RebalanceRequest 
message to PrimaryReplica of corresponding group. Also, when PlacementDriver 
receives RebalanceDone message it must cleanup metadata in metastore and 
schedule the new one if needed.

*Definition of done:*

Rebalance start:
 - PlacementDriver listens the changes of pending keys for all zones.
 - If any changes detected it must send RebalanceRequest(newPeers) message to 
PrimaryReplica of corresponding group to initiate the rebalance process
 - Also, on the reelection of PrimaryReplica, PlacementDriver must send the 
RebalanceRequest(newPeers), if correspondance zoneId.assignment.pending key is 
not empty

When PlacementDriver receives RebalanceDone:
 * It must update the list of group members if needed
 * Execute the following multi-invoke message to update assignments, clean 
metadata and schedule a new rebalance, if needed

{code:java}
    metastoreInvoke: \\ atomic
        zoneId.assignment.stable = newPeers
        remove(zoneId.assignment.cancel)
        if empty(zoneId.assignment.planned):
            zoneId.assignment.pending = empty
        else:
            zoneId.assignment.pending = zoneId.assignment.planned
            remove(zoneId.assignment.planned) {code}
 

  was:
According to the new [rebalance 
design|https://github.com/apache/ignite-3/blob/main/modules/distribution-zones/tech-notes/rebalance.md]
 PlacementDriver must initiate arebalance process by sending RebalanceRequest 
message to PrimaryReplica of corresponding group.

*Definition of done:*
 - PlacementDriver listens the changes of pending keys for all zones.
 - If any changes detected it must send RebalanceRequest(newPeers) message to 
PrimaryReplica of corresponding group to initiate the rebalance process
 - Also, on the reelection of PrimaryReplica, PlacementDriver must send the 
RebalanceRequest(newPeers), if correspondance zoneId.assignment.pending key is 
not empty


> PlacementDriver must initiate rebalance process and cleanup metadata, when it 
> is finished
> -----------------------------------------------------------------------------------------
>
>                 Key: IGNITE-18840
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18840
>             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]
>  PlacementDriver must initiate arebalance process by sending RebalanceRequest 
> message to PrimaryReplica of corresponding group. Also, when PlacementDriver 
> receives RebalanceDone message it must cleanup metadata in metastore and 
> schedule the new one if needed.
> *Definition of done:*
> Rebalance start:
>  - PlacementDriver listens the changes of pending keys for all zones.
>  - If any changes detected it must send RebalanceRequest(newPeers) message to 
> PrimaryReplica of corresponding group to initiate the rebalance process
>  - Also, on the reelection of PrimaryReplica, PlacementDriver must send the 
> RebalanceRequest(newPeers), if correspondance zoneId.assignment.pending key 
> is not empty
> When PlacementDriver receives RebalanceDone:
>  * It must update the list of group members if needed
>  * Execute the following multi-invoke message to update assignments, clean 
> metadata and schedule a new rebalance, if needed
> {code:java}
>     metastoreInvoke: \\ atomic
>         zoneId.assignment.stable = newPeers
>         remove(zoneId.assignment.cancel)
>         if empty(zoneId.assignment.planned):
>             zoneId.assignment.pending = empty
>         else:
>             zoneId.assignment.pending = zoneId.assignment.planned
>             remove(zoneId.assignment.planned) {code}
>  



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

Reply via email to