You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ya...@apache.org on 2019/08/15 01:14:00 UTC
[servicecomb-java-chassis] 01/02: [SCB-1297] NPE would be arised if
you haven't given any value for servicecomb.config.ignoreResolveFailure
This is an automated email from the ASF dual-hosted git repository.
yaohaishi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
commit 7e23a668ceb7e02cf1e3558a17e80edd9f688357
Author: l00393086 <li...@163.com>
AuthorDate: Mon Aug 12 16:06:12 2019 +0800
[SCB-1297] NPE would be arised if you haven't given any value for servicecomb.config.ignoreResolveFailure
---
.../config/ConfigurationSpringInitializer.java | 17 ++++++++++-------
.../config/TestConfigurationSpringInitializer.java | 22 ++++++++++++++++++++++
2 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigurationSpringInitializer.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigurationSpringInitializer.java
index ae6d217..c7472c7 100644
--- a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigurationSpringInitializer.java
+++ b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigurationSpringInitializer.java
@@ -76,6 +76,9 @@ public class ConfigurationSpringInitializer extends PropertyPlaceholderConfigure
*/
@Override
public void setEnvironment(Environment environment) {
+
+ ConfigUtil.installDynamicConfig();
+
String environmentName = generateNameForEnvironment(environment);
LOGGER.info("Environment received, will get configurations from [{}].", environmentName);
@@ -83,8 +86,6 @@ public class ConfigurationSpringInitializer extends PropertyPlaceholderConfigure
ConfigUtil.addExtraConfig(EXTRA_CONFIG_SOURCE_PREFIX + environmentName, extraConfig);
- ConfigUtil.installDynamicConfig();
-
setUpSpringPropertySource(environment);
}
@@ -200,10 +201,10 @@ public class ConfigurationSpringInitializer extends PropertyPlaceholderConfigure
try {
configFromSpringBoot.put(propertyName, environment.getProperty(propertyName, Object.class));
} catch (Exception e) {
- if (!getIfIgnoreEnvironment()) {
- throw new RuntimeException("set up spring property source failed.", e);
- } else {
+ if (ignoreResolveFailure()) {
LOGGER.warn("set up spring property source failed.", e);
+ } else {
+ throw new RuntimeException("set up spring property source failed.If you still want to start up the application and ignore the errors, you can set servicecomb.config.ignoreResolveFailure to true.", e);
}
}
}
@@ -213,7 +214,9 @@ public class ConfigurationSpringInitializer extends PropertyPlaceholderConfigure
LOGGER.debug("a none EnumerablePropertySource is ignored, propertySourceName = [{}]", propertySource.getName());
}
- private boolean getIfIgnoreEnvironment() {
- return (Boolean) ConfigUtil.createLocalConfig().getProperty("servicecomb.config.ignoreResolveFailure");
+ private boolean ignoreResolveFailure() {
+ return DynamicPropertyFactory.getInstance()
+ .getBooleanProperty("servicecomb.config.ignoreResolveFailure", false)
+ .get();
}
}
diff --git a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/TestConfigurationSpringInitializer.java b/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/TestConfigurationSpringInitializer.java
index c50e01e..ac20e23 100644
--- a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/TestConfigurationSpringInitializer.java
+++ b/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/TestConfigurationSpringInitializer.java
@@ -43,6 +43,9 @@ import org.springframework.core.env.CompositePropertySource;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MapPropertySource;
import org.springframework.core.env.MutablePropertySources;
+import org.springframework.core.env.PropertySource;
+import org.springframework.core.env.StandardEnvironment;
+import org.springframework.core.env.SystemEnvironmentPropertySource;
import org.springframework.jndi.JndiPropertySource;
import com.netflix.config.ConfigurationManager;
@@ -224,8 +227,27 @@ public class TestConfigurationSpringInitializer {
assertEquals("value2", extraProperties.get("key2"));
}
+ @Test(expected = RuntimeException.class)
+ public void shoud_throw_exception_when_given_ignoreResolveFailure_false() {
+ StandardEnvironment environment = newStandardEnvironment();
+
+ ConfigurationSpringInitializer configurationSpringInitializer = new ConfigurationSpringInitializer();
+ configurationSpringInitializer.setEnvironment(environment);
+ }
+
private Map<String, Map<String, Object>> getExtraConfigMapFromConfigUtil() {
return Deencapsulation
.getField(ConfigUtil.class, "EXTRA_CONFIG_MAP");
}
+
+ private StandardEnvironment newStandardEnvironment() {
+ Map<String, Object> envProperties = new HashMap<>();
+ envProperties.put("IFS-X", "${IFS-X}");
+ PropertySource<Map<String, Object>> systemEnvironmentPropertySource = new SystemEnvironmentPropertySource("system-env", envProperties);
+
+ StandardEnvironment environment = new StandardEnvironment();
+ environment.getPropertySources()
+ .addAfter(StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, systemEnvironmentPropertySource);
+ return environment;
+ }
}