fix:fix system env variable read bug.

pull/1169/head
Haotian Zhang 1 year ago
parent c7c0d1793b
commit af1f8155a9

@ -28,3 +28,4 @@
- [fix:upgrade spring version.](https://github.com/Tencent/spring-cloud-tencent/pull/1085)
- [fix:Update README-zh.md](https://github.com/Tencent/spring-cloud-tencent/pull/1094).
- [feature: support Polaris configuration center extension plugin interface and support dynamic modification of log levels.](https://github.com/Tencent/spring-cloud-tencent/pull/1105)
- fix:fix system env variable read bug.

@ -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<ApplicationEvent>, ApplicationEventPublisherAware {
private static final Logger LOG = LoggerFactory.getLogger(PolarisConfigChangeEventListener.class);
private static final AtomicBoolean started = new AtomicBoolean();
private ApplicationEventPublisher eventPublisher;
@ -95,13 +100,24 @@ public final class PolarisConfigChangeEventListener implements ApplicationListen
Map<String, Object> 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<String, Object> entry : ((Map<String, Object>) o).entrySet()) {
String key = entry.getKey();
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) {
int count = 0;

Loading…
Cancel
Save