diff --git a/pom.xml b/pom.xml index 8c44c2589..e8aea3d46 100644 --- a/pom.xml +++ b/pom.xml @@ -89,7 +89,7 @@ - 1.8.5-2020.0.5 + 1.8.6-2020.0.5 2020.0.5 diff --git a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/PolarisRouterServiceInstanceListSupplier.java b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/PolarisRouterServiceInstanceListSupplier.java index b12a0f81a..9202bcb9a 100644 --- a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/PolarisRouterServiceInstanceListSupplier.java +++ b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/PolarisRouterServiceInstanceListSupplier.java @@ -145,23 +145,26 @@ public class PolarisRouterServiceInstanceListSupplier extends DelegatingServiceI Flux> doRouter(Flux> allServers, PolarisRouterContext routerContext) { ServiceInstances serviceInstances = LoadBalancerUtils.transferServersToServiceInstances(allServers); - // filter instance by routers - ProcessRoutersRequest processRoutersRequest = buildProcessRoutersRequest(serviceInstances, routerContext); + List filteredInstances = new ArrayList<>(); + if (serviceInstances.getInstances().size() > 0) { + // filter instance by routers + ProcessRoutersRequest processRoutersRequest = buildProcessRoutersRequest(serviceInstances, routerContext); - // process request interceptors - processRouterRequestInterceptors(processRoutersRequest, routerContext); + // process request interceptors + processRouterRequestInterceptors(processRoutersRequest, routerContext); - // process router chain - ProcessRoutersResponse processRoutersResponse = routerAPI.processRouters(processRoutersRequest); + // process router chain + ProcessRoutersResponse processRoutersResponse = routerAPI.processRouters(processRoutersRequest); - // process response interceptors - processRouterResponseInterceptors(routerContext, processRoutersResponse); + // process response interceptors + processRouterResponseInterceptors(routerContext, processRoutersResponse); - // transfer polaris server to ServiceInstance - List filteredInstances = new ArrayList<>(); - ServiceInstances filteredServiceInstances = processRoutersResponse.getServiceInstances(); - for (Instance instance : filteredServiceInstances.getInstances()) { - filteredInstances.add(new PolarisServiceInstance(instance)); + // transfer polaris server to ServiceInstance + ServiceInstances filteredServiceInstances = processRoutersResponse.getServiceInstances(); + for (Instance instance : filteredServiceInstances.getInstances()) { + filteredInstances.add(new PolarisServiceInstance(instance)); + } + return Flux.fromIterable(Collections.singletonList(filteredInstances)); } return Flux.fromIterable(Collections.singletonList(filteredInstances)); } diff --git a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/endpoint/PolarisRouterEndpoint.java b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/endpoint/PolarisRouterEndpoint.java index a00281d0d..c47dcd928 100644 --- a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/endpoint/PolarisRouterEndpoint.java +++ b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/endpoint/PolarisRouterEndpoint.java @@ -36,6 +36,7 @@ import org.springframework.boot.actuate.endpoint.annotation.Endpoint; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; import org.springframework.boot.actuate.endpoint.annotation.Selector; import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; /** * Router actuator endpoint. @@ -53,20 +54,21 @@ public class PolarisRouterEndpoint { @ReadOperation public Map router(@Selector String dstService) { - List routerRules = serviceRuleManager.getServiceRouterRule(MetadataContext.LOCAL_NAMESPACE, - MetadataContext.LOCAL_SERVICE, dstService); - Map result = new HashMap<>(); - List rules = new LinkedList<>(); - result.put("routerRules", rules); + if (StringUtils.hasText(dstService)) { + List routerRules = serviceRuleManager.getServiceRouterRule(MetadataContext.LOCAL_NAMESPACE, + MetadataContext.LOCAL_SERVICE, dstService); + List rules = new LinkedList<>(); + result.put("routerRules", rules); - if (CollectionUtils.isEmpty(routerRules)) { - return result; - } + if (CollectionUtils.isEmpty(routerRules)) { + return result; + } - for (RoutingProto.Route route : routerRules) { - rules.add(parseRouterRule(route)); + for (RoutingProto.Route route : routerRules) { + rules.add(parseRouterRule(route)); + } } return result; diff --git a/spring-cloud-tencent-dependencies/pom.xml b/spring-cloud-tencent-dependencies/pom.xml index de746951f..d18ec4908 100644 --- a/spring-cloud-tencent-dependencies/pom.xml +++ b/spring-cloud-tencent-dependencies/pom.xml @@ -70,10 +70,10 @@ - 1.8.5-2020.0.5 + 1.8.6-2020.0.5 - 1.9.3 + 1.9.4 1.2.11 4.5.1 1.12.10 diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/ServiceRuleManager.java b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/ServiceRuleManager.java index 06d71f65c..6ace65e70 100644 --- a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/ServiceRuleManager.java +++ b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/ServiceRuleManager.java @@ -34,6 +34,8 @@ import com.tencent.polaris.client.flow.FlowControlParam; import com.tencent.polaris.client.flow.ResourcesResponse; import com.tencent.polaris.client.pb.RateLimitProto; import com.tencent.polaris.client.pb.RoutingProto; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * the manager of service governance rules. for example: rate limit rule, router rules. @@ -42,8 +44,8 @@ import com.tencent.polaris.client.pb.RoutingProto; */ public class ServiceRuleManager { + private static final Logger LOG = LoggerFactory.getLogger(ServiceRuleManager.class); private final SDKContext sdkContext; - private final FlowControlParam controlParam; public ServiceRuleManager(SDKContext sdkContext) { @@ -55,6 +57,7 @@ public class ServiceRuleManager { } public RateLimitProto.RateLimit getServiceRateLimitRule(String namespace, String service) { + LOG.debug("Get service rate limit rules with namespace:{} and service:{}.", namespace, service); ServiceEventKey serviceEventKey = new ServiceEventKey(new ServiceKey(namespace, service), ServiceEventKey.EventType.RATE_LIMITING); @@ -76,6 +79,8 @@ public class ServiceRuleManager { } public List getServiceRouterRule(String namespace, String sourceService, String dstService) { + LOG.debug("Get service router rules with namespace:{} and sourceService:{} and dstService:{}.", + namespace, sourceService, dstService); Set routerKeys = new HashSet<>(); ServiceEventKey dstSvcEventKey = new ServiceEventKey(new ServiceKey(namespace, dstService),