yifan-c commented on code in PR #211:
URL: https://github.com/apache/cassandra-sidecar/pull/211#discussion_r2004462373
##########
server/src/main/java/org/apache/cassandra/sidecar/coordination/ClusterLeaseClaimTask.java:
##########
@@ -144,7 +147,13 @@ public ScheduleDecision scheduleDecision()
@Override
public DurationSpec initialDelay()
{
- return periodicTaskConfiguration.initialDelay();
+ // Return a randomized delay to introduce jitter among all the
instances participating
+ // in the lease claim process
+ MillisecondBoundConfiguration initialDelay =
periodicTaskConfiguration.initialDelay();
+ long millis = initialDelay.toMillis();
+ return millis <= 0
+ ? initialDelay
+ : new
MillisecondBoundConfiguration(ThreadLocalRandom.current().nextLong(millis),
TimeUnit.MILLISECONDS);
Review Comment:
Thinking it more. I think the current `RAND(initialDelay)` changes the
semantics of the initial delay. It is almost guaranteed that the actual value
is not the `initialDelay`. It could cause surprise.
Would it make sense to split it into 2 parts, `minInitialDelay` and
`maxInitialDelay`? The actual value is randomly picked that in the value range.
--
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]