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 bf46d55baed SOLR-17864: Migrate properties to modern Solr equivalents 
(#3506)
bf46d55baed is described below

commit bf46d55baeda2347494bb2fae4ca8617e098f0b7
Author: Eric Pugh <[email protected]>
AuthorDate: Tue Sep 2 14:36:19 2025 -0400

    SOLR-17864: Migrate properties to modern Solr equivalents (#3506)
    
    * Migrate max.file.store.size and solr.allow.unsafe.resourceloading to 
modern pattern
---
 .../src/java/org/apache/solr/cloud/RecoveryStrategy.java |  4 +++-
 .../java/org/apache/solr/core/SolrResourceLoader.java    | 16 +++++++++-------
 .../java/org/apache/solr/filestore/DistribFileStore.java |  5 +++--
 .../src/test/org/apache/solr/cloud/TestPrepRecovery.java |  2 +-
 .../test/org/apache/solr/core/ResourceLoaderTest.java    | 14 +++++++-------
 .../test/org/apache/solr/util/TestSystemIdResolver.java  |  4 ++--
 .../src/java/org/apache/solr/common/util/EnvUtils.java   |  3 ++-
 .../DeprecatedSystemPropertyMappings.properties          |  3 +++
 8 files changed, 30 insertions(+), 21 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java 
b/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
index a3e73366b5a..4ab9713d017 100644
--- a/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
+++ b/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
@@ -47,6 +47,7 @@ import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.cloud.ZooKeeperException;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.UpdateParams;
+import org.apache.solr.common.util.EnvUtils;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.URLUtil;
 import org.apache.solr.core.CoreContainer;
@@ -919,7 +920,8 @@ public class RecoveryStrategy implements Runnable, 
Closeable {
     // side
     int readTimeout =
         conflictWaitMs
-            + 
Integer.parseInt(System.getProperty("prepRecoveryReadTimeoutExtraWait", 
"8000"));
+            + EnvUtils.getPropertyAsInteger(
+                "solr.cloud.prep.recovery.read.timeout.additional.ms", 8000);
     try (SolrClient client =
         recoverySolrClientBuilder(
                 leaderBaseUrl,
diff --git a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java 
b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
index 3e1165e5899..3f3d2eda3ab 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -59,6 +59,7 @@ import org.apache.lucene.util.ResourceLoader;
 import org.apache.lucene.util.ResourceLoaderAware;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.SolrClassLoader;
+import org.apache.solr.common.util.EnvUtils;
 import org.apache.solr.handler.component.SearchComponent;
 import org.apache.solr.handler.component.ShardHandlerFactory;
 import org.apache.solr.logging.DeprecationLog;
@@ -113,9 +114,9 @@ public class SolrResourceLoader
     "crossdc.update.processor."
   };
   private static final Charset UTF_8 = StandardCharsets.UTF_8;
-  public static final String SOLR_ALLOW_UNSAFE_RESOURCELOADING_PARAM =
-      "solr.allow.unsafe.resourceloading";
-  private final boolean allowUnsafeResourceloading;
+  public static final String SOLR_RESOURCELOADING_RESTRICTED_ENABLED_PARAM =
+      "solr.resourceloading.restricted.enabled";
+  private final boolean restrictUnsafeResourceloading;
 
   private String name = "";
   protected URLClassLoader classLoader;
@@ -191,7 +192,8 @@ public class SolrResourceLoader
    * directory.
    */
   public SolrResourceLoader(Path instanceDir, ClassLoader parent) {
-    allowUnsafeResourceloading = 
Boolean.getBoolean(SOLR_ALLOW_UNSAFE_RESOURCELOADING_PARAM);
+    restrictUnsafeResourceloading =
+        
EnvUtils.getPropertyAsBool(SOLR_RESOURCELOADING_RESTRICTED_ENABLED_PARAM, true);
     if (instanceDir == null) {
       throw new NullPointerException("SolrResourceLoader instanceDir must be 
non-null");
     }
@@ -357,7 +359,7 @@ public class SolrResourceLoader
     Path instanceDir = getInstancePath().normalize();
     Path inInstanceDir = getInstancePath().resolve(resource).normalize();
     Path inConfigDir = 
instanceDir.resolve("conf").resolve(resource).normalize();
-    if (allowUnsafeResourceloading || inInstanceDir.startsWith(instanceDir)) {
+    if (!restrictUnsafeResourceloading || 
inInstanceDir.startsWith(instanceDir)) {
       // The resource is either inside instance dir or we allow unsafe 
loading, so allow testing if
       // file exists
       if (Files.exists(inConfigDir) && Files.isReadable(inConfigDir)) {
@@ -398,7 +400,7 @@ public class SolrResourceLoader
     }
     Path inInstanceDir = instanceDir.resolve(resource).normalize();
     Path inConfigDir = 
instanceDir.resolve("conf").resolve(resource).normalize();
-    if (allowUnsafeResourceloading || 
inInstanceDir.startsWith(instanceDir.normalize())) {
+    if (!restrictUnsafeResourceloading || 
inInstanceDir.startsWith(instanceDir.normalize())) {
       if (Files.exists(inConfigDir) && Files.isReadable(inConfigDir))
         return inConfigDir.normalize().toString();
 
@@ -414,7 +416,7 @@ public class SolrResourceLoader
       // ignore
     }
 
-    return allowUnsafeResourceloading ? resource : null;
+    return restrictUnsafeResourceloading ? null : resource;
   }
 
   /**
diff --git a/solr/core/src/java/org/apache/solr/filestore/DistribFileStore.java 
b/solr/core/src/java/org/apache/solr/filestore/DistribFileStore.java
index a64ba7a0341..94177f65180 100644
--- a/solr/core/src/java/org/apache/solr/filestore/DistribFileStore.java
+++ b/solr/core/src/java/org/apache/solr/filestore/DistribFileStore.java
@@ -49,6 +49,7 @@ import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.request.FileStoreApi;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.SolrZkClient;
+import org.apache.solr.common.util.EnvUtils;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrPaths;
@@ -62,9 +63,9 @@ import org.slf4j.LoggerFactory;
 @NotThreadSafe
 public class DistribFileStore implements FileStore {
   static final long MAX_PKG_SIZE =
-      Long.parseLong(System.getProperty("max.file.store.size", 
String.valueOf(100 * 1024 * 1024)));
+      EnvUtils.getPropertyAsLong("solr.filestore.filesize.max", (long) (100 * 
1024 * 1024));
 
-  /** This is where al the files in the package store are listed */
+  /** This is where all the files in the package store are listed */
   static final String ZK_PACKAGESTORE = "/packagestore";
 
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestPrepRecovery.java 
b/solr/core/src/test/org/apache/solr/cloud/TestPrepRecovery.java
index 01763499af3..6f73cc0e53e 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestPrepRecovery.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestPrepRecovery.java
@@ -37,7 +37,7 @@ public class TestPrepRecovery extends SolrCloudTestCase {
     // the default is 180s and our waitForState times out in 90s,
     // so we lower this so that we can still test timeouts
     System.setProperty("leaderConflictResolveWait", "5000");
-    System.setProperty("prepRecoveryReadTimeoutExtraWait", "1000");
+    System.setProperty("solr.cloud.prep.recovery.read.timeout.additional.ms", 
"1000");
 
     configureCluster(2)
         .addConfig(
diff --git a/solr/core/src/test/org/apache/solr/core/ResourceLoaderTest.java 
b/solr/core/src/test/org/apache/solr/core/ResourceLoaderTest.java
index 78d1f28a029..f2169aca648 100644
--- a/solr/core/src/test/org/apache/solr/core/ResourceLoaderTest.java
+++ b/solr/core/src/test/org/apache/solr/core/ResourceLoaderTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.solr.core;
 
-import static 
org.apache.solr.core.SolrResourceLoader.SOLR_ALLOW_UNSAFE_RESOURCELOADING_PARAM;
+import static 
org.apache.solr.core.SolrResourceLoader.SOLR_RESOURCELOADING_RESTRICTED_ENABLED_PARAM;
 import static org.apache.solr.core.SolrResourceLoader.assertAwareCompatibility;
 import static org.apache.solr.core.SolrResourceLoader.clearCache;
 import static org.hamcrest.core.Is.is;
@@ -51,7 +51,7 @@ public class ResourceLoaderTest extends SolrTestCaseJ4 {
   @After
   public void tearDown() throws Exception {
     super.tearDown();
-    setUnsafeResourceLoading(false);
+    setUnsafeResourceLoadingEnabled(false);
   }
 
   public void testInstanceDir() throws Exception {
@@ -68,7 +68,7 @@ public class ResourceLoaderTest extends SolrTestCaseJ4 {
     Path instanceDir = temp.resolve("instance");
     Files.createDirectories(instanceDir.resolve("conf"));
 
-    setUnsafeResourceLoading(false);
+    setUnsafeResourceLoadingEnabled(false);
     try (SolrResourceLoader loader = new SolrResourceLoader(instanceDir)) {
       // Path traversal
       assertTrue(
@@ -87,7 +87,7 @@ public class ResourceLoaderTest extends SolrTestCaseJ4 {
       assertNull(loader.resourceLocation("\\\\192.168.10.10\\foo"));
     }
 
-    setUnsafeResourceLoading(true);
+    setUnsafeResourceLoadingEnabled(true);
     try (SolrResourceLoader loader = new SolrResourceLoader(instanceDir)) {
       // Path traversal - unsafe but allowed
       loader.openResource("../../dummy.txt").close();
@@ -104,11 +104,11 @@ public class ResourceLoaderTest extends SolrTestCaseJ4 {
     }
   }
 
-  private void setUnsafeResourceLoading(boolean unsafe) {
+  private void setUnsafeResourceLoadingEnabled(boolean unsafe) {
     if (unsafe) {
-      System.setProperty(SOLR_ALLOW_UNSAFE_RESOURCELOADING_PARAM, "true");
+      System.setProperty(SOLR_RESOURCELOADING_RESTRICTED_ENABLED_PARAM, 
"false");
     } else {
-      System.clearProperty(SOLR_ALLOW_UNSAFE_RESOURCELOADING_PARAM);
+      System.clearProperty(SOLR_RESOURCELOADING_RESTRICTED_ENABLED_PARAM);
     }
   }
 
diff --git a/solr/core/src/test/org/apache/solr/util/TestSystemIdResolver.java 
b/solr/core/src/test/org/apache/solr/util/TestSystemIdResolver.java
index 97bd51fe05d..f1a0250b1db 100644
--- a/solr/core/src/test/org/apache/solr/util/TestSystemIdResolver.java
+++ b/solr/core/src/test/org/apache/solr/util/TestSystemIdResolver.java
@@ -29,7 +29,7 @@ public class TestSystemIdResolver extends SolrTestCaseJ4 {
 
   @Override
   public void tearDown() throws Exception {
-    
System.clearProperty(SolrResourceLoader.SOLR_ALLOW_UNSAFE_RESOURCELOADING_PARAM);
+    
System.clearProperty(SolrResourceLoader.SOLR_RESOURCELOADING_RESTRICTED_ENABLED_PARAM);
     super.tearDown();
   }
 
@@ -129,7 +129,7 @@ public class TestSystemIdResolver extends SolrTestCaseJ4 {
   }
 
   public void testUnsafeResolving() throws Exception {
-    
System.setProperty(SolrResourceLoader.SOLR_ALLOW_UNSAFE_RESOURCELOADING_PARAM, 
"true");
+    
System.setProperty(SolrResourceLoader.SOLR_RESOURCELOADING_RESTRICTED_ENABLED_PARAM,
 "false");
 
     final Path testHome = 
SolrTestCaseJ4.getFile("solr/collection1").getParent();
     final ResourceLoader loader =
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 28668882ad4..a540aaabecb 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
@@ -234,7 +234,8 @@ public class EnvUtils {
           setProperty(key, String.valueOf(!Boolean.getBoolean(deprecatedKey)));
         } else if (deprecatedKey.equals("disable.config.edit")
             || deprecatedKey.equals("disable.v2.api")
-            || deprecatedKey.equals("solr.hide.stack.trace")) {
+            || deprecatedKey.equals("solr.hide.stack.trace")
+            || deprecatedKey.equals("solr.allow.unsafe.resourceloading")) {
           log.warn(
               "Converting from legacy system property {} to modern .enabled 
equivalent {} by flipping the boolean property value.",
               deprecatedKey,
diff --git 
a/solr/solrj/src/resources/DeprecatedSystemPropertyMappings.properties 
b/solr/solrj/src/resources/DeprecatedSystemPropertyMappings.properties
index 9c2aa1e519f..12f11d4b057 100644
--- a/solr/solrj/src/resources/DeprecatedSystemPropertyMappings.properties
+++ b/solr/solrj/src/resources/DeprecatedSystemPropertyMappings.properties
@@ -28,3 +28,6 @@ basicauth=solr.security.auth.basicauth.credentials
 cloud.solr.client.max.stale.retries=solr.solrj.cloud.max.stale.retries
 configset.upload.enabled=solr.configset.upload.enabled
 solr.hidden.sys.props=solr.responses.hidden.sys.props
+max.file.store.size=solr.filestore.filesize.max
+prep.recovery.read.timeout.extra.wait=solr.cloud.prep.recovery.read.timeout.additional.ms
+solr.allow.unsafe.resourceloading=solr.resourceloading.restricted.enabled

Reply via email to