denis-chudov commented on code in PR #4707:
URL: https://github.com/apache/ignite-3/pull/4707#discussion_r1841223129
##########
modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/LeaseUpdater.java:
##########
@@ -412,7 +412,7 @@ private void updateLeaseBatchInternal() {
if (!lease.isAccepted()) {
LeaseAgreement agreement =
leaseNegotiator.getAndRemoveIfReady(grpId);
- agreement.checkValid(grpId,
topologyTracker.currentTopologySnapshot(), assignments);
+ agreement.checkValid(grpId,
topologyTracker.currentTopologySnapshot(), stableAssignments);
Review Comment:
I mean the folowing:
- no stable assignments left, the candidate is chosen from pendings
- lease agreement is created and negotiation starts
- on the next iteration `agreement.checkValid` may see that the candidate is
not in the given assignments anymore (and the given assignments are stable
here), and the candidate never was in the stable assignments because if was
chosen from pendings. However, `checkValid` knows nothing about it and
invalidates the agreement, stopping the negotiation and beginning the lease
granting process from the start. This may cause flakiness of tests.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]