[
https://issues.apache.org/jira/browse/IGNITE-29258?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dmitry Werner updated IGNITE-29258:
-----------------------------------
Fix Version/s: 2.20
> Remove always-empty version collections from remote transaction finish
> ----------------------------------------------------------------------
>
> Key: IGNITE-29258
> URL: https://issues.apache.org/jira/browse/IGNITE-29258
> Project: Ignite
> Issue Type: Improvement
> Reporter: Dmitry Werner
> Assignee: Dmitry Werner
> Priority: Major
> Fix For: 2.20
>
>
> {\{IgniteTxRemoteEx#doneRemote}} takes \{{committedVers}},
> \{{rolledbackVers}} and \{{pendingVers}}, but every caller
> (\{{IgniteTxHandler}}, \{{IgniteTxManager#finishTxOnRecovery}},
> \{{GridDistributedTxRemoteAdapter#salvageTx}}, \{{TxTask}}) passes \{{null}}
> or empty collections. \{{GridDistributedCacheEntry#doneRemote}} is also
> always called with \{{pendingVers = null}}.
> As a result, the reorder loop in \{{GridCacheMvcc#doneRemote}} never moves a
> candidate, because its condition requires \{{pending.contains(..)}}, which is
> always false. The loop still walks the remote candidates under the entry lock
> on every remote tx finish.
> Changes:
> * Reduce \{{IgniteTxRemoteEx#doneRemote}} to \{{(baseVer)}}.
> * Remove \{{pendingVers}} from \{{GridDistributedCacheEntry#doneRemote}}.
> \{{committedVers}} and \{{rolledbackVers}} stay, because the near unlock path
> (\{{GridDhtUnlockRequest}}) passes real ones to \{{orderCompleted}}.
> * Reduce \{{GridCacheMvcc#doneRemote}} to \{{(ver)}} and remove the loop.
> No message, WAL record or serializable class is affected.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)