paul-rogers opened a new issue #11952:
URL: https://github.com/apache/druid/issues/11952


   ### Affected Version
   
   Latest `master` as of issue date.
   
   ### Description
   
   A typical configuration rule is that system properties override file-based 
configuration properties. Quick example. Assume I have `runtime.properties` 
with:
   
   ```text
   foo=bar
   ```
   
   For a specific run (for testing, specific need, etc.) I specify 
`-Dfoo=mumble` on the JVM command line. In most systems, the system property 
will override the file property. But, according to the code, in Druid the 
opposite happens. That is, the `-D` option is ignored. Further, one can 
override any system property from the properties file, even those which should 
not be changed (such as CPUs, user name, home directory, etc.)
   
   The problem occurs in `PropertiesModule`:
   
   ```java
     public void configure(Binder binder)
     {
       final Properties fileProps = new Properties();
       Properties systemProps = System.getProperties();
   
       Properties props = new Properties(fileProps);
       props.putAll(systemProps);
   
       for (String propertiesFile : propertiesFiles) {
         ...
               fileProps.load(in);
        ...
       }
   ```
   
   The implementation of `load()` simply overwrites any existing property 
value. We use this to allow `runtime.properties` to override 
`common.runtime.properties`.
   
   ### Suggested change
   
   Simply move the `props.putAll(systemProps);` to come after all file 
properties are loaded.
   
   The change is trivial. The question, however, is if this design is 
intentional, and if so, why? Do we have use cases that depend on the ability to 
replace (for Druid's use) system-defined properties?


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to