From d5fcb0b39121beb5f41b1f77a6d73129c0ad32ad Mon Sep 17 00:00:00 2001 From: Haotian Zhang <928016560@qq.com> Date: Thu, 14 Sep 2023 16:20:09 +0800 Subject: [PATCH] fix:fix feign url bug when using sleuth. (#1096) --- CHANGELOG.md | 1 + .../feign/EnhancedFeignBeanPostProcessor.java | 5 +-- ...hancedFeignBlockingLoadBalancerClient.java | 39 ------------------- .../EnhancedFeignBeanPostProcessorTest.java | 7 ++-- ...edFeignBlockingLoadBalancerClientTest.java | 35 ----------------- 5 files changed, 6 insertions(+), 81 deletions(-) delete mode 100644 spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBlockingLoadBalancerClient.java delete mode 100644 spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBlockingLoadBalancerClientTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 06c1f8175..743638987 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ # Change Log --- +- [fix:fix feign url bug when using sleuth.](https://github.com/Tencent/spring-cloud-tencent/pull/1096) diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBeanPostProcessor.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBeanPostProcessor.java index 029fc22c3..0ee84a299 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBeanPostProcessor.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBeanPostProcessor.java @@ -61,7 +61,7 @@ public class EnhancedFeignBeanPostProcessor implements BeanPostProcessor, BeanFa delegate = ((FeignBlockingLoadBalancerClient) bean).getDelegate(); } if (delegate != null) { - return new EnhancedFeignBlockingLoadBalancerClient(createPolarisFeignClient(delegate), + return new FeignBlockingLoadBalancerClient(createPolarisFeignClient(delegate), factory.getBean(BlockingLoadBalancerClient.class), factory.getBean(LoadBalancerClientFactory.class) ); @@ -73,8 +73,7 @@ public class EnhancedFeignBeanPostProcessor implements BeanPostProcessor, BeanFa } private boolean isNeedWrap(Object bean) { - return bean instanceof Client && !(bean instanceof EnhancedFeignClient) - && !(bean instanceof EnhancedFeignBlockingLoadBalancerClient); + return bean instanceof Client && !(bean instanceof EnhancedFeignClient); } private EnhancedFeignClient createPolarisFeignClient(Client delegate) { diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBlockingLoadBalancerClient.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBlockingLoadBalancerClient.java deleted file mode 100644 index 18536bc8c..000000000 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBlockingLoadBalancerClient.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * - * Licensed under the BSD 3-Clause License (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://opensource.org/licenses/BSD-3-Clause - * - * Unless required by applicable law or agreed to in writing, software distributed - * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ - -package com.tencent.cloud.rpc.enhancement.feign; - -import feign.Client; - -import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; -import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory; -import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient; - -/** - * Wrap for {@link FeignBlockingLoadBalancerClient}. - * - * @author Haotian Zhang - */ -public class EnhancedFeignBlockingLoadBalancerClient extends FeignBlockingLoadBalancerClient { - - public EnhancedFeignBlockingLoadBalancerClient(Client delegate, LoadBalancerClient loadBalancerClient, - LoadBalancerClientFactory loadBalancerClientFactory) { - super(delegate, loadBalancerClient, loadBalancerClientFactory); - } - - -} diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBeanPostProcessorTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBeanPostProcessorTest.java index 40e09a94e..30048fe48 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBeanPostProcessorTest.java +++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBeanPostProcessorTest.java @@ -68,9 +68,7 @@ public class EnhancedFeignBeanPostProcessorTest { // isNeedWrap(bean) == false Object bean1 = new Object(); Object bean = enhancedFeignBeanPostProcessor.postProcessBeforeInitialization(bean1, "bean1"); - assertThat(bean).isNotInstanceOfAny( - EnhancedFeignClient.class, - EnhancedFeignBlockingLoadBalancerClient.class); + assertThat(bean).isNotInstanceOfAny(EnhancedFeignClient.class); // bean instanceOf Client.class Client bean2 = mock(Client.class); @@ -81,6 +79,7 @@ public class EnhancedFeignBeanPostProcessorTest { FeignBlockingLoadBalancerClient bean4 = mock(FeignBlockingLoadBalancerClient.class); doReturn(mock(Client.class)).when(bean4).getDelegate(); bean = enhancedFeignBeanPostProcessor.postProcessBeforeInitialization(bean4, "bean4"); - assertThat(bean).isInstanceOf(EnhancedFeignBlockingLoadBalancerClient.class); + assertThat(bean).isInstanceOf(FeignBlockingLoadBalancerClient.class); + assertThat(((FeignBlockingLoadBalancerClient) bean).getDelegate()).isInstanceOf(EnhancedFeignClient.class); } } diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBlockingLoadBalancerClientTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBlockingLoadBalancerClientTest.java deleted file mode 100644 index bcca3df89..000000000 --- a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBlockingLoadBalancerClientTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. - * - * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. - * - * Licensed under the BSD 3-Clause License (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://opensource.org/licenses/BSD-3-Clause - * - * Unless required by applicable law or agreed to in writing, software distributed - * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - */ - -package com.tencent.cloud.rpc.enhancement.feign; - -import org.junit.jupiter.api.Test; - -import static org.assertj.core.api.Assertions.assertThatCode; - -/** - * Test for {@link EnhancedFeignBlockingLoadBalancerClient}. - * - * @author Haotian Zhang - */ -public class EnhancedFeignBlockingLoadBalancerClientTest { - - @Test - public void testConstructor() { - assertThatCode(() -> new EnhancedFeignBlockingLoadBalancerClient(null, null, null)).doesNotThrowAnyException(); - } -}