From 8d3832f5b1ea81d8b2db78cd71cb7944297d6023 Mon Sep 17 00:00:00 2001 From: lepdou Date: Mon, 29 Aug 2022 19:40:00 +0800 Subject: [PATCH 1/2] remove location metadata (#542) --- CHANGELOG.md | 1 + .../cloud/common/metadata/StaticMetadataManager.java | 3 +-- .../cloud/common/metadata/StaticMetadataManagerTest.java | 3 --- .../cloud/polaris/loadbalancer/LoadBalancerUtils.java | 9 +++++++++ 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0acbbb0b3..016bfc8ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,4 +24,5 @@ - [Feature: Optimized configuration update](https://github.com/Tencent/spring-cloud-tencent/pull/528) - [Feature:support pushGateway push metrics](https://github.com/Tencent/spring-cloud-tencent/pull/529) - [Feature: remove location metadata](https://github.com/Tencent/spring-cloud-tencent/pull/536) +- [Feature: remove location metadata](https://github.com/Tencent/spring-cloud-tencent/pull/542) - [add feature-env plugin & add spring cloud gateway staining plugin](https://github.com/Tencent/spring-cloud-tencent/pull/533) diff --git a/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java index 554694fa3..a7db6fe8b 100644 --- a/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java +++ b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java @@ -214,8 +214,7 @@ public class StaticMetadataManager { mergedMetadataResult.putAll(configMetadata); mergedMetadataResult.putAll(envMetadata); mergedMetadataResult.putAll(customSPIMetadata); - // set location info as metadata - mergedMetadataResult.putAll(getLocationMetadata()); + this.mergedStaticMetadata = Collections.unmodifiableMap(mergedMetadataResult); Map mergedTransitiveMetadataResult = new HashMap<>(); diff --git a/spring-cloud-tencent-commons/src/test/java/com/tencent/cloud/common/metadata/StaticMetadataManagerTest.java b/spring-cloud-tencent-commons/src/test/java/com/tencent/cloud/common/metadata/StaticMetadataManagerTest.java index 085b13e21..64aa20bcb 100644 --- a/spring-cloud-tencent-commons/src/test/java/com/tencent/cloud/common/metadata/StaticMetadataManagerTest.java +++ b/spring-cloud-tencent-commons/src/test/java/com/tencent/cloud/common/metadata/StaticMetadataManagerTest.java @@ -128,9 +128,6 @@ public class StaticMetadataManagerTest { Assert.assertEquals("v1", metadata.get("k1")); Assert.assertEquals("v22", metadata.get("k2")); Assert.assertEquals("v33", metadata.get("k3")); - Assert.assertEquals("zone2", metadata.get("zone")); - Assert.assertEquals("region1", metadata.get("region")); - Assert.assertEquals("campus1", metadata.get("campus")); Map transitiveMetadata = metadataManager.getMergedStaticTransitiveMetadata(); Assert.assertEquals(2, transitiveMetadata.size()); diff --git a/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/LoadBalancerUtils.java b/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/LoadBalancerUtils.java index 64a67140d..e4f837254 100644 --- a/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/LoadBalancerUtils.java +++ b/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/LoadBalancerUtils.java @@ -24,6 +24,7 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; import com.tencent.cloud.common.metadata.MetadataContext; +import com.tencent.cloud.common.pojo.PolarisServiceInstance; import com.tencent.polaris.api.pojo.DefaultInstance; import com.tencent.polaris.api.pojo.DefaultServiceInstances; import com.tencent.polaris.api.pojo.Instance; @@ -57,6 +58,14 @@ public final class LoadBalancerUtils { instance.setPort(serviceInstance.getPort()); instance.setWeight(100); instance.setMetadata(serviceInstance.getMetadata()); + + if (serviceInstance instanceof PolarisServiceInstance) { + PolarisServiceInstance polarisServiceInstance = (PolarisServiceInstance) serviceInstance; + instance.setRegion(polarisServiceInstance.getPolarisInstance().getRegion()); + instance.setZone(polarisServiceInstance.getPolarisInstance().getZone()); + instance.setCampus(polarisServiceInstance.getPolarisInstance().getCampus()); + } + return instance; }).collect(Collectors.toList())); }); From 05130c932740d6e1e12212155bf392dbd4f96a23 Mon Sep 17 00:00:00 2001 From: DerekYRC <44155264+DerekYRC@users.noreply.github.com> Date: Tue, 30 Aug 2022 11:17:24 +0800 Subject: [PATCH 2/2] Set error handler named EnhancedRestTemplateReporter for RestTemplate (#545) --- CHANGELOG.md | 1 + .../RpcEnhancementAutoConfiguration.java | 16 ++++++-- .../RpcEnhancementAutoConfigurationTest.java | 40 ------------------- 3 files changed, 14 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 016bfc8ea..ea0baf206 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,3 +26,4 @@ - [Feature: remove location metadata](https://github.com/Tencent/spring-cloud-tencent/pull/536) - [Feature: remove location metadata](https://github.com/Tencent/spring-cloud-tencent/pull/542) - [add feature-env plugin & add spring cloud gateway staining plugin](https://github.com/Tencent/spring-cloud-tencent/pull/533) +- [fix:set error handler named EnhancedRestTemplateReporter for RestTemplate](https://github.com/Tencent/spring-cloud-tencent/pull/545) diff --git a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfiguration.java b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfiguration.java index b2092ff3b..d015a15e7 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfiguration.java +++ b/spring-cloud-tencent-rpc-enhancement/src/main/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfiguration.java @@ -17,6 +17,7 @@ package com.tencent.cloud.rpc.enhancement.config; +import java.util.Collections; import java.util.List; import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; @@ -30,13 +31,14 @@ import com.tencent.cloud.rpc.enhancement.resttemplate.EnhancedRestTemplateReport import com.tencent.cloud.rpc.enhancement.resttemplate.PolarisResponseErrorHandler; import com.tencent.polaris.api.core.ConsumerAPI; +import org.springframework.beans.factory.SmartInitializingSingleton; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.cloud.client.loadbalancer.RestTemplateCustomizer; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; @@ -100,6 +102,10 @@ public class RpcEnhancementAutoConfiguration { @ConditionalOnClass(name = "org.springframework.web.client.RestTemplate") protected static class PolarisRestTemplateAutoConfiguration { + @LoadBalanced + @Autowired(required = false) + private List restTemplates = Collections.emptyList(); + @Bean public EnhancedRestTemplateReporter polarisRestTemplateResponseErrorHandler( RpcEnhancementReporterProperties properties, ConsumerAPI consumerAPI, @@ -108,8 +114,12 @@ public class RpcEnhancementAutoConfiguration { } @Bean - public RestTemplateCustomizer setErrorHandlerCustomizer(EnhancedRestTemplateReporter reporter) { - return restTemplate -> restTemplate.setErrorHandler(reporter); + public SmartInitializingSingleton setErrorHandlerForRestTemplate(EnhancedRestTemplateReporter reporter) { + return () -> { + for (RestTemplate restTemplate : restTemplates) { + restTemplate.setErrorHandler(reporter); + } + }; } } } diff --git a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfigurationTest.java b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfigurationTest.java index 35e65dc44..78508dd16 100644 --- a/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfigurationTest.java +++ b/spring-cloud-tencent-rpc-enhancement/src/test/java/com/tencent/cloud/rpc/enhancement/config/RpcEnhancementAutoConfigurationTest.java @@ -17,9 +17,6 @@ package com.tencent.cloud.rpc.enhancement.config; -import java.io.IOException; -import java.net.URI; - import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.cloud.rpc.enhancement.feign.EnhancedFeignBeanPostProcessor; import com.tencent.cloud.rpc.enhancement.feign.EnhancedFeignPluginRunner; @@ -32,12 +29,7 @@ import org.junit.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; -import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.loadbalancer.LoadBalanced; -import org.springframework.cloud.client.loadbalancer.LoadBalancerAutoConfiguration; -import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; -import org.springframework.cloud.client.loadbalancer.LoadBalancerRequest; -import org.springframework.cloud.client.loadbalancer.Request; import org.springframework.cloud.openfeign.loadbalancer.FeignLoadBalancerAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -57,7 +49,6 @@ public class RpcEnhancementAutoConfigurationTest { PolarisContextAutoConfiguration.class, RpcEnhancementAutoConfiguration.class, PolarisRestTemplateAutoConfigurationTester.class, - LoadBalancerAutoConfiguration.class, FeignLoadBalancerAutoConfiguration.class)) .withPropertyValues("spring.cloud.polaris.circuitbreaker.enabled=true"); @@ -85,36 +76,5 @@ public class RpcEnhancementAutoConfigurationTest { RestTemplate restTemplate() { return new RestTemplate(); } - - @Bean - LoadBalancerClient loadBalancerClient() { - return new LoadBalancerClient() { - - @Override - public ServiceInstance choose(String serviceId) { - return null; - } - - @Override - public ServiceInstance choose(String serviceId, Request request) { - return null; - } - - @Override - public T execute(String serviceId, LoadBalancerRequest request) throws IOException { - return null; - } - - @Override - public T execute(String serviceId, ServiceInstance serviceInstance, LoadBalancerRequest request) throws IOException { - return null; - } - - @Override - public URI reconstructURI(ServiceInstance instance, URI original) { - return null; - } - }; - } } }