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

Sergey Uttsel updated IGNITE-19763:
-----------------------------------
    Description: 
h3. *Motivation*

After https://issues.apache.org/jira/browse/IGNITE-19466 will be implemented It 
will be possible to create a table without data nodes in the distribution zone. 
Then we will face another issue.

Current flow of changing pending assignments:
 # When the zone is updated and has a data nodes then the rebalance will start 
on new data nodes.
 # The method handleChangePendingAssignmentEvent receives an empty 
stableAssignments and not empty pendingAssignments.
 # handleChangePendingAssignmentEvent invokes startRaftGroupNode to start raft 
group node with stable assignment and then invokes changePeersAsync with 
pendingAssignments. Then it start Replica, PartitionReplicaListener.
 # After that starts change peers on new assignment.

It doesn't work properly because if previous stableAssignments is empty then it 
is not possible to start raft group. And if raft group is not started then it 
is not possible to change peers. So if stableAssignments is empty then need to 
skip starting raft group with this assignments and start new raft group with 
pendingAssignments.
h3. *Definition of Done*
 # Started table without data nodes in the zone must work after data nodes are 
appeared.
 # Need to properly starts all component of the table.

  was:
h3. *Motivation*

After https://issues.apache.org/jira/browse/IGNITE-19466 will be implemented It 
will be possible to create a table without data nodes in the distribution zone. 
Then we will face another issue.

Current flow of changing pending assignments:
 # When the zone is updated and has a data nodes then the rebalance will start 
on new data nodes.
 # The method handleChangePendingAssignmentEvent receives an empty 
stableAssignments and not empty pendingAssignments.
 # handleChangePendingAssignmentEvent invokes startRaftGroupNode to start raft 
group node with stable assignment and then invokes changePeersAsync with 
pendingAssignments. Then it start Replica, PartitionReplicaListener.
 # After that starts change peers on new assignment.

It doesn't work properly because if previous stableAssignments is empty then it 
is not possible to start raft group. And if raft group is not started then it 
is not possible to change peers. So if stableAssignments is empty then need to 
skip starting raft group with this assignments and start new raft group with 
pendingAssignments.
h3. *Definition of Done*

Started table without data nodes in the zone must work after data nodes are 
appeared.

Need to properly starts all component of the table.


> Changing empty stable assignments to not empty pending assignments.
> -------------------------------------------------------------------
>
>                 Key: IGNITE-19763
>                 URL: https://issues.apache.org/jira/browse/IGNITE-19763
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Sergey Uttsel
>            Priority: Major
>              Labels: ignite-3, tech-debt
>
> h3. *Motivation*
> After https://issues.apache.org/jira/browse/IGNITE-19466 will be implemented 
> It will be possible to create a table without data nodes in the distribution 
> zone. Then we will face another issue.
> Current flow of changing pending assignments:
>  # When the zone is updated and has a data nodes then the rebalance will 
> start on new data nodes.
>  # The method handleChangePendingAssignmentEvent receives an empty 
> stableAssignments and not empty pendingAssignments.
>  # handleChangePendingAssignmentEvent invokes startRaftGroupNode to start 
> raft group node with stable assignment and then invokes changePeersAsync with 
> pendingAssignments. Then it start Replica, PartitionReplicaListener.
>  # After that starts change peers on new assignment.
> It doesn't work properly because if previous stableAssignments is empty then 
> it is not possible to start raft group. And if raft group is not started then 
> it is not possible to change peers. So if stableAssignments is empty then 
> need to skip starting raft group with this assignments and start new raft 
> group with pendingAssignments.
> h3. *Definition of Done*
>  # Started table without data nodes in the zone must work after data nodes 
> are appeared.
>  # Need to properly starts all component of the table.



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

Reply via email to