You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Ivan Zlenko (Jira)" <ji...@apache.org> on 2025/11/10 11:46:00 UTC
[jira] [Updated] (IGNITE-20911) Transaction retry works incorrectly
[ https://issues.apache.org/jira/browse/IGNITE-20911?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ivan Zlenko updated IGNITE-20911:
---------------------------------
Labels: MakeTeamcityGreenAgain ignite-3 (was: ignite-3)
> Transaction retry works incorrectly
> -----------------------------------
>
> Key: IGNITE-20911
> URL: https://issues.apache.org/jira/browse/IGNITE-20911
> Project: Ignite
> Issue Type: Bug
> Reporter: Aleksandr Polovtsev
> Assignee: Alexander Lapin
> Priority: Critical
> Labels: MakeTeamcityGreenAgain, ignite-3
>
> Test added in IGNITE-20910 fails with a {{PrimaryReplicaMissException}}. This happens, because after a node has been restarted, its Leases start to expire (which is a separate bug, by the way), which leads to the following chain of events:
> # When a Tuple gets inserted, it ends up in the {{InternalTableImpl#enlistWithRetry}} method;
> # Since the Primary Replica Lease has expired, {{InternalTableImpl#trackingInvoke}} will fail with a {{PrimaryReplicaMissException}}, which means that we should re-enlist the transaction again;
> # When calling {{InternalTableImpl#enlist}} we acquire the new Lease by calling {{placementDriver.awaitPrimaryReplica}};
> # This information is then passed to {{ReadWriteTransactionImpl#enlist}}, which, however, effectively ignores this new information, because it calls {{enlisted.computeIfAbsent(tablePartitionId, k -> nodeAndTerm)}}, which means that if there has been a previously enlisted transaction (and there was, since we are in the process of re-enlisting a transaction), then this new Lease information will be ignored and the previous (outdated) information will be used instead, thus making this re-trying mechanism completely useless.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)