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

Denis Chudov updated IGNITE-21325:
----------------------------------
    Description: 
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.

  was:
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.


> 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