Denis Chudov created IGNITE-27703:
-------------------------------------

             Summary: Reconsider the necessity of waiting for cluster time 
during assignments waiting
                 Key: IGNITE-27703
                 URL: https://issues.apache.org/jira/browse/IGNITE-27703
             Project: Ignite
          Issue Type: Improvement
            Reporter: Denis Chudov


Cluster time is passed to [1] and the method waits for cluster time here to 
make sure we have the most recent stable assignments locally according to 
timestamp that is provided.

Consider this:

t1: stable assignments are [A,B,C], pending are [B,C,D]
t2: transaction time
t3: rebalancing finished, stables are now [B,C,D]
t4: you are on node E, local info about stables is still [A,B,C], you don't 
wait for cluster time and you get assignments: [A,B,C], do request to A.
Node A already stopped replica, you may wait for replica start future and 
finally fail with AwaitReplicaTimeoutException which is 
RetriableTransactionException.

In general, it seems there is no difference with late request to A. So there is 
no necessity to wait for cluster time if we have proper failovers for 
RetriableTransactionException.

Also, AwaitReplicaException may be thrown fast if replica is absent in stable 
assignments.

[1] AssignmentsPlacementDriver#awaitNonEmptyAssignments



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

Reply via email to