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

Alexander Lapin updated IGNITE-20826:
-------------------------------------
    Description: 
h3. Motivation

In order to guarantee that there's no safe time reordering within the very 
first command after node restart, it's required either to restore the last 
observable ordered safe time on restart or guarantee that it'll be ordered 
because of some external invariants.
h3. Definition of Done

It is possible to check whether safeTime proposed after partition listener 
restart is ordered with previously observed value.
h3. Implementation notes

One of the options is to guarantee that any proposed safe time is less than 
primaryReplica.expirationTime. Along with selection of a new primary on restart 
(with newPrimary.startTime > oldPrimaryStartTime) it'll be enough to force the 
invariant specified in DoD. However, it's not trivial to handle 
proposedSafeTime out of bounds condition.

Another option is to retrieve safe time from either raft log or snapshot.

 

And last but not least - it's also required to restore last observable ordered 
timestamp on partition listener re-creation in case of rebalance.
h3. Upd#1

It's required to initialize `maxObservableSafeTime` not only within node start 
but with leader election, actually only within leader election.

 

  was:
h3. Motivation

In order to guarantee that there's no safe time reordering within the very 
first command after node restart, it's required either to restore the last 
observable ordered safe time on restart or guarantee that it'll be ordered 
because of some external invariants.
h3. Definition of Done

It is possible to check whether safeTime proposed after partition listener 
restart is ordered with previously observed value.
h3. Implementation notes

One of the options is to guarantee that any proposed safe time is less than 
primaryReplica.expirationTime. Along with selection of a new primary on restart 
(with newPrimary.startTime > oldPrimaryStartTime) it'll be enough to force the 
invariant specified in DoD. However, it's not trivial to handle 
proposedSafeTime out of bounds condition.

Another option is to retrieve safe time from either raft log or snapshot.

 

And last but not least - it's also required to restore last observable ordered 
timestamp on partition listener re-creation in case of rebalance.

 

 

 


> Restore last observable ordered timestamp on restart
> ----------------------------------------------------
>
>                 Key: IGNITE-20826
>                 URL: https://issues.apache.org/jira/browse/IGNITE-20826
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Alexander Lapin
>            Priority: Major
>              Labels: ignite-3
>
> h3. Motivation
> In order to guarantee that there's no safe time reordering within the very 
> first command after node restart, it's required either to restore the last 
> observable ordered safe time on restart or guarantee that it'll be ordered 
> because of some external invariants.
> h3. Definition of Done
> It is possible to check whether safeTime proposed after partition listener 
> restart is ordered with previously observed value.
> h3. Implementation notes
> One of the options is to guarantee that any proposed safe time is less than 
> primaryReplica.expirationTime. Along with selection of a new primary on 
> restart (with newPrimary.startTime > oldPrimaryStartTime) it'll be enough to 
> force the invariant specified in DoD. However, it's not trivial to handle 
> proposedSafeTime out of bounds condition.
> Another option is to retrieve safe time from either raft log or snapshot.
>  
> And last but not least - it's also required to restore last observable 
> ordered timestamp on partition listener re-creation in case of rebalance.
> h3. Upd#1
> It's required to initialize `maxObservableSafeTime` not only within node 
> start but with leader election, actually only within leader election.
>  



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

Reply via email to