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: pr-unsubscr...@cassandra.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org For additional commands, e-mail: pr-h...@cassandra.apache.org