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

Denis Chudov updated IGNITE-21325:
----------------------------------
    Epic Link: IGNITE-21174

> Hold the transactional requests processing while the primary expired event 
> processing is in progress
> ----------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-21325
>                 URL: https://issues.apache.org/jira/browse/IGNITE-21325
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Denis Chudov
>            Priority: Major
>              Labels: ignite-3
>
> Motivation
> No processing of any transactional request should be started when the event 
> processing of PRIMARY_REPLICA_EXPIRED event is in progress. The reason is 
> that such requests may try to acquire transactional locks on the current 
> primary replica, and the locks acquired during the previous lease are 
> released by the listener of PRIMARY_REPLICA_EXPIRED event. The validity of 
> the current primary is checked in 
> {{{}PartitionReplicaListener#ensureReplicaIsPrimary{}}}.
> We must ensure that this method is called after the processing of 
> PRIMARY_REPLICA_EXPIRED event. The future returned by 
> {{PlacementDriver#previousPrimaryExpired}} can be used for this.
> Definition of done
> The processing of transactional requests for the current primary replica 
> can't be started before the processing of PRIMARY_REPLICA_EXPIRED event 
> finishes.



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

Reply via email to