From 4642f609ebb6d873ea5a45dd0f0a892e80e4c016 Mon Sep 17 00:00:00 2001
From: Haotian Zhang <928016560@qq.com>
Date: Mon, 9 Oct 2023 21:39:42 +0800
Subject: [PATCH] fix:fix system env variable read bug.
---
CHANGELOG.md | 1 +
README-zh.md | 2 +-
README.md | 2 +-
pom.xml | 2 +-
.../PolarisConfigChangeEventListener.java | 20 +++++++++++++++++--
spring-cloud-tencent-dependencies/pom.xml | 2 +-
6 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7c2ab4c03..ed5402897 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -28,3 +28,4 @@
- [fix:upgrade spring version.](https://github.com/Tencent/spring-cloud-tencent/pull/1086)
- [fix:Update README-zh.md](https://github.com/Tencent/spring-cloud-tencent/pull/1090).
- [feature: support Polaris configuration center extension plugin interface and support dynamic modification of log levels.](https://github.com/Tencent/spring-cloud-tencent/pull/1103).
+- fix:fix system env variable read bug.
diff --git a/README-zh.md b/README-zh.md
index b4447195a..b813258c4 100644
--- a/README-zh.md
+++ b/README-zh.md
@@ -78,7 +78,7 @@ Spring Cloud Tencent 所有组件都已上传到 Maven 中央仓库,只需要
com.tencent.cloud
spring-cloud-tencent-dependencies
- 1.12.1-2021.0.8
+ 1.12.2-2021.0.8
pom
import
diff --git a/README.md b/README.md
index 2cb1f52e7..6ae709175 100644
--- a/README.md
+++ b/README.md
@@ -80,7 +80,7 @@ For example:
com.tencent.cloud
spring-cloud-tencent-dependencies
- 1.12.1-2021.0.8
+ 1.12.2-2021.0.8
pom
import
diff --git a/pom.xml b/pom.xml
index ee6de7a56..a59889fa1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -88,7 +88,7 @@
- 1.12.1-2021.0.8
+ 1.12.2-2021.0.8
5.3.29
diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/listener/PolarisConfigChangeEventListener.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/listener/PolarisConfigChangeEventListener.java
index e77b59014..e05a939d8 100644
--- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/listener/PolarisConfigChangeEventListener.java
+++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/listener/PolarisConfigChangeEventListener.java
@@ -26,6 +26,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
import com.google.common.collect.Maps;
import com.tencent.cloud.polaris.config.spring.event.ConfigChangeSpringEvent;
import com.tencent.polaris.configuration.api.core.ConfigPropertyChangeInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.cloud.context.environment.EnvironmentChangeEvent;
@@ -37,6 +39,7 @@ import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.Environment;
import org.springframework.core.env.MutablePropertySources;
+import org.springframework.core.env.StandardEnvironment;
import org.springframework.lang.NonNull;
import static com.tencent.cloud.polaris.config.listener.PolarisConfigListenerContext.fireConfigChange;
@@ -50,6 +53,8 @@ import static com.tencent.cloud.polaris.config.listener.PolarisConfigListenerCon
*/
public final class PolarisConfigChangeEventListener implements ApplicationListener, ApplicationEventPublisherAware {
+ private static final Logger LOG = LoggerFactory.getLogger(PolarisConfigChangeEventListener.class);
+
private static final AtomicBoolean started = new AtomicBoolean();
private ApplicationEventPublisher eventPublisher;
@@ -95,12 +100,23 @@ public final class PolarisConfigChangeEventListener implements ApplicationListen
Map ret = Maps.newHashMap();
MutablePropertySources sources = environment.getPropertySources();
sources.iterator().forEachRemaining(propertySource -> {
+ // Don't read system env variable.
+ if (StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME.equals(propertySource.getName())) {
+ return;
+ }
+
Object o = propertySource.getSource();
if (o instanceof Map) {
for (Map.Entry entry : ((Map) o).entrySet()) {
String key = entry.getKey();
- String value = environment.getProperty(key);
- ret.put(key, value);
+ try {
+ String value = environment.getProperty(key);
+ ret.put(key, value);
+ }
+ catch (Exception e) {
+ LOG.warn("Read property from {} with key {} failed.", propertySource.getName(), key, e);
+ }
+
}
}
else if (o instanceof Collection) {
diff --git a/spring-cloud-tencent-dependencies/pom.xml b/spring-cloud-tencent-dependencies/pom.xml
index 879115486..dc1cdbf29 100644
--- a/spring-cloud-tencent-dependencies/pom.xml
+++ b/spring-cloud-tencent-dependencies/pom.xml
@@ -70,7 +70,7 @@
- 1.12.1-2021.0.8
+ 1.12.2-2021.0.8
1.14.1