[ https://issues.apache.org/jira/browse/IGNITE-20395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kirill Sizov updated IGNITE-20395: ----------------------------------- Summary: Clean up write intents for RW transaction on primary (was: Make sure write intents are cleaned up for RW transaction on primary) > 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 > 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)