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

Reply via email to