Revert "get service instances by Flux.blockLast() to resolve concurrent problem (#762)"

This reverts commit 03659bb684.
pull/771/head
lepdou 3 years ago
parent 5fa3c23fc8
commit c0779e31bb

@ -18,8 +18,10 @@
package com.tencent.cloud.polaris.loadbalancer; package com.tencent.cloud.polaris.loadbalancer;
import java.util.ArrayList; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import com.tencent.cloud.common.metadata.MetadataContext; import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.cloud.common.pojo.PolarisServiceInstance; import com.tencent.cloud.common.pojo.PolarisServiceInstance;
@ -52,22 +54,19 @@ public final class LoadBalancerUtils {
* @return ServiceInstances * @return ServiceInstances
*/ */
public static ServiceInstances transferServersToServiceInstances(Flux<List<ServiceInstance>> servers) { public static ServiceInstances transferServersToServiceInstances(Flux<List<ServiceInstance>> servers) {
List<ServiceInstance> serviceInstances = servers.blockLast(); AtomicReference<List<Instance>> instances = new AtomicReference<>();
servers.subscribe(serviceInstances -> instances.set(serviceInstances.stream()
List<Instance> instances = new ArrayList<>(); .map(LoadBalancerUtils::transferServerToServiceInstance)
if (!CollectionUtils.isEmpty(serviceInstances)) { .collect(Collectors.toList())));
for (ServiceInstance serviceInstance : serviceInstances) { String serviceName = null;
instances.add(transferServerToServiceInstance(serviceInstance)); if (CollectionUtils.isEmpty(instances.get())) {
} instances.set(Collections.emptyList());
} }
else {
String serviceName = ""; serviceName = instances.get().get(0).getService();
if (!CollectionUtils.isEmpty(instances)) {
serviceName = instances.get(0).getService();
} }
ServiceKey serviceKey = new ServiceKey(MetadataContext.LOCAL_NAMESPACE, serviceName); ServiceKey serviceKey = new ServiceKey(MetadataContext.LOCAL_NAMESPACE, serviceName);
return new DefaultServiceInstances(serviceKey, instances); return new DefaultServiceInstances(serviceKey, instances.get());
} }
/** /**

Loading…
Cancel
Save