Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
3.0.0-beta1
-
Release Notes Required
Description
Motivation
The read timestamp for a RO transaction is supposed to be determined by a client timestamp to linearize transactions.
Implementation notes
- The request which starts RO transaction (
IGNITE-19887) has to provide a timestamp. - Requests which start SQL, also provide a specific timestamp (if they start RO internally) (
IGNITE-19898here the concrete method to retrieve timestamp will be implemented). - The current server timestamp (clock.now()) should be added to (except in the cases above) the transaction response.
- If a server response does not have the timestamp or timestamp is less than the client already has, do nothing.
- If the time is grater than the client has, the client timestamp should be updated.
- The timestamp is used to start RO transaction (
IGNITE-19887)
Definition of done
The timestamp is passed from the server-side to a client. The client just save the timestamp and send it in each request to server-side.
All client-side created RO transactions should execute in past with timestamp has been determining by client timestamp.
Attachments
Issue Links
- blocks
-
IGNITE-20056 .NET: Thin 3.0: Track observable timestamp
- Resolved
-
IGNITE-20057 C++ client: Track observable timestamp
- Resolved
- is blocked by
-
IGNITE-19886 Retrive commit timestamp [DISCUSSION NEEDED] We may use clock.now() instead of retrieving actual commit timestamp
- Resolved
-
IGNITE-19887 Transfer observable timestamp to read-only transaction
- Resolved
-
IGNITE-19898 SQL implicit RO transaction should used observation timestamp
- Resolved
- links to