Dmitry Werner created IGNITE-29258:
--------------------------------------
Summary: 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
{\{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)