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

Mirza Aliev updated IGNITE-23870:
---------------------------------
    Description: 
h3. Motivation

For the purposes of phase 2 of 
[IEP-131|https://cwiki.apache.org/confluence/display/IGNITE/IEP-131%3A+Partition+Majority+Unavailability+Handling],
  

we need to have an ability to receive chain of assignments for the provided 
part id, starting form the most recent and until the first stable that was set 
gracefully. This is needed when node restarts and tried to understand if raft 
node for the provided part id must be started no the node or not

h3. Implementation notes
We introduce new filed in the MS for the partition, let's say 
{{assignmnts.chain}}

Every time we do {{doStableKeySwitch}}, we update this filed according to this 
rule

{code:java}
  on doStableKeySwitch
    if !pending.force && !secondPhaseOfReset
      ms.chain = pending/stable
    else if !pending.force && secondPhaseOfReset
      ms.chain.last = stable
    else 
      ms.chain = ms.chain + pending/stable

{code}
 
For the case of two phase reset, when we do switch from single node to several 
nodes on the second phase, we could rewrite the last element of a chain that is 
presented as the single node to a new stable that contains this node and other 
nodes.

Also chain must be initialised when stable is initialised.
 

h3. Definition of done
* It must be possible to receive assignments chain for the provided part id 
based on MS
* This chain must contain all stable changes from the most recent until the 
first stable that was set gracefully 

  was:
h3. Motivation

For the purposes of phase 2 of 
[IEP-131|https://cwiki.apache.org/confluence/display/IGNITE/IEP-131%3A+Partition+Majority+Unavailability+Handling],
  

we need to have an ability to receive chain of assignments for the provided 
part id, starting form the most recent and until the first stable that was set 
gracefully. This is needed when node restarts and tried to understand if raft 
node for the provided part id must be started no the node or not

h3. Implementation notes
We introduce new filed in the MS for the partition, let's say 
{{assignmnts.chain}}

Every time we do {{doStableKeySwitch}}, we update this filed according to this 
rule

{code:java}
  on doStableKeySwitch
    if stable is graceful
      ms.chain = stable
    else
      ms.chain = ms.chain + stable
{code}
 
For the case of two phase reset, when we do switch from single node to several 
nodes on the second phase, we could rewrite the last element of a chain that is 
presented as the single node to a new stable that contains this node and other 
nodes.

Also chain must be initialised when stable is initialised.
 

h3. Definition of done
* It must be possible to receive assignments chain for the provided part id 
based on MS
* This chain must contain all stable changes from the most recent until the 
first stable that was set gracefully 


> Implement a method to receive a chain of topology changes
> ---------------------------------------------------------
>
>                 Key: IGNITE-23870
>                 URL: https://issues.apache.org/jira/browse/IGNITE-23870
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Mirza Aliev
>            Priority: Major
>              Labels: ignite-3
>
> h3. Motivation
> For the purposes of phase 2 of 
> [IEP-131|https://cwiki.apache.org/confluence/display/IGNITE/IEP-131%3A+Partition+Majority+Unavailability+Handling],
>   
> we need to have an ability to receive chain of assignments for the provided 
> part id, starting form the most recent and until the first stable that was 
> set gracefully. This is needed when node restarts and tried to understand if 
> raft node for the provided part id must be started no the node or not
> h3. Implementation notes
> We introduce new filed in the MS for the partition, let's say 
> {{assignmnts.chain}}
> Every time we do {{doStableKeySwitch}}, we update this filed according to 
> this rule
> {code:java}
>   on doStableKeySwitch
>     if !pending.force && !secondPhaseOfReset
>       ms.chain = pending/stable
>     else if !pending.force && secondPhaseOfReset
>       ms.chain.last = stable
>     else 
>       ms.chain = ms.chain + pending/stable
> {code}
>  
> For the case of two phase reset, when we do switch from single node to 
> several nodes on the second phase, we could rewrite the last element of a 
> chain that is presented as the single node to a new stable that contains this 
> node and other nodes.
> Also chain must be initialised when stable is initialised.
>  
> h3. Definition of done
> * It must be possible to receive assignments chain for the provided part id 
> based on MS
> * This chain must contain all stable changes from the most recent until the 
> first stable that was set gracefully 



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

Reply via email to