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

Vyacheslav Koptilin updated IGNITE-19990:
-----------------------------------------
    Labels: ignite-3  (was: )

> Replication command timestamps
> ------------------------------
>
>                 Key: IGNITE-19990
>                 URL: https://issues.apache.org/jira/browse/IGNITE-19990
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Vladislav Pyatkov
>            Priority: Major
>              Labels: ignite-3
>
> *Motivation*
> Replication command send and success timestamps are supposed to be cached in 
> the primary replica. These timestamps are used to choose which method the 
> safe time propagetion is supposed.
> *Implementation notes*
> * When the node becomes a primary replica for any partition, it initiates 
> {{sendTimestamp = null}} and {{successTimestmp=0}}.
> * Store the latest timestamp of sending commands in {{sendTimestamp}}.
> * Store the latest timestamp of successfully executed commands in 
> {{successTimestmp}}.
> * The updet of both timestamps is supposed to be atomic:
> {code}
> public boolean setIfGreater(AtomicLong sentTime, long ts) {
>   return sentTime.updateAndGet(x -> x < ts ? ts : x) == ts;
> }
> {code}
> *Disinition of done*
> If a primary replica has not applied any operations, {{sendTimestamp}} is 
> {{null}}. Otherwise, in an arbitrary moment, {{sendTimestamp}} has to be 
> greater than or equivalent to {{successTimestmp}} or it is {{null}}.



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

Reply via email to