You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Alexander Lapin (Jira)" <ji...@apache.org> on 2023/09/20 13:27:00 UTC

[jira] [Assigned] (IGNITE-20395) Clean up write intents for RW transaction on primary

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

Alexander Lapin reassigned IGNITE-20395:
----------------------------------------

    Assignee:  Kirill Sizov

> Clean up write intents for RW transaction on primary
> ----------------------------------------------------
>
>                 Key: IGNITE-20395
>                 URL: https://issues.apache.org/jira/browse/IGNITE-20395
>             Project: Ignite
>          Issue Type: Task
>            Reporter:  Kirill Sizov
>            Assignee:  Kirill Sizov
>            Priority: Major
>              Labels: ignite-3
>
> If a transaction was committed/aborted, but for any reason the cleanup operation was not performed on a node, the write intent entries would still be present in the storage. 
> For example, the primary node crashed before executing the cleanup. In this case the storage will still have write intents even if the transaction is finished.
> When an RO transaction sees write intents, no matter on primary or on any other node, it performs write intent resolution and returns the correct result.
> When an RW transaction sees write intents (happens on primary only), it also performs write intent resolution. But any following change of the rows having write intents will result in a storage exception because the storage doesn't support more than one write intent per row.
> IGNITE-20041 added a way to trigger async write intent cleanup on the node that executes write intent resolution. But RW transaction does not wait the completion of the cleanup.
> *Definition of done:*
>   If an RW transaction performs write intent resolution for a row and this is a modifying action (not GET), we should synchronously cleanup the write intent before proceeding with executing UpdateCommand.
> *Implementation details*
> We can either call cleanup directly (like in {{processTxCleanupAction}} or wait for the cleanup future (the result of async cleanup execution method) to finish.



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