Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
Docs Required, Release Notes Required
Description
Motivation
RO transaction has timestamp which determine a moment when data will be read. To avoid waiting, safe time is supposed to provide the timestamp in the past. The timestamp is determined by the observable timestamp and current time in order to be available to retrieve all data which is locally viewed.
Implementation notes
- The observable timestamp would be provided externally.
- Read timestamp is determined as max(observableTs, now() - safeTimePropagationFrequency - maxClockSkew).
- Add a new method to start read only transaction with specific observable timestamp:
/** * Starts a readonly transaction with an observable timestamp. * * @param observableTs Observable timestamp. * @return Reade only transaction. */ public ReadOnlyTransactionImpl begin(HybridTimestamp observableTs)
Definition of done
Internal API for RO transaction in past is implemented. The read transaction timestamp should evaluate by formula: max(observableTs, now() - safeTimePropagationFrequency) and available through ReadOnlyTransactionImpl .readTimestamp()
Attachments
Issue Links
- blocks
-
IGNITE-19888 Java client: Track observable timestamp
- Resolved
-
IGNITE-19889 Implement observable timestamp on server
- Resolved
-
IGNITE-19898 SQL implicit RO transaction should used observation timestamp
- Resolved
-
IGNITE-20056 .NET: Thin 3.0: Track observable timestamp
- Resolved
-
IGNITE-20057 C++ client: Track observable timestamp
- Resolved
- links to