This is an automated email from the ASF dual-hosted git repository.
youling1128 pushed a commit to branch 2.8.x
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/2.8.x by this push:
new 6c85f1b1c [#4942] Add random time to the scheduled task for pulling
instances from serviceCenter (#4977)
6c85f1b1c is described below
commit 6c85f1b1ce034e505e6c79f41ecdf177a67cc759
Author: Alex <[email protected]>
AuthorDate: Sat Oct 11 16:43:43 2025 +0800
[#4942] Add random time to the scheduled task for pulling instances from
serviceCenter (#4977)
---
.../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 67fcfcf60..2628e9c3e 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
@@ -21,6 +21,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;
@@ -99,6 +100,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;
@@ -208,10 +211,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() {