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() {

Reply via email to