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 f06e82591 [#4902] not deleted cache to ensure that instances are 
available after the microservice and engine are recovered from exceptions 
(#5092)
f06e82591 is described below

commit f06e825917c8b5bf823bf5b477524efb72a1be64
Author: Alex <[email protected]>
AuthorDate: Fri Mar 6 15:13:00 2026 +0800

    [#4902] not deleted cache to ensure that instances are available after the 
microservice and engine are recovered from exceptions (#5092)
---
 .../center/client/ServiceCenterDiscovery.java      | 31 +++++++---------------
 1 file changed, 9 insertions(+), 22 deletions(-)

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 a0a933184..0056ed7a8 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
@@ -17,8 +17,6 @@
 
 package org.apache.servicecomb.service.center.client;
 
-import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -156,13 +154,12 @@ public class ServiceCenterDiscovery extends AbstractTask {
     startTask(new PullInstanceOnceTask());
   }
 
-  private List<SubscriptionKey> pullInstance(SubscriptionKey k, 
SubscriptionValue v, boolean sendChangedEvent) {
+  private void pullInstance(SubscriptionKey k, SubscriptionValue v, boolean 
sendChangedEvent) {
     if (myselfServiceId == null) {
       // registration not ready
-      return Collections.emptyList();
+      return;
     }
 
-    List<SubscriptionKey> failedKeys = new ArrayList<>();
     try {
       FindMicroserviceInstancesResponse instancesResponse = serviceCenterClient
           .findMicroserviceInstance(myselfServiceId, k.appId, k.serviceName, 
ALL_VERSION, v.revision);
@@ -189,17 +186,9 @@ public class ServiceCenterDiscovery extends AbstractTask {
         }
       }
     } catch (Exception e) {
-      if (!(e.getCause() instanceof IOException)) {
-        // for IOException, do not remove cache, or when service center
-        // not available, invocation between microservices will fail.
-        failedKeys.add(k);
-        LOGGER.error("find service {}#{} instance failed and remove local 
cache.", k.appId, k.serviceName, e);
-      } else {
-        LOGGER.warn("find service {}#{} instance failed, remaining local 
instances cache, cause message: {}",
-            k.appId, k.serviceName, e.getMessage());
-      }
+      LOGGER.warn("find service {}#{} instance failed, remaining local 
instances cache [{}], cause message: {}",
+          k.appId, k.serviceName, instanceToString(v.instancesCache), 
e.getMessage());
     }
-    return failedKeys;
   }
 
   private void setMicroserviceInfo(List<MicroserviceInstance> instances) {
@@ -245,13 +234,9 @@ public class ServiceCenterDiscovery extends AbstractTask {
   }
 
   private synchronized void pullAllInstance() {
-    List<SubscriptionKey> failedInstances = new ArrayList<>();
-    instancesCache.forEach((k, v) -> failedInstances.addAll(pullInstance(k, v, 
true)));
-    if (failedInstances.isEmpty()) {
-      return;
-    }
-    failedInstances.forEach(instancesCache::remove);
-    failedInstances.clear();
+    instancesCache.forEach((k, v) -> {
+      pullInstance(k, v, true);
+    });
   }
 
   private static String instanceToString(List<MicroserviceInstance> instances) 
{
@@ -265,6 +250,8 @@ public class ServiceCenterDiscovery extends AbstractTask {
         sb.append(endpoint.length() > 64 ? endpoint.substring(0, 64) : 
endpoint);
         sb.append("|");
       }
+      sb.append(instance.getStatus());
+      sb.append("|");
     }
     return sb.toString();
   }

Reply via email to