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)