[
https://issues.apache.org/jira/browse/IGNITE-18632?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vyacheslav Koptilin updated IGNITE-18632:
-----------------------------------------
Fix Version/s: 3.0.0-beta2
(was: 3.0.0-alpha3)
> Barrier for locks after cleanup started
> ---------------------------------------
>
> Key: IGNITE-18632
> URL: https://issues.apache.org/jira/browse/IGNITE-18632
> Project: Ignite
> Issue Type: Bug
> Reporter: Denis Chudov
> Assignee: Vladislav Pyatkov
> Priority: Major
> Labels: ignite-3
> Fix For: 3.0.0-beta2
>
> Time Spent: 50m
> Remaining Estimate: 0h
>
> *Motivation*
> Transaction locks are acquired on primary replicas and must be released on tx
> cleanup (on processing of cleanup request to primary replica). This means, no
> lock for certain transaction can be acquired after the processing of cleanup
> request has begun. However, messaging protocol doesn't provide any
> linearization guarantees, so we should have this synchronization implemented
> in replica listener. For current implementation the following is possible:
> - put request and cleanup request for the same primary replica and for the
> same transaction are reordered by messaging;
> - cleanup starts and releases locks for corresponding tx;
> - processing of put request starts and acquires locks that will never be
> released.
> *Definition of done:*
> After cleanup for certain transaction on certain primary replilca has
> started, it's impossible to acquire lock for this transaction on this primary
> replica.
> *Implementation notes:*
> There is synchronization between adding write intents to storage on primary
> replica and cleanup start (see IGNITE-18527 ). The implementation should take
> into account that cleanup can't start while write intentis being written into
> a storage, and cleanup command should not be fired before update command.
> However, this ticket is not only about update requests/commands, as read
> requests also acquire locks on primary replica, and they also need to be
> synchronized with cleanup.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)