[ 
https://issues.apache.org/jira/browse/IGNITE-21116?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Roman Puchkovskiy updated IGNITE-21116:
---------------------------------------
    Description: 
Let's say a transaction tx1 had started before an index I1 has appeared. Then 
I1 switches to the BACKFILLING state, and only then the transaction tries to 
finish. This happens after IGNITE-21115 ensuring that all transactions started 
before I1 appearance by live coordinators have finished, so I1 belongs to a 
dead/unknown coordinator.

We cannot just commit/abort it as it will cause a race between cleaning up the 
Write Intents of tx1 and the Backfiller already working on I1. So we should 
actually leave the transaction state unchanged and don't return any response, 
so we effectively turn the transaction into an ABANDONED one. Its state will be 
resolved by the Backfiller as soon as it hits first Write Intent of this 
transaction and performs Write Intent resolution.

  was:
Let's say a transaction tx1 had started before an index I1 has appeared. Then 
I1 switches to the BACKFILLING state, and only then the transaction tries to 
finish. This happens after IGNITE-21115 ensuring that all transactions started 
before I1 appearance by live coordinators have finished, so I1 belongs to a 
dead/unknown coordinator.

We cannot just commit/abort it as it will cause a race between cleaning up the 
Write Intents of tx1 and the Backfiller already working on I1. So we should 
actually leave the transaction state unchanged and return an error (the error 
is most likely already dead, but it might be an unknown coordinator), so we 
effectively turn the transaction into an ABANDONED one. Its state will be 
resolved by the Backfiller as soon as it hits first Write Intent of this 
transaction and performs Write Intent resolution.


> After index backfill has started, ignore attempts to finish a tx started 
> before the index had appeared
> ------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-21116
>                 URL: https://issues.apache.org/jira/browse/IGNITE-21116
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Roman Puchkovskiy
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-beta2
>
>
> Let's say a transaction tx1 had started before an index I1 has appeared. Then 
> I1 switches to the BACKFILLING state, and only then the transaction tries to 
> finish. This happens after IGNITE-21115 ensuring that all transactions 
> started before I1 appearance by live coordinators have finished, so I1 
> belongs to a dead/unknown coordinator.
> We cannot just commit/abort it as it will cause a race between cleaning up 
> the Write Intents of tx1 and the Backfiller already working on I1. So we 
> should actually leave the transaction state unchanged and don't return any 
> response, so we effectively turn the transaction into an ABANDONED one. Its 
> state will be resolved by the Backfiller as soon as it hits first Write 
> Intent of this transaction and performs Write Intent resolution.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to