From c472aa87eed14701ba9636a2d5b591216ecd46a1 Mon Sep 17 00:00:00 2001 From: lepdou Date: Mon, 10 Oct 2022 17:41:27 +0800 Subject: [PATCH] fix throw npe when router context is null (#635) --- CHANGELOG.md | 1 + .../PolarisRouterServiceInstanceListSupplier.java | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd8f8044..79c219cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,3 +13,4 @@ - [fix pr 613: modify a judgment logic](https://github.com/Tencent/spring-cloud-tencent/pull/618) - [Feature: support new label expression](https://github.com/Tencent/spring-cloud-tencent/pull/627) - [feat:report the labels when using RestTemplate.](https://github.com/Tencent/spring-cloud-tencent/pull/629) +- [Bugfix: fix throw npe when router context is null](https://github.com/Tencent/spring-cloud-tencent/pull/635) 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 77517f22..1e734674 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 @@ -95,21 +95,23 @@ public class PolarisRouterServiceInstanceListSupplier extends DelegatingServiceI Flux> allServers = getDelegate().get(); // 2. filter by router + PolarisRouterContext routerContext = null; + DefaultRequestContext requestContext = (DefaultRequestContext) request.getContext(); - PolarisRouterContext key; if (requestContext instanceof RequestDataContext) { - key = buildRouterContext(((RequestDataContext) requestContext).getClientRequest().getHeaders()); + routerContext = buildRouterContext(((RequestDataContext) requestContext).getClientRequest().getHeaders()); } else if (requestContext.getClientRequest() instanceof PolarisLoadBalancerRequest) { - key = buildRouterContext(((PolarisLoadBalancerRequest) requestContext.getClientRequest()).getRequest() + routerContext = buildRouterContext(((PolarisLoadBalancerRequest) requestContext.getClientRequest()).getRequest() .getHeaders()); } - else { + + if (routerContext == null) { // return all servers if router context is null. return allServers; } - return doRouter(allServers, key); + return doRouter(allServers, routerContext); } //set method to public for unit test