This is an automated email from the ASF dual-hosted git repository.

epugh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new 28ac2a57447 SOLR-18167: Fix the original PR #4507 to cover more use 
cases in mapping old to new system property names (#4535)
28ac2a57447 is described below

commit 28ac2a574470bc62f32a7b3594745ba37a6f3b7f
Author: Eric Pugh <[email protected]>
AuthorDate: Fri Jun 19 11:33:45 2026 -0400

    SOLR-18167: Fix the original PR #4507 to cover more use cases in mapping 
old to new system property names (#4535)
    
    Co-authored-by: Utsav Parmar <[email protected]>
---
 solr/packaging/test/test_start_solr.bats           |  2 +-
 .../java/org/apache/solr/common/util/EnvUtils.java | 22 ++++++----------------
 .../org/apache/solr/common/util/EnvUtilsTest.java  | 19 +++++++++++++++++--
 3 files changed, 24 insertions(+), 19 deletions(-)

diff --git a/solr/packaging/test/test_start_solr.bats 
b/solr/packaging/test/test_start_solr.bats
index f85c0e5918d..be365e7a65b 100644
--- a/solr/packaging/test/test_start_solr.bats
+++ b/solr/packaging/test/test_start_solr.bats
@@ -85,7 +85,7 @@ teardown() {
 
 @test "deprecated system properties converted to modern properties" {
   solr start -Ddisable.config.edit=true
-  assert_file_contains "${SOLR_LOGS_DIR}/solr.log" 'You are passing in 
deprecated system property disable.config.edit and should upgrade to using 
solr.api.config.edit.enabled instead.'
+  assert_file_contains "${SOLR_LOGS_DIR}/solr.log" 'Deprecated system property 
disable.config.edit has been replaced by solr.api.config.edit.enabled'
 }
 
 @test "start with custom jetty options" {
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/EnvUtils.java 
b/solr/solrj/src/java/org/apache/solr/common/util/EnvUtils.java
index d0b24ca0f31..031116ba23e 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/EnvUtils.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/EnvUtils.java
@@ -75,7 +75,7 @@ public class EnvUtils {
           CUSTOM_MAPPINGS.put(key, props.getProperty(key));
         }
         for (String key : deprecatedProps.stringPropertyNames()) {
-          DEPRECATED_MAPPINGS.put(deprecatedProps.getProperty(key), key);
+          
DEPRECATED_MAPPINGS.put(camelCaseToDotSeparated(deprecatedProps.getProperty(key)),
 key);
         }
         init(false, System.getenv(), System.getProperties());
       }
@@ -217,24 +217,14 @@ public class EnvUtils {
     }
 
     for (String deprecatedKey : sysProperties.stringPropertyNames()) {
-      String lookupKey = findDeprecatedMappingKey(deprecatedKey);
-      if (lookupKey != null) {
-        applyDeprecatedPropertyMapping(deprecatedKey, lookupKey, 
sysProperties);
+      var dotKey = camelCaseToDotSeparated(deprecatedKey);
+      if (DEPRECATED_MAPPINGS.containsKey(dotKey)
+          || DEPRECATED_MAPPINGS.containsKey("!" + dotKey)) {
+        applyDeprecatedPropertyMapping(deprecatedKey, dotKey, sysProperties);
       }
     }
   }
 
-  // "-D" flags land in system properties as typed - often camelCase - but our 
mapping file uses
-  // dot-separated keys, so normalise before looking up.
-  private static String findDeprecatedMappingKey(String sysPropKey) {
-    var dotKey = camelCaseToDotSeparated(sysPropKey);
-    return isInDeprecatedMappings(dotKey) ? dotKey : null;
-  }
-
-  private static boolean isInDeprecatedMappings(String key) {
-    return DEPRECATED_MAPPINGS.containsKey(key) || 
DEPRECATED_MAPPINGS.containsKey("!" + key);
-  }
-
   private static void applyDeprecatedPropertyMapping(
       String deprecatedKey, String lookupKey, Properties sysProperties) {
     var newPropName =
@@ -242,7 +232,7 @@ public class EnvUtils {
     var newValue =
         DEPRECATED_MAPPINGS.containsKey(lookupKey)
             ? sysProperties.getProperty(deprecatedKey)
-            : String.valueOf(!Boolean.getBoolean(deprecatedKey));
+            : 
String.valueOf(!Boolean.parseBoolean(sysProperties.getProperty(deprecatedKey)));
     log.warn(
         "Deprecated system property {} has been replaced by {}. Support for 
the old property will be removed in a future version of Solr.",
         deprecatedKey,
diff --git a/solr/solrj/src/test/org/apache/solr/common/util/EnvUtilsTest.java 
b/solr/solrj/src/test/org/apache/solr/common/util/EnvUtilsTest.java
index cce0a483bcb..346aee08b42 100644
--- a/solr/solrj/src/test/org/apache/solr/common/util/EnvUtilsTest.java
+++ b/solr/solrj/src/test/org/apache/solr/common/util/EnvUtilsTest.java
@@ -103,7 +103,6 @@ public class EnvUtilsTest extends SolrTestCase {
   public void testDeprecated() {
     var env = Map.of("SOLR_OVERWRITE", "overwritten");
     Properties defaultProps = new Properties();
-    // Use the already converted version, not the original camelCase.
     defaultProps.setProperty("solr.config.set.forbidden.file.types", 
"xml,json,jar");
 
     EnvUtils.init(false, env, defaultProps);
@@ -111,13 +110,29 @@ public class EnvUtilsTest extends SolrTestCase {
   }
 
   @Test
-  public void deprecatedCamelCaseDFlagIsTranslatedToCurrentPropertyName() {
+  public void deprecatedCamelCaseSystemPropertyIsMigratedToCurrentName() {
     Properties sysprops = new Properties();
     sysprops.setProperty("solr.auth.jwt.allowOutboundHttp", "true");
     EnvUtils.init(false, Map.of(), sysprops);
     
assertTrue(EnvUtils.getPropertyAsBool("solr.auth.jwt.outbound.http.enabled"));
   }
 
+  @Test
+  public void deprecatedCamelCaseOldNameInMappingsFileIsTranslated() {
+    Properties sysprops = new Properties();
+    sysprops.setProperty("collection.configName", "techproducts");
+    EnvUtils.init(false, Map.of(), sysprops);
+    assertEquals("techproducts", 
EnvUtils.getProperty("solr.configset.bootstrap.config.name"));
+  }
+
+  @Test
+  public void 
deprecatedCamelCaseInvertedPropertyIsTranslatedAndValueIsFlipped() {
+    Properties sysprops = new Properties();
+    sysprops.setProperty("solr.disableFingerprint", "true");
+    EnvUtils.init(true, Map.of(), sysprops);
+    
assertFalse(EnvUtils.getPropertyAsBool("solr.index.replication.fingerprint.enabled"));
+  }
+
   @Test
   public void testFlippingDisabledToEnabledPropertyName() {
 

Reply via email to