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

Vladislav Pyatkov updated IGNITE-21213:
---------------------------------------
    Description: 
h3. Motivation
In the replica listener, we have unconsidered mechanisms between each other to 
determine primary rteplica. The first one is based on the placement driver API 
(it is used in PartitionReplicaListener#ensureReplicaIsPrimary) and the other 
one is based on the placement driver events (the events are hadeled by two 
methods: ReplicaManager#onPrimaryReplicaElected, 
ReplicaManager#onPrimaryReplicaExpired).

Because the replica messages and events are handled in different threads, any 
variety of processing is possible. For example, the replica can release all 
transaction locks (by

PRIMARY_REPLICA_EXPIRED event) and then handle a message for this transaction 
(because ensureReplicaIsPrimary was done before), assuming that all the locks 
are holding.

h3. Definition of done
The two mechanisms work in coordination.

  was:
h3. Motivation
In the replica listener, we have unconsidered mechanisms between each other to 
determine primary rteplica. The first one is based on the placement driver API 
(it is used in PartitionReplicaListener#ensureReplicaIsPrimary) and the other 
one is based on the placement driver events (the events are hadeled by two 
methods: ReplicaManager#onPrimaryReplicaElected, 
ReplicaManager#onPrimaryReplicaExpired).

Because the replica messages and events are handled in different threads, any 
variety of processing is possible. For example, the replica can release all 
transaction locks (by

PRIMARY_REPLICA_EXPIRED event) and then handle a message for this transaction 
(because ensureReplicaIsPrimary was done before), assuming that all the locks 
are holding.


> Coordination of mechanisms of determination for primary on replicaside
> ----------------------------------------------------------------------
>
>                 Key: IGNITE-21213
>                 URL: https://issues.apache.org/jira/browse/IGNITE-21213
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Vladislav Pyatkov
>            Priority: Major
>              Labels: ignite-3
>
> h3. Motivation
> In the replica listener, we have unconsidered mechanisms between each other 
> to determine primary rteplica. The first one is based on the placement driver 
> API (it is used in PartitionReplicaListener#ensureReplicaIsPrimary) and the 
> other one is based on the placement driver events (the events are hadeled by 
> two methods: ReplicaManager#onPrimaryReplicaElected, 
> ReplicaManager#onPrimaryReplicaExpired).
> Because the replica messages and events are handled in different threads, any 
> variety of processing is possible. For example, the replica can release all 
> transaction locks (by
> PRIMARY_REPLICA_EXPIRED event) and then handle a message for this transaction 
> (because ensureReplicaIsPrimary was done before), assuming that all the locks 
> are holding.
> h3. Definition of done
> The two mechanisms work in coordination.



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

Reply via email to