Kirill Gusakov created IGNITE-16012:
---------------------------------------

             Summary: Raft changePeers behavior must be updated to support 
rebalance needs
                 Key: IGNITE-16012
                 URL: https://issues.apache.org/jira/browse/IGNITE-16012
             Project: Ignite
          Issue Type: Task
            Reporter: Kirill Gusakov


We need to change 
org.apache.ignite.raft.jraft.rpc.impl.RaftGroupServiceImpl#changePeers to 
support the following scenarios:

- changePeers needs to support updating of in-progress changePeers:
{code:java}
if (leaderNode.cfgCtx.stage == STAGE_CATCHING_UP) {
  <update the list of catching up peers>
  return OK;
} else if (leaderNode.cfgCtx.stage == STAGE_NONE) {
  if (leaderNode.currentPeers == newPeers) {
    rebalanceListener.onRebalanceCommited();
    return OK;
  } else {
    <start new changePeers>
    return OK;
  }
} else {
  return BUSY; // it should be a signal to postpone new changePeers call
}{code}
- changePeers must be an asynchronous  operation and returns as soon as 
possible (after successful updating catching up nodes, if needed)

 

(Phase 1)



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to