From 0db7b3b4b5318367d0ef104c02e73c99b202c834 Mon Sep 17 00:00:00 2001 From: Haotian Zhang <928016560@qq.com> Date: Sat, 16 Sep 2023 18:28:32 +0800 Subject: [PATCH] fix:fix feign url bug when using sleuth. (#1120) --- CHANGELOG.md | 1 + .../feign/EnhancedFeignBeanPostProcessor.java | 5 +-- ...hancedFeignBlockingLoadBalancerClient.java | 40 ------------------- .../EnhancedFeignBeanPostProcessorTest.java | 7 ++-- ...edFeignBlockingLoadBalancerClientTest.java | 35 ---------------- 5 files changed, 6 insertions(+), 82 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 81357a936..73987311a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,3 +3,4 @@ - [fix:the polaris config relation non-daemon thread should stop when application fails to start.](https://github.com/Tencent/spring-cloud-tencent/pull/1102) - [Refactoring:remove invalid @AutoConfigureAfter and @AutoConfigureBefore from discovery client automatic configuration.](https://github.com/Tencent/spring-cloud-tencent/pull/1116) +- [fix:fix feign url bug when using sleuth.](https://github.com/Tencent/spring-cloud-tencent/pull/1120) 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 99c5f6f2c..bac4e0681 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 @@ -62,7 +62,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), factory.getBeanProvider(LoadBalancerFeignRequestTransformer.class).stream().toList() @@ -75,8 +75,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 9040d0984..000000000 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/feign/EnhancedFeignBlockingLoadBalancerClient.java +++ /dev/null @@ -1,40 +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 java.util.List; - -import feign.Client; - -import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; -import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory; -import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient; -import org.springframework.cloud.openfeign.loadbalancer.LoadBalancerFeignRequestTransformer; - -/** - * Wrap for {@link FeignBlockingLoadBalancerClient}. - * - * @author Haotian Zhang - */ -public class EnhancedFeignBlockingLoadBalancerClient extends FeignBlockingLoadBalancerClient { - - public EnhancedFeignBlockingLoadBalancerClient(Client delegate, LoadBalancerClient loadBalancerClient, - LoadBalancerClientFactory loadBalancerClientFactory, List transformers) { - super(delegate, loadBalancerClient, loadBalancerClientFactory, transformers); - } -} 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 6481518bc..ca49f1e0d 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 @@ -73,9 +73,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); @@ -86,6 +84,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 d22e255ba..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, null)).doesNotThrowAnyException(); - } -}