[ 
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)

Reply via email to