pauloricardomg commented on code in PR #4231:
URL: https://github.com/apache/cassandra/pull/4231#discussion_r2264095186


##########
src/java/org/apache/cassandra/config/CassandraRelevantProperties.java:
##########
@@ -180,6 +180,7 @@ public enum CassandraRelevantProperties
      * Default is set to false.
      */
     
COM_SUN_MANAGEMENT_JMXREMOTE_SSL_NEED_CLIENT_AUTH("com.sun.management.jmxremote.ssl.need.client.auth"),
+    
CONFIG_ALLOW_ENVIRONMENT_VARIABLES("cassandra.config.allow_environment_variables"),

Review Comment:
   Makes sense, added `CASSANDRA_ALLOW_CONFIG_ENVIRONMENT_VARIABLES`.



##########
src/java/org/apache/cassandra/config/YamlConfigurationLoader.java:
##########
@@ -238,6 +286,7 @@ public static <T> T fromMap(Map<String,Object> map, boolean 
shouldCheck, Class<T
         if (shouldCheck)
             propertiesChecker.check();
         maybeAddSystemProperties(value);
+        maybeAddEnvironmentVariables(value);

Review Comment:
   Makes sense, updated



##########
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())

Review Comment:
   Agreed, added `CASSANDRA_ALLOW_CONFIG_ENVIRONMENT_VARIABLES`



-- 
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

Reply via email to