This is an automated email from the ASF dual-hosted git repository.
youling1128 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new aefdcb084 [#4942] Add random time to the scheduled task for pulling
instances from serviceCenter (#4943)
aefdcb084 is described below
commit aefdcb084689549492f1ea84d0f2697489877e9b
Author: Alex <[email protected]>
AuthorDate: Thu Oct 9 09:46:28 2025 +0800
[#4942] Add random time to the scheduled task for pulling instances from
serviceCenter (#4943)
---
.../service/center/client/ServiceCenterDiscovery.java | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java
index 6e10ba358..a0a933184 100644
---
a/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java
+++
b/clients/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterDiscovery.java
@@ -23,6 +23,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.servicecomb.http.client.task.AbstractTask;
@@ -101,6 +102,8 @@ public class ServiceCenterDiscovery extends AbstractTask {
private final Object lock = new Object();
+ private final Random random = new Random();
+
public ServiceCenterDiscovery(ServiceCenterClient serviceCenterClient,
EventBus eventBus) {
super("service-center-discovery-task");
this.serviceCenterClient = serviceCenterClient;
@@ -219,10 +222,17 @@ public class ServiceCenterDiscovery extends AbstractTask {
public void execute() {
pullAllInstance();
- startTask(new BackOffSleepTask(pollInterval, new PullInstanceTask()));
+ startTask(new BackOffSleepTask(buildPollIntervalWithSalt(), new
PullInstanceTask()));
}
}
+ private long buildPollIntervalWithSalt() {
+ int positive = random.nextInt(5);
+ int sign = random.nextBoolean() ? 1 : -1;
+ long currentPollInterval = pollInterval + sign * positive * 1000;
+ return currentPollInterval > 0 ? currentPollInterval : pollInterval;
+ }
+
class PullInstanceOnceTask implements Task {
@Override
public void execute() {