You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ja...@apache.org on 2024/01/26 15:11:14 UTC
(solr) branch branch_9x updated: SOLR-17126 Cut over System.getProperty() to EnvUtils.getProperty() for modules (backport-9x) (#2215)
This is an automated email from the ASF dual-hosted git repository.
janhoy pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/branch_9x by this push:
new 252688d76fc SOLR-17126 Cut over System.getProperty() to EnvUtils.getProperty() for modules (backport-9x) (#2215)
252688d76fc is described below
commit 252688d76fc1adb5b32a3ea6998dbc71957f613b
Author: Jan Høydahl <ja...@apache.org>
AuthorDate: Fri Jan 26 16:11:07 2024 +0100
SOLR-17126 Cut over System.getProperty() to EnvUtils.getProperty() for modules (backport-9x) (#2215)
---
solr/CHANGES.txt | 2 +-
.../extraction/ExtractingRequestHandlerTest.java | 3 +-
.../solr/security/hadoop/HadoopAuthPlugin.java | 3 +-
.../solr/security/hadoop/KerberosPlugin.java | 33 ++++++++++++----------
.../hadoop/HadoopSSLCredentialProvider.java | 5 ++--
.../client/solrj/impl/Krb5HttpClientUtils.java | 3 +-
.../solr/security/hadoop/HadoopTestUtil.java | 3 +-
.../solr/security/hadoop/ImpersonationUtil.java | 3 +-
.../solr/security/hadoop/KerberosTestServices.java | 3 +-
.../hadoop/TestImpersonationWithHadoopAuth.java | 3 +-
.../TestSolrCloudWithSecureImpersonation.java | 6 ++--
.../configuration/HadoopSSLConfigurationsTest.java | 5 ++--
.../org/apache/solr/hdfs/HdfsDirectoryFactory.java | 9 +++---
.../org/apache/solr/hdfs/index/CheckHdfsIndex.java | 3 +-
.../org/apache/hadoop/fs/RawLocalFileSystem.java | 5 ++--
.../test/org/apache/hadoop/util/PlatformName.java | 11 ++++----
.../apache/solr/hdfs/HdfsDirectoryFactoryTest.java | 3 +-
.../org/apache/solr/hdfs/cloud/HdfsTestUtil.java | 16 ++++-------
.../apache/solr/security/jwt/JWTIssuerConfig.java | 3 +-
.../solr/security/jwt/JWTAuthPluginTest.java | 3 +-
.../algorithms/TeamDraftInterleaving.java | 3 +-
.../solr/opentelemetry/OtelTracerConfigurator.java | 17 +++++------
.../opentelemetry/OtelTracerConfiguratorTest.java | 3 +-
.../apache/solr/s3/S3BackupRepositoryConfig.java | 15 ++++------
24 files changed, 89 insertions(+), 74 deletions(-)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 6095d152234..7120becc67a 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -28,7 +28,7 @@ Dependency Upgrades
Other Changes
---------------------
-(No changes)
+* SOLR-17126: Cut over System.getProperty to EnvUtils.getProperty (janhoy)
================== 9.5.0 ==================
New Features
diff --git a/solr/modules/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTest.java b/solr/modules/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTest.java
index 8c88447bbc1..ede60a108d3 100644
--- a/solr/modules/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTest.java
+++ b/solr/modules/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTest.java
@@ -24,6 +24,7 @@ import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.util.ContentStream;
import org.apache.solr.common.util.ContentStreamBase;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
@@ -45,7 +46,7 @@ public class ExtractingRequestHandlerTest extends SolrTestCaseJ4 {
if (!tzDisplayName.matches("[A-Za-z]{3,}([+-]\\d\\d(:\\d\\d)?)?")) {
assertTrue(
"Is some other JVM affected? Or bad regex? TzDisplayName: " + tzDisplayName,
- System.getProperty("java.version").startsWith("11"));
+ EnvUtils.getProperty("java.version").startsWith("11"));
assumeTrue(
"SOLR-12759 JDK 11 (1st release) and Tika 1.x can result in extracting dates in a bad format.",
false);
diff --git a/solr/modules/hadoop-auth/src/java/org/apache/solr/security/hadoop/HadoopAuthPlugin.java b/solr/modules/hadoop-auth/src/java/org/apache/solr/security/hadoop/HadoopAuthPlugin.java
index 3e9d904d6f9..f878ef49b2c 100644
--- a/solr/modules/hadoop-auth/src/java/org/apache/solr/security/hadoop/HadoopAuthPlugin.java
+++ b/solr/modules/hadoop-auth/src/java/org/apache/solr/security/hadoop/HadoopAuthPlugin.java
@@ -40,6 +40,7 @@ import org.apache.solr.client.solrj.impl.Krb5HttpClientBuilder;
import org.apache.solr.cloud.ZkController;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrException.ErrorCode;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.security.AuthenticationPlugin;
import org.slf4j.Logger;
@@ -161,7 +162,7 @@ public class HadoopAuthPlugin extends AuthenticationPlugin {
for (String configName : authConfigNames) {
String systemProperty = sysPropPrefix + configName;
String defaultConfigVal = authConfigDefaults.get(configName);
- String configVal = System.getProperty(systemProperty, defaultConfigVal);
+ String configVal = EnvUtils.getProperty(systemProperty, defaultConfigVal);
if (configVal != null) {
params.put(configName, configVal);
}
diff --git a/solr/modules/hadoop-auth/src/java/org/apache/solr/security/hadoop/KerberosPlugin.java b/solr/modules/hadoop-auth/src/java/org/apache/solr/security/hadoop/KerberosPlugin.java
index 34729db1f1d..673e485667a 100644
--- a/solr/modules/hadoop-auth/src/java/org/apache/solr/security/hadoop/KerberosPlugin.java
+++ b/solr/modules/hadoop-auth/src/java/org/apache/solr/security/hadoop/KerberosPlugin.java
@@ -43,6 +43,7 @@ import org.apache.solr.cloud.ZkController;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.cloud.SecurityAwareZkACLProvider;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.request.SolrRequestInfo;
import org.apache.solr.security.AuthenticationPlugin;
@@ -167,13 +168,13 @@ public class KerberosPlugin extends AuthenticationPlugin implements HttpClientBu
// Special handling for the "cookie.domain" based on whether port should be
// appended to the domain. Useful for situations where multiple solr nodes are
// on the same host.
- String usePortStr = System.getProperty(COOKIE_PORT_AWARE_PARAM, null);
+ String usePortStr = EnvUtils.getProperty(COOKIE_PORT_AWARE_PARAM, null);
boolean needPortAwareCookies = (usePortStr == null) ? false : Boolean.parseBoolean(usePortStr);
if (!needPortAwareCookies || !coreContainer.isZooKeeperAware()) {
putParam(params, "cookie.domain", COOKIE_DOMAIN_PARAM, null);
} else { // we need port aware cookies and we are in SolrCloud mode.
- String host = System.getProperty(COOKIE_DOMAIN_PARAM, null);
+ String host = EnvUtils.getProperty(COOKIE_DOMAIN_PARAM, null);
if (host == null) {
throw new SolrException(
ErrorCode.SERVER_ERROR, "Missing required parameter '" + COOKIE_DOMAIN_PARAM + "'.");
@@ -183,17 +184,19 @@ public class KerberosPlugin extends AuthenticationPlugin implements HttpClientBu
}
// check impersonator config
- for (Enumeration<?> e = System.getProperties().propertyNames(); e.hasMoreElements(); ) {
- String key = e.nextElement().toString();
- if (key.startsWith(IMPERSONATOR_PREFIX)) {
- if (!delegationTokenEnabled) {
- throw new SolrException(
- ErrorCode.SERVER_ERROR,
- "Impersonator configuration requires delegation tokens to be enabled: " + key);
- }
- params.put(key, System.getProperty(key));
- }
- }
+ EnvUtils.getProperties()
+ .forEach(
+ (key, value) -> {
+ if (key.startsWith(IMPERSONATOR_PREFIX)) {
+ if (!delegationTokenEnabled) {
+ throw new SolrException(
+ ErrorCode.SERVER_ERROR,
+ "Impersonator configuration requires delegation tokens to be enabled: "
+ + key);
+ }
+ params.put(key, value);
+ }
+ });
// Needed to work around HADOOP-13346
params.put(
@@ -245,7 +248,7 @@ public class KerberosPlugin extends AuthenticationPlugin implements HttpClientBu
String internalParamName,
String externalParamName,
String defaultValue) {
- String value = System.getProperty(externalParamName, defaultValue);
+ String value = EnvUtils.getProperty(externalParamName, defaultValue);
if (value == null) {
throw new SolrException(
ErrorCode.SERVER_ERROR, "Missing required parameter '" + externalParamName + "'.");
@@ -255,7 +258,7 @@ public class KerberosPlugin extends AuthenticationPlugin implements HttpClientBu
private void putParamOptional(
Map<String, String> params, String internalParamName, String externalParamName) {
- String value = System.getProperty(externalParamName);
+ String value = EnvUtils.getProperty(externalParamName);
if (value != null) {
params.put(internalParamName, value);
}
diff --git a/solr/modules/hadoop-auth/src/java/org/apache/solr/util/configuration/providers/hadoop/HadoopSSLCredentialProvider.java b/solr/modules/hadoop-auth/src/java/org/apache/solr/util/configuration/providers/hadoop/HadoopSSLCredentialProvider.java
index 481aa4d96c3..b1926dad454 100644
--- a/solr/modules/hadoop-auth/src/java/org/apache/solr/util/configuration/providers/hadoop/HadoopSSLCredentialProvider.java
+++ b/solr/modules/hadoop-auth/src/java/org/apache/solr/util/configuration/providers/hadoop/HadoopSSLCredentialProvider.java
@@ -23,6 +23,7 @@ import java.io.IOException;
import java.lang.invoke.MethodHandles;
import java.util.EnumMap;
import org.apache.hadoop.conf.Configuration;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.util.configuration.providers.AbstractSSLCredentialProvider;
import org.slf4j.Logger;
@@ -40,7 +41,7 @@ public class HadoopSSLCredentialProvider extends AbstractSSLCredentialProvider {
}
public HadoopSSLCredentialProvider(Configuration hadoopConfigurationProvider) {
- if (StrUtils.isNullOrEmpty(System.getProperty(CREDENTIAL_PROVIDER_PATH))) {
+ if (StrUtils.isNullOrEmpty(EnvUtils.getProperty(CREDENTIAL_PROVIDER_PATH))) {
throw new RuntimeException(
"Cannot initialize Hadoop configuration provider without credential provider path. Use "
+ CREDENTIAL_PROVIDER_PATH
@@ -48,7 +49,7 @@ public class HadoopSSLCredentialProvider extends AbstractSSLCredentialProvider {
}
this.hadoopConfigurationProvider = hadoopConfigurationProvider;
hadoopConfigurationProvider.set(
- CREDENTIAL_PROVIDER_PATH, System.getProperty(CREDENTIAL_PROVIDER_PATH));
+ CREDENTIAL_PROVIDER_PATH, EnvUtils.getProperty(CREDENTIAL_PROVIDER_PATH));
}
@Override
diff --git a/solr/modules/hadoop-auth/src/test/org/apache/solr/client/solrj/impl/Krb5HttpClientUtils.java b/solr/modules/hadoop-auth/src/test/org/apache/solr/client/solrj/impl/Krb5HttpClientUtils.java
index 128400ae954..8f78c5035fb 100644
--- a/solr/modules/hadoop-auth/src/test/org/apache/solr/client/solrj/impl/Krb5HttpClientUtils.java
+++ b/solr/modules/hadoop-auth/src/test/org/apache/solr/client/solrj/impl/Krb5HttpClientUtils.java
@@ -20,6 +20,7 @@ import java.lang.invoke.MethodHandles;
import java.net.URI;
import javax.security.auth.login.AppConfigurationEntry;
import javax.security.auth.login.Configuration;
+import org.apache.solr.common.util.EnvUtils;
import org.eclipse.jetty.client.HttpAuthenticationStore;
import org.eclipse.jetty.client.WWWAuthenticationProtocolHandler;
import org.eclipse.jetty.client.util.SPNEGOAuthentication;
@@ -51,7 +52,7 @@ public class Krb5HttpClientUtils {
return this.getType().equals(type);
}
};
- String clientAppName = System.getProperty("solr.kerberos.jaas.appname", "Client");
+ String clientAppName = EnvUtils.getProperty("solr.kerberos.jaas.appname", "Client");
AppConfigurationEntry[] entries = jaasConfig.getAppConfigurationEntry(clientAppName);
if (entries == null) {
log.warn(
diff --git a/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/HadoopTestUtil.java b/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/HadoopTestUtil.java
index 78e0d3f0ffc..2b1955b55f9 100644
--- a/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/HadoopTestUtil.java
+++ b/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/HadoopTestUtil.java
@@ -21,6 +21,7 @@ import java.lang.invoke.MethodHandles;
import org.apache.hadoop.io.nativeio.NativeIO;
import org.apache.lucene.util.Constants;
import org.apache.solr.SolrTestCase;
+import org.apache.solr.common.util.EnvUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -42,7 +43,7 @@ public class HadoopTestUtil {
if (System.getenv("HADOOP_HOME") != null) {
SolrTestCase.fail("Ensure that HADOOP_HOME environment variable is not set.");
}
- if (System.getProperty("hadoop.home.dir") != null) {
+ if (EnvUtils.getProperty("hadoop.home.dir") != null) {
SolrTestCase.fail("Ensure that \"hadoop.home.dir\" Java property is not set.");
}
}
diff --git a/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/ImpersonationUtil.java b/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/ImpersonationUtil.java
index d8cb4c99f7c..d8ef9bd0c24 100644
--- a/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/ImpersonationUtil.java
+++ b/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/ImpersonationUtil.java
@@ -25,6 +25,7 @@ import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.client.solrj.response.CollectionAdminResponse;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.EnvUtils;
/**
* This class implements utility functions required to test the secure impersonation feature for
@@ -38,7 +39,7 @@ public class ImpersonationUtil {
org.apache.hadoop.security.Groups hGroups =
new org.apache.hadoop.security.Groups(new Configuration());
try {
- List<String> g = hGroups.getGroups(System.getProperty("user.name"));
+ List<String> g = hGroups.getGroups(EnvUtils.getProperty("user.name"));
if (g != null && g.size() > 0) {
group = g.get(0);
}
diff --git a/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/KerberosTestServices.java b/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/KerberosTestServices.java
index 7f65706600f..d67b13f82fa 100644
--- a/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/KerberosTestServices.java
+++ b/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/KerberosTestServices.java
@@ -31,6 +31,7 @@ import org.apache.commons.io.file.PathUtils;
import org.apache.hadoop.minikdc.MiniKdc;
import org.apache.solr.client.solrj.impl.Krb5HttpClientBuilder;
import org.apache.solr.client.solrj.util.Constants;
+import org.apache.solr.common.util.EnvUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -139,7 +140,7 @@ public class KerberosTestServices {
clientOptions.put("storeKey", "true");
clientOptions.put("useTicketCache", "false");
clientOptions.put("refreshKrb5Config", "true");
- String jaasProp = System.getProperty("solr.jaas.debug");
+ String jaasProp = EnvUtils.getProperty("solr.jaas.debug");
if (jaasProp != null && "true".equalsIgnoreCase(jaasProp)) {
clientOptions.put("debug", "true");
}
diff --git a/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/TestImpersonationWithHadoopAuth.java b/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/TestImpersonationWithHadoopAuth.java
index 6a1d484c917..f9172efb9f3 100644
--- a/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/TestImpersonationWithHadoopAuth.java
+++ b/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/TestImpersonationWithHadoopAuth.java
@@ -33,6 +33,7 @@ import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.cloud.SolrCloudTestCase;
import org.apache.solr.common.params.ModifiableSolrParams;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.common.util.Utils;
import org.apache.solr.embedded.JettySolrRunner;
import org.apache.solr.servlet.SolrRequestParsers;
@@ -170,7 +171,7 @@ public class TestImpersonationWithHadoopAuth extends SolrCloudTestCase {
@Test
public void testProxyValidateGroup() throws Exception {
try (SolrClient solrClient = newSolrClient()) {
- solrClient.request(getProxyRequest("anyHostUsersGroup", System.getProperty("user.name")));
+ solrClient.request(getProxyRequest("anyHostUsersGroup", EnvUtils.getProperty("user.name")));
assertTrue(ImpersonatorCollectionsHandler.called.get());
}
}
diff --git a/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/TestSolrCloudWithSecureImpersonation.java b/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/TestSolrCloudWithSecureImpersonation.java
index 2975410a442..496ae2b9d7d 100644
--- a/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/TestSolrCloudWithSecureImpersonation.java
+++ b/solr/modules/hadoop-auth/src/test/org/apache/solr/security/hadoop/TestSolrCloudWithSecureImpersonation.java
@@ -37,6 +37,7 @@ import org.apache.solr.client.solrj.response.CollectionAdminResponse;
import org.apache.solr.cloud.MiniSolrCloudCluster;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.common.util.IOUtils;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.embedded.JettySolrRunner;
@@ -59,7 +60,7 @@ public class TestSolrCloudWithSecureImpersonation extends SolrTestCaseJ4 {
org.apache.hadoop.security.Groups hGroups =
new org.apache.hadoop.security.Groups(new Configuration());
try {
- List<String> g = hGroups.getGroups(System.getProperty("user.name"));
+ List<String> g = hGroups.getGroups(EnvUtils.getProperty("user.name"));
if (g != null && g.size() > 0) {
group = g.get(0);
}
@@ -279,7 +280,8 @@ public class TestSolrCloudWithSecureImpersonation extends SolrTestCaseJ4 {
@Test
public void testProxyValidateGroup() throws Exception {
- solrClient.request(getProxyRequest("anyHostUsersGroup", System.getProperty("user.name"), null));
+ solrClient.request(
+ getProxyRequest("anyHostUsersGroup", EnvUtils.getProperty("user.name"), null));
assertTrue(ImpersonatorCollectionsHandler.called.get());
}
diff --git a/solr/modules/hadoop-auth/src/test/org/apache/solr/util/configuration/HadoopSSLConfigurationsTest.java b/solr/modules/hadoop-auth/src/test/org/apache/solr/util/configuration/HadoopSSLConfigurationsTest.java
index 65b4ae96fca..72090ebc42e 100644
--- a/solr/modules/hadoop-auth/src/test/org/apache/solr/util/configuration/HadoopSSLConfigurationsTest.java
+++ b/solr/modules/hadoop-auth/src/test/org/apache/solr/util/configuration/HadoopSSLConfigurationsTest.java
@@ -28,6 +28,7 @@ import java.util.Map;
import org.apache.hadoop.conf.Configuration;
import org.apache.lucene.tests.util.TestRuleRestoreSystemProperties;
import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.util.configuration.providers.EnvSSLCredentialProvider;
import org.apache.solr.util.configuration.providers.SysPropSSLCredentialProvider;
import org.apache.solr.util.configuration.providers.hadoop.HadoopSSLCredentialProvider;
@@ -80,7 +81,7 @@ public class HadoopSSLConfigurationsTest extends SolrTestCaseJ4 {
getSutWithMockedHadoopCredentialProvider(
SSLConfigurations.SysProps.SSL_KEY_STORE_PASSWORD, SAMPLE_PW1)
.init();
- MatcherAssert.assertThat(System.getProperty(CLIENT_KEY_STORE_PASSWORD), is(SAMPLE_PW1));
+ MatcherAssert.assertThat(EnvUtils.getProperty(CLIENT_KEY_STORE_PASSWORD), is(SAMPLE_PW1));
}
@Test
@@ -89,7 +90,7 @@ public class HadoopSSLConfigurationsTest extends SolrTestCaseJ4 {
getSutWithMockedHadoopCredentialProvider(
SSLConfigurations.SysProps.SSL_CLIENT_KEY_STORE_PASSWORD, SAMPLE_PW2)
.init();
- MatcherAssert.assertThat(System.getProperty(CLIENT_KEY_STORE_PASSWORD), is(SAMPLE_PW2));
+ MatcherAssert.assertThat(EnvUtils.getProperty(CLIENT_KEY_STORE_PASSWORD), is(SAMPLE_PW2));
}
@Test
diff --git a/solr/modules/hdfs/src/java/org/apache/solr/hdfs/HdfsDirectoryFactory.java b/solr/modules/hdfs/src/java/org/apache/solr/hdfs/HdfsDirectoryFactory.java
index d79aadb1811..39e4e33fa41 100644
--- a/solr/modules/hdfs/src/java/org/apache/solr/hdfs/HdfsDirectoryFactory.java
+++ b/solr/modules/hdfs/src/java/org/apache/solr/hdfs/HdfsDirectoryFactory.java
@@ -52,6 +52,7 @@ import org.apache.solr.cloud.api.collections.SplitShardCmd;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.common.util.IOUtils;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.StrUtils;
@@ -187,7 +188,7 @@ public class HdfsDirectoryFactory extends CachingDirectoryFactory
initKerberos();
}
if (StrUtils.isNullOrEmpty(
- System.getProperty(SplitShardCmd.SHARDSPLIT_CHECKDISKSPACE_ENABLED))) {
+ EnvUtils.getProperty(SplitShardCmd.SHARDSPLIT_CHECKDISKSPACE_ENABLED))) {
System.setProperty(SplitShardCmd.SHARDSPLIT_CHECKDISKSPACE_ENABLED, "false");
}
}
@@ -294,7 +295,7 @@ public class HdfsDirectoryFactory extends CachingDirectoryFactory
boolean getConfig(String name, boolean defaultValue) {
Boolean value = params.getBool(name);
if (value == null) {
- String sysValue = System.getProperty(name);
+ String sysValue = EnvUtils.getProperty(name);
if (sysValue != null) {
value = Boolean.valueOf(sysValue);
}
@@ -305,7 +306,7 @@ public class HdfsDirectoryFactory extends CachingDirectoryFactory
int getConfig(String name, int defaultValue) {
Integer value = params.getInt(name);
if (value == null) {
- String sysValue = System.getProperty(name);
+ String sysValue = EnvUtils.getProperty(name);
if (sysValue != null) {
value = Integer.parseInt(sysValue);
}
@@ -316,7 +317,7 @@ public class HdfsDirectoryFactory extends CachingDirectoryFactory
String getConfig(String name, String defaultValue) {
String value = params.get(name);
if (value == null) {
- value = System.getProperty(name);
+ value = EnvUtils.getProperty(name);
}
return value == null ? defaultValue : value;
}
diff --git a/solr/modules/hdfs/src/java/org/apache/solr/hdfs/index/CheckHdfsIndex.java b/solr/modules/hdfs/src/java/org/apache/solr/hdfs/index/CheckHdfsIndex.java
index 5f786193737..7545b1de326 100644
--- a/solr/modules/hdfs/src/java/org/apache/solr/hdfs/index/CheckHdfsIndex.java
+++ b/solr/modules/hdfs/src/java/org/apache/solr/hdfs/index/CheckHdfsIndex.java
@@ -22,6 +22,7 @@ import org.apache.hadoop.fs.Path;
import org.apache.lucene.index.CheckIndex;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.SuppressForbidden;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.hdfs.HdfsDirectoryFactory;
import org.apache.solr.hdfs.store.HdfsDirectory;
import org.apache.solr.hdfs.util.HdfsUtil;
@@ -74,7 +75,7 @@ public class CheckHdfsIndex {
private static Configuration getConf(Path path) {
Configuration conf = new Configuration();
- String confDir = System.getProperty(HdfsDirectoryFactory.CONFIG_DIRECTORY);
+ String confDir = EnvUtils.getProperty(HdfsDirectoryFactory.CONFIG_DIRECTORY);
HdfsUtil.addHdfsResources(conf, confDir);
String fsScheme = path.toUri().getScheme();
diff --git a/solr/modules/hdfs/src/test/org/apache/hadoop/fs/RawLocalFileSystem.java b/solr/modules/hdfs/src/test/org/apache/hadoop/fs/RawLocalFileSystem.java
index 46ea42e79ac..ecf56782b37 100644
--- a/solr/modules/hdfs/src/test/org/apache/hadoop/fs/RawLocalFileSystem.java
+++ b/solr/modules/hdfs/src/test/org/apache/hadoop/fs/RawLocalFileSystem.java
@@ -33,6 +33,7 @@ import org.apache.hadoop.thirdparty.com.google.common.annotations.VisibleForTest
import org.apache.hadoop.util.Progressable;
import org.apache.hadoop.util.Shell;
import org.apache.hadoop.util.StringUtils;
+import org.apache.solr.common.util.EnvUtils;
import java.io.BufferedOutputStream;
import java.io.DataOutput;
@@ -706,7 +707,7 @@ public class RawLocalFileSystem extends FileSystem {
@Override
public Path getHomeDirectory() {
- return this.makeQualified(new Path(System.getProperty("user.home")));
+ return this.makeQualified(new Path(EnvUtils.getProperty("user.home")));
}
/**
@@ -725,7 +726,7 @@ public class RawLocalFileSystem extends FileSystem {
@Override
protected Path getInitialWorkingDirectory() {
- return this.makeQualified(new Path(System.getProperty("user.dir")));
+ return this.makeQualified(new Path(EnvUtils.getProperty("user.dir")));
}
@Override
diff --git a/solr/modules/hdfs/src/test/org/apache/hadoop/util/PlatformName.java b/solr/modules/hdfs/src/test/org/apache/hadoop/util/PlatformName.java
index 945a3e53c0e..d8a8fb39ab9 100644
--- a/solr/modules/hdfs/src/test/org/apache/hadoop/util/PlatformName.java
+++ b/solr/modules/hdfs/src/test/org/apache/hadoop/util/PlatformName.java
@@ -19,6 +19,7 @@ package org.apache.hadoop.util;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;
import org.apache.solr.client.solrj.util.Constants;
+import org.apache.solr.common.util.EnvUtils;
/**
* A helper class for getting build-info of the java-vm.
@@ -32,15 +33,15 @@ public class PlatformName {
* per the java-vm.
*/
public static final String PLATFORM_NAME =
- (System.getProperty("os.name").startsWith("Windows")
- ? System.getenv("os") : System.getProperty("os.name"))
- + "-" + System.getProperty("os.arch")
- + "-" + System.getProperty("sun.arch.data.model");
+ (EnvUtils.getProperty("os.name").startsWith("Windows")
+ ? System.getenv("os") : EnvUtils.getProperty("os.name"))
+ + "-" + EnvUtils.getProperty("os.arch")
+ + "-" + EnvUtils.getProperty("sun.arch.data.model");
/**
* The java vendor name used in this platform.
*/
- public static final String JAVA_VENDOR_NAME = System.getProperty("java.vendor");
+ public static final String JAVA_VENDOR_NAME = EnvUtils.getProperty("java.vendor");
/**
* A public static variable to indicate the current java vendor is
diff --git a/solr/modules/hdfs/src/test/org/apache/solr/hdfs/HdfsDirectoryFactoryTest.java b/solr/modules/hdfs/src/test/org/apache/solr/hdfs/HdfsDirectoryFactoryTest.java
index 3c0ff3cb293..cf37d6a8736 100644
--- a/solr/modules/hdfs/src/test/org/apache/solr/hdfs/HdfsDirectoryFactoryTest.java
+++ b/solr/modules/hdfs/src/test/org/apache/solr/hdfs/HdfsDirectoryFactoryTest.java
@@ -39,6 +39,7 @@ import org.apache.lucene.tests.util.TestUtil;
import org.apache.solr.SolrIgnoredThreadsFilter;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.cloud.api.collections.SplitShardCmd;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.DirectoryFactory.DirContext;
import org.apache.solr.handler.SnapShooter;
@@ -97,7 +98,7 @@ public class HdfsDirectoryFactoryTest extends SolrTestCaseJ4 {
assertTrue(dataHome.endsWith("/solr1/mock/data"));
assertFalse(
Boolean.parseBoolean(
- System.getProperty(SplitShardCmd.SHARDSPLIT_CHECKDISKSPACE_ENABLED)));
+ EnvUtils.getProperty(SplitShardCmd.SHARDSPLIT_CHECKDISKSPACE_ENABLED)));
System.clearProperty(HdfsDirectoryFactory.HDFS_HOME);
diff --git a/solr/modules/hdfs/src/test/org/apache/solr/hdfs/cloud/HdfsTestUtil.java b/solr/modules/hdfs/src/test/org/apache/solr/hdfs/cloud/HdfsTestUtil.java
index f2452b7fece..98eea035e1b 100644
--- a/solr/modules/hdfs/src/test/org/apache/solr/hdfs/cloud/HdfsTestUtil.java
+++ b/solr/modules/hdfs/src/test/org/apache/solr/hdfs/cloud/HdfsTestUtil.java
@@ -21,7 +21,6 @@ import java.lang.invoke.MethodHandles;
import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
@@ -50,6 +49,7 @@ import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;
import org.apache.hadoop.util.DiskChecker;
import org.apache.lucene.util.Constants;
import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.common.util.IOUtils;
import org.apache.solr.common.util.SuppressForbidden;
import org.apache.solr.hdfs.HdfsDirectoryFactory;
@@ -100,7 +100,7 @@ public class HdfsTestUtil {
if (System.getenv("HADOOP_HOME") != null) {
SolrTestCaseJ4.fail("Ensure that HADOOP_HOME environment variable is not set.");
}
- if (System.getProperty("hadoop.home.dir") != null) {
+ if (EnvUtils.getProperty("hadoop.home.dir") != null) {
SolrTestCaseJ4.fail("Ensure that \"hadoop.home.dir\" Java property is not set.");
}
}
@@ -193,7 +193,7 @@ public class HdfsTestUtil {
System.setProperty("socketTimeout", "90000");
String blockcacheGlobal =
- System.getProperty(
+ EnvUtils.getProperty(
"solr.hdfs.blockcache.global", Boolean.toString(SolrTestCaseJ4.random().nextBoolean()));
System.setProperty("solr.hdfs.blockcache.global", blockcacheGlobal);
// Limit memory usage for HDFS tests
@@ -352,13 +352,9 @@ public class HdfsTestUtil {
System.clearProperty(SolrTestCaseJ4.UPDATELOG_SYSPROP);
// Clear "solr.hdfs." system properties
- Enumeration<?> propertyNames = System.getProperties().propertyNames();
- while (propertyNames.hasMoreElements()) {
- String propertyName = String.valueOf(propertyNames.nextElement());
- if (propertyName.startsWith("solr.hdfs.")) {
- System.clearProperty(propertyName);
- }
- }
+ EnvUtils.getProperties().keySet().stream()
+ .filter(key -> key.startsWith("solr.hdfs."))
+ .forEach(System::clearProperty);
}
}
diff --git a/solr/modules/jwt-auth/src/java/org/apache/solr/security/jwt/JWTIssuerConfig.java b/solr/modules/jwt-auth/src/java/org/apache/solr/security/jwt/JWTIssuerConfig.java
index b7e650c1401..752bfd60780 100644
--- a/solr/modules/jwt-auth/src/java/org/apache/solr/security/jwt/JWTIssuerConfig.java
+++ b/solr/modules/jwt-auth/src/java/org/apache/solr/security/jwt/JWTIssuerConfig.java
@@ -37,6 +37,7 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.apache.solr.common.SolrException;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.common.util.Utils;
import org.jose4j.http.Get;
@@ -78,7 +79,7 @@ public class JWTIssuerConfig {
private Collection<X509Certificate> trustedCerts;
public static boolean ALLOW_OUTBOUND_HTTP =
- Boolean.parseBoolean(System.getProperty("solr.auth.jwt.allowOutboundHttp", "false"));
+ Boolean.parseBoolean(EnvUtils.getProperty("solr.auth.jwt.allowOutboundHttp", "false"));
public static final String ALLOW_OUTBOUND_HTTP_ERR_MSG =
"HTTPS required for IDP communication. Please use SSL or start your nodes with -Dsolr.auth.jwt.allowOutboundHttp=true to allow HTTP for test purposes.";
private static final String DEFAULT_AUTHORIZATION_FLOW =
diff --git a/solr/modules/jwt-auth/src/test/org/apache/solr/security/jwt/JWTAuthPluginTest.java b/solr/modules/jwt-auth/src/test/org/apache/solr/security/jwt/JWTAuthPluginTest.java
index 211b75c1b5f..a5642b9f6cd 100644
--- a/solr/modules/jwt-auth/src/test/org/apache/solr/security/jwt/JWTAuthPluginTest.java
+++ b/solr/modules/jwt-auth/src/test/org/apache/solr/security/jwt/JWTAuthPluginTest.java
@@ -43,6 +43,7 @@ import java.util.Map;
import java.util.Set;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.SolrException;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.common.util.Utils;
import org.apache.solr.security.VerifiedUserRoles;
import org.apache.solr.servlet.LoadAdminUiServlet;
@@ -710,6 +711,6 @@ public class JWTAuthPluginTest extends SolrTestCaseJ4 {
plugin.init(testConfig);
assertEquals(
"http://acmepaymentscorp/oauth/oauth20/token",
- System.getProperty(LoadAdminUiServlet.SYSPROP_CSP_CONNECT_SRC_URLS));
+ EnvUtils.getProperty(LoadAdminUiServlet.SYSPROP_CSP_CONNECT_SRC_URLS));
}
}
diff --git a/solr/modules/ltr/src/java/org/apache/solr/ltr/interleaving/algorithms/TeamDraftInterleaving.java b/solr/modules/ltr/src/java/org/apache/solr/ltr/interleaving/algorithms/TeamDraftInterleaving.java
index af96259660c..b6fa5a252fb 100644
--- a/solr/modules/ltr/src/java/org/apache/solr/ltr/interleaving/algorithms/TeamDraftInterleaving.java
+++ b/solr/modules/ltr/src/java/org/apache/solr/ltr/interleaving/algorithms/TeamDraftInterleaving.java
@@ -23,6 +23,7 @@ import java.util.List;
import java.util.Random;
import java.util.Set;
import org.apache.lucene.search.ScoreDoc;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.ltr.interleaving.Interleaving;
import org.apache.solr.ltr.interleaving.InterleavingResult;
@@ -50,7 +51,7 @@ public class TeamDraftInterleaving implements Interleaving {
static {
// We try to make things reproducible in the context of our tests by initializing the random
// instance based on the current seed
- String seed = System.getProperty("tests.seed");
+ String seed = EnvUtils.getProperty("tests.seed");
if (seed == null) {
RANDOM = new Random();
} else {
diff --git a/solr/modules/opentelemetry/src/java/org/apache/solr/opentelemetry/OtelTracerConfigurator.java b/solr/modules/opentelemetry/src/java/org/apache/solr/opentelemetry/OtelTracerConfigurator.java
index 9f84804a6c6..f9bb5d1cbf0 100644
--- a/solr/modules/opentelemetry/src/java/org/apache/solr/opentelemetry/OtelTracerConfigurator.java
+++ b/solr/modules/opentelemetry/src/java/org/apache/solr/opentelemetry/OtelTracerConfigurator.java
@@ -27,6 +27,7 @@ import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.TracerConfigurator;
import org.slf4j.Logger;
@@ -40,7 +41,7 @@ import org.slf4j.LoggerFactory;
public class OtelTracerConfigurator extends TracerConfigurator {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
// Copy of environment. Can be overridden by tests
- Map<String, String> currentEnv = System.getenv();
+ Map<String, String> currentEnv = EnvUtils.getEnvs();
@Override
public void init(NamedList<?> args) {
@@ -53,8 +54,8 @@ public class OtelTracerConfigurator extends TracerConfigurator {
setDefaultIfNotConfigured("OTEL_TRACES_EXPORTER", "otlp");
setDefaultIfNotConfigured("OTEL_EXPORTER_OTLP_PROTOCOL", "grpc");
setDefaultIfNotConfigured("OTEL_TRACES_SAMPLER", "parentbased_always_on");
- if (System.getProperty("host") != null) {
- addOtelResourceAttributes(Map.of("host.name", System.getProperty("host")));
+ if (EnvUtils.getProperty("host") != null) {
+ addOtelResourceAttributes(Map.of("host.name", EnvUtils.getProperty("host")));
}
final String currentConfig = getCurrentOtelConfigAsString();
@@ -131,13 +132,13 @@ public class OtelTracerConfigurator extends TracerConfigurator {
currentEnv.entrySet().stream()
.filter(e -> e.getKey().startsWith("OTEL_"))
.forEach(entry -> currentConfig.put(entry.getKey(), entry.getValue()));
- System.getProperties().entrySet().stream()
- .filter(e -> e.getKey().toString().startsWith("otel."))
+ EnvUtils.getProperties().entrySet().stream()
+ .filter(e -> e.getKey().startsWith("otel."))
.forEach(
entry -> {
- String key = entry.getKey().toString();
+ String key = entry.getKey();
String envKey = key.toUpperCase(Locale.ROOT).replace('.', '_');
- String value = entry.getValue().toString();
+ String value = entry.getValue();
currentConfig.put(envKey, value);
});
return currentConfig;
@@ -163,7 +164,7 @@ public class OtelTracerConfigurator extends TracerConfigurator {
void setDefaultIfNotConfigured(String envName, String defaultValue) {
String incomingValue = getEnvOrSysprop(envName);
if (incomingValue == null) {
- System.setProperty(envNameToSyspropName(envName), defaultValue);
+ EnvUtils.setProperty(envNameToSyspropName(envName), defaultValue);
if (log.isDebugEnabled()) {
log.debug("Using default setting {}={}", envName, getEnvOrSysprop(envName));
}
diff --git a/solr/modules/opentelemetry/src/test/org/apache/solr/opentelemetry/OtelTracerConfiguratorTest.java b/solr/modules/opentelemetry/src/test/org/apache/solr/opentelemetry/OtelTracerConfiguratorTest.java
index df2692f1066..44a3c1b7347 100644
--- a/solr/modules/opentelemetry/src/test/org/apache/solr/opentelemetry/OtelTracerConfiguratorTest.java
+++ b/solr/modules/opentelemetry/src/test/org/apache/solr/opentelemetry/OtelTracerConfiguratorTest.java
@@ -22,6 +22,7 @@ import java.util.List;
import java.util.Map;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.cloud.MiniSolrCloudCluster;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.common.util.ExecutorUtil;
import org.apache.solr.common.util.NamedList;
import org.junit.After;
@@ -117,7 +118,7 @@ public class OtelTracerConfiguratorTest extends SolrTestCaseJ4 {
GlobalTracer.get().toString().contains("ClosableTracerShim"));
assertEquals(
List.of("host.name=my.solr.host", "foo=bar"),
- List.of(System.getProperty("otel.resource.attributes").split(",")));
+ List.of(EnvUtils.getProperty("otel.resource.attributes").split(",")));
} finally {
cluster.shutdown();
System.clearProperty("otel.resource.attributes");
diff --git a/solr/modules/s3-repository/src/java/org/apache/solr/s3/S3BackupRepositoryConfig.java b/solr/modules/s3-repository/src/java/org/apache/solr/s3/S3BackupRepositoryConfig.java
index 666fd5f9242..fcc5fc6ba08 100644
--- a/solr/modules/s3-repository/src/java/org/apache/solr/s3/S3BackupRepositoryConfig.java
+++ b/solr/modules/s3-repository/src/java/org/apache/solr/s3/S3BackupRepositoryConfig.java
@@ -16,13 +16,12 @@
*/
package org.apache.solr.s3;
-import java.util.Locale;
+import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.common.util.NamedList;
/**
* Class representing the {@code backup} S3 config bundle specified in solr.xml. All user-provided
- * config can be overridden via environment variables (use uppercase, with '_' instead of '.'), see
- * {@link S3BackupRepositoryConfig#toEnvVar}.
+ * config can be overridden via environment variables SOLR_FOO_BAR or system property solr.foo.bar.
*/
public class S3BackupRepositoryConfig {
@@ -59,7 +58,7 @@ public class S3BackupRepositoryConfig {
}
private static String getStringConfig(NamedList<?> config, String property) {
- String envProp = System.getenv().get(toEnvVar(property));
+ String envProp = EnvUtils.getProperty(property);
if (envProp == null) {
Object configProp = config.get(property);
return configProp == null ? null : configProp.toString();
@@ -73,7 +72,7 @@ public class S3BackupRepositoryConfig {
}
private static int getIntConfig(NamedList<?> config, String property, int def) {
- String envProp = System.getenv().get(toEnvVar(property));
+ String envProp = EnvUtils.getProperty(property);
if (envProp == null) {
Object configProp = config.get(property);
return configProp instanceof Integer ? (int) configProp : def;
@@ -88,7 +87,7 @@ public class S3BackupRepositoryConfig {
}
private static boolean getBooleanConfig(NamedList<?> config, String property, boolean def) {
- String envProp = System.getenv().get(toEnvVar(property));
+ String envProp = EnvUtils.getProperty(property);
if (envProp == null) {
Boolean configProp = config.getBooleanArg(property);
return configProp == null ? def : configProp;
@@ -96,8 +95,4 @@ public class S3BackupRepositoryConfig {
return Boolean.parseBoolean(envProp);
}
}
-
- private static String toEnvVar(String property) {
- return property.toUpperCase(Locale.ROOT).replace('.', '_');
- }
}