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

Roman Puchkovskiy updated IGNITE-21112:
---------------------------------------
    Summary: Mechanism to wait for completion of transactions started on schema 
versions preceding a target schema version  (was: Mechanism to wait for finish 
of transactions started on schema versions preceding a target schema version)

> Mechanism to wait for completion of transactions started on schema versions 
> preceding a target schema version
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-21112
>                 URL: https://issues.apache.org/jira/browse/IGNITE-21112
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Roman Puchkovskiy
>            Priority: Major
>              Labels: ignite-3
>
> A. Each node should handle the following message: 
> RwTransactionsFinishedRequest; it will have targetSchemaVersion field of type 
> int (which represents a Catalog version). The response will be 
> RwTransactionsFinishedResponse containing the only field: finished (of type 
> boolean).
> B. When the node gets such a request, it should (1) first check whether the 
> target version has activated on the node. If not, (2) it should return false. 
> If it has already been activated on the node, then the node should atomically 
> query its TxManager whether it has any non-finished RW transactions that 
> started on schema versions preceding the target version (this is determined 
> by the beginTs of the transaction).
> C. To avoid a race between starting an RW transaction and checking for 
> non-finished transactions, we need to start RW transactions in the following 
> way:
>  # beginTs = HLC.now()
>  # {*}Withing doing a schema sync{*}, find the Catalog version active at 
> beginTs, assign it to TxCatalogVersion
>  # Atomically wrt checking for transactions existence on schemas before X 
> (see B.2), wrt finishing RW transactions and wrt raising the 'latest 
> activated Catalog version' (used in B.1), add the new transaction with 
> beginTs to the map of the currently active transactions (only if the 'latest 
> activated Catalog version' is not higher than TxCatalogVersion)
>  # If on item 3 it turned out that TxCatalogVersion is already lower than the 
> 'latest activated Catalog version', goto step 1



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

Reply via email to