diff --git a/config/src/main/java/com/typesafe/config/ConfigFactory.java b/config/src/main/java/com/typesafe/config/ConfigFactory.java index 7538817d..7938dc91 100644 --- a/config/src/main/java/com/typesafe/config/ConfigFactory.java +++ b/config/src/main/java/com/typesafe/config/ConfigFactory.java @@ -496,6 +496,7 @@ public final class ConfigFactory { // We rely on this having the side effect that it drops // all caches ConfigImpl.reloadSystemPropertiesConfig(); + ConfigImpl.reloadEnvVariablesConfig(); } /** diff --git a/config/src/main/java/com/typesafe/config/impl/ConfigImpl.java b/config/src/main/java/com/typesafe/config/impl/ConfigImpl.java index cc6de357..9cf49913 100644 --- a/config/src/main/java/com/typesafe/config/impl/ConfigImpl.java +++ b/config/src/main/java/com/typesafe/config/impl/ConfigImpl.java @@ -339,7 +339,7 @@ public class ConfigImpl { } private static class EnvVariablesHolder { - static final AbstractConfigObject envVariables = loadEnvVariables(); + static volatile AbstractConfigObject envVariables = loadEnvVariables(); } static AbstractConfigObject envVariablesAsConfigObject() { @@ -354,6 +354,12 @@ public class ConfigImpl { return envVariablesAsConfigObject().toConfig(); } + public static void reloadEnvVariablesConfig() { + // ConfigFactory.invalidateCaches() relies on this having the side + // effect that it drops all caches + EnvVariablesHolder.envVariables = loadEnvVariables(); + } + public static Config defaultReference(final ClassLoader loader) { return computeCachedConfig(loader, "defaultReference", new Callable<Config>() { @Override