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