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)

Reply via email to