ASF GitHub Bot commented on SCB-582:

liubao68 commented on a change in pull request #704: [SCB-582]Provide a way to 
protect instance removal

 File path: 
 @@ -169,6 +166,28 @@ private void setInstances(List<MicroserviceInstance> 
pulledInstances, String rev
+  private List<MicroserviceInstance> mergeInstances(List<MicroserviceInstance> 
+      List<MicroserviceInstance> inUseInstances) {
+    List<MicroserviceInstance> upInstances = pulledInstances
+        .stream()
+        .filter(instance -> {
+          return MicroserviceInstanceStatus.UP.equals(instance.getStatus());
+        })
+        .collect(Collectors.toList());
+    if (upInstances.isEmpty() && inUseInstances != null && 
ServiceRegistryConfig.INSTANCE.isEmptyInstanceProtectionEnabled()) {
+      MicroserviceInstancePing ping = 
+      inUseInstances.stream()
+          .forEach(instance -> {
+            if (!upInstances.contains(instance)) {
+              if (ping.ping(instance)) {
 Review comment:
   This scenario is rarely as I explained above, mostly because of service 
center bugs. And this health check run a separate background thread, will not 
influence normal performance.

This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:

> Provide a way to protection for instance removal
> ------------------------------------------------
>                 Key: SCB-582
>                 URL: https://issues.apache.org/jira/browse/SCB-582
>             Project: Apache ServiceComb
>          Issue Type: New Feature
>          Components: Java-Chassis
>            Reporter: liubao
>            Assignee: liubao
>            Priority: Major
>             Fix For: java-chassis-1.0.0-m2
> In some applications, each microservice have fixed instances and rarely 
> change. But for some reason, heartbeat to service center is not stable. In 
> this scenario, instances will get lost and result in invocation failure. 
> To deal with this problem, we need to provide a way to protect instance 
> removal. That's when there is instance removal, we first check(ping)the 
> instance to see if it is reachable. If it's reachable, we don't remove it. 
> Since this protection is not fit for docker applications or scenarios where 
> instances are constantly removed and added, and resources(hosts ,ip, port) 
> are reused, this feature is an optional feature and users can open it when 
> necessary. 

This message was sent by Atlassian JIRA

Reply via email to