pauloricardomg commented on code in PR #4231: URL: https://github.com/apache/cassandra/pull/4231#discussion_r2265607613
########## src/java/org/apache/cassandra/config/YamlConfigurationLoader.java: ########## @@ -163,21 +169,63 @@ private static void maybeAddSystemProperties(Object obj) if (CassandraRelevantProperties.CONFIG_ALLOW_SYSTEM_PROPERTIES.getBoolean()) { java.util.Properties props = System.getProperties(); - Map<String, String> map = new HashMap<>(); - for (String name : props.stringPropertyNames()) + Map<String, Object> map = new HashMap<>(); + for (String originalKey : props.stringPropertyNames()) { - if (name.startsWith(SYSTEM_PROPERTY_PREFIX)) + if (originalKey.startsWith(SYSTEM_PROPERTY_PREFIX)) { - String value = props.getProperty(name); - if (value != null) - map.put(name.replace(SYSTEM_PROPERTY_PREFIX, ""), value); + String value = props.getProperty(originalKey); + String configKey = originalKey.replace(SYSTEM_PROPERTY_PREFIX, ""); + if (value != null && !map.containsKey(configKey)) { + if (!DatabaseDescriptor.hasLoggedConfig()) // CASSANDRA-9909: Avoid flooding config during initialization + logger.warn("Detected JVM property {}={} override for cassandra configuration '{}' (ignored if setting does not exist).", originalKey, value, configKey); + map.put(configKey, getScalarValueOrJsonObject(value)); + } } } if (!map.isEmpty()) updateFromMap(map, false, obj); } } + private static void maybeAddEnvironmentVariables(Object obj) + { + if (CassandraRelevantProperties.CONFIG_ALLOW_ENVIRONMENT_VARIABLES.getBoolean()) + { + Map<String, String> environment = System.getenv(); // checkstyle: suppress nearby 'blockSystemPropertyUsage' + Map<String, Object> configOverrides = new HashMap<>(); + for (Map.Entry<String, String> env : environment.entrySet()) + { + String originalKey = env.getKey(); + if (env.getKey().startsWith(ENVIRONMENT_VARIABLE_PREFIX)) + { + String configKey = LocalizeString.toLowerCaseLocalized(originalKey.replace(ENVIRONMENT_VARIABLE_PREFIX, "") + .replace(NESTED_CONFIG_SEPARATOR_ENVIRONMENT, NESTED_CONFIG_SEPARATOR)); + String configValue = env.getValue(); + // TODO: do not include config if it is not a valid config key Review Comment: Updated 6fdfc52ddd to allow only overriding only valid properties (nested and top-level) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org For additional commands, e-mail: pr-h...@cassandra.apache.org