This is an automated email from the ASF dual-hosted git repository. dsmiley 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 53fe9cddc7b SOLR-16903: Switch CoreContainer.getSolrHome to return Path instead of String (#3204) 53fe9cddc7b is described below commit 53fe9cddc7b309f03ba92926bc02e6af100cdf1a Author: Andrey Bozhko <andyboz...@gmail.com> AuthorDate: Tue Feb 25 00:40:51 2025 -0600 SOLR-16903: Switch CoreContainer.getSolrHome to return Path instead of String (#3204) --- solr/CHANGES.txt | 2 ++ solr/core/src/java/org/apache/solr/core/CoreContainer.java | 5 ++--- solr/core/src/java/org/apache/solr/core/SyntheticSolrCore.java | 3 +-- solr/core/src/java/org/apache/solr/core/ZkContainer.java | 7 +++---- .../src/java/org/apache/solr/filestore/DistribFileStore.java | 3 +-- .../org/apache/solr/handler/admin/SecurityConfHandlerLocal.java | 3 +-- .../java/org/apache/solr/handler/admin/SystemInfoHandler.java | 2 +- solr/core/src/java/org/apache/solr/pkg/SolrPackageLoader.java | 3 +-- solr/core/src/test/org/apache/solr/core/TestConfigSets.java | 2 +- solr/core/src/test/org/apache/solr/core/TestCoreContainer.java | 6 +++--- .../src/test/org/apache/solr/filestore/TestDistribFileStore.java | 3 +-- .../test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java | 2 +- .../test/org/apache/solr/client/solrj/request/TestCoreAdmin.java | 2 +- .../src/test/org/apache/solr/cloud/MiniSolrCloudClusterTest.java | 9 ++------- 14 files changed, 21 insertions(+), 31 deletions(-) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 9162f377b0d..5ea8d6d4722 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -150,6 +150,8 @@ Other Changes * SOLR-17675: Remove DirContext param from DirectoryFactory.create method. (Bruno Roustant, David Smiley) +* SOLR-16903: Switch CoreContainer#getSolrHome to return Path instead of String (Andrey Bozhko) + ================== 9.9.0 ================== New Features --------------------- diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java index 1ed72a71a7a..4a2631c7817 100644 --- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java +++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java @@ -2411,9 +2411,8 @@ public class CoreContainer { } /** The primary path of a Solr server's config, cores, and misc things. Absolute. */ - // TODO return Path - public String getSolrHome() { - return solrHome.toString(); + public Path getSolrHome() { + return solrHome; } /** diff --git a/solr/core/src/java/org/apache/solr/core/SyntheticSolrCore.java b/solr/core/src/java/org/apache/solr/core/SyntheticSolrCore.java index db30474ffd4..f521dbb2c20 100644 --- a/solr/core/src/java/org/apache/solr/core/SyntheticSolrCore.java +++ b/solr/core/src/java/org/apache/solr/core/SyntheticSolrCore.java @@ -17,7 +17,6 @@ package org.apache.solr.core; -import java.nio.file.Path; import java.util.Map; import org.apache.solr.common.SolrException; import org.apache.solr.common.params.CoreAdminParams; @@ -58,7 +57,7 @@ public class SyntheticSolrCore extends SolrCore { CoreDescriptor syntheticCoreDescriptor = new CoreDescriptor( syntheticCoreName, - Path.of(coreContainer.getSolrHome(), syntheticCoreName), + coreContainer.getSolrHome().resolve(syntheticCoreName), coreProps, coreContainer.getContainerProperties(), coreContainer.getZkController()); diff --git a/solr/core/src/java/org/apache/solr/core/ZkContainer.java b/solr/core/src/java/org/apache/solr/core/ZkContainer.java index a8c00bc7cd9..89fc8dbf4a9 100644 --- a/solr/core/src/java/org/apache/solr/core/ZkContainer.java +++ b/solr/core/src/java/org/apache/solr/core/ZkContainer.java @@ -22,7 +22,6 @@ import static org.apache.solr.common.cloud.ZkStateReader.HTTPS_PORT_PROP; import java.io.IOException; import java.lang.invoke.MethodHandles; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeoutException; import java.util.function.Predicate; @@ -87,11 +86,11 @@ public class ZkContainer { // TODO: remove after updating to an slf4j based zookeeper System.setProperty("zookeeper.jmx.log4j.disable", "true"); - String solrHome = cc.getSolrHome(); + Path solrHome = cc.getSolrHome(); if (zkRun != null) { String zkDataHome = - System.getProperty("zkServerDataDir", Paths.get(solrHome).resolve("zoo_data").toString()); - String zkConfHome = System.getProperty("zkServerConfDir", solrHome); + System.getProperty("zkServerDataDir", solrHome.resolve("zoo_data").toString()); + String zkConfHome = System.getProperty("zkServerConfDir", solrHome.toString()); zkServer = new SolrZkServer( stripChroot(zkRun), 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 29bc2e0063a..96b81992d4c 100644 --- a/solr/core/src/java/org/apache/solr/filestore/DistribFileStore.java +++ b/solr/core/src/java/org/apache/solr/filestore/DistribFileStore.java @@ -31,7 +31,6 @@ import java.nio.channels.SeekableByteChannel; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.util.ArrayList; import java.util.Date; @@ -76,7 +75,7 @@ public class DistribFileStore implements FileStore { public DistribFileStore(CoreContainer coreContainer) { this.coreContainer = coreContainer; - this.solrHome = Paths.get(this.coreContainer.getSolrHome()); + this.solrHome = this.coreContainer.getSolrHome(); } @Override diff --git a/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandlerLocal.java b/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandlerLocal.java index 356f355942a..724c2c16da3 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandlerLocal.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandlerLocal.java @@ -23,7 +23,6 @@ import java.io.OutputStream; import java.lang.invoke.MethodHandles; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.Collections; import org.apache.solr.common.SolrException; import org.apache.solr.common.util.CommandOperation; @@ -40,7 +39,7 @@ public class SecurityConfHandlerLocal extends SecurityConfHandler { public SecurityConfHandlerLocal(CoreContainer coreContainer) { super(coreContainer); - securityJsonPath = Paths.get(coreContainer.getSolrHome()).resolve("security.json"); + securityJsonPath = coreContainer.getSolrHome().resolve("security.json"); } /** diff --git a/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java index cb5218bfa71..48e37b699d9 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java @@ -146,7 +146,7 @@ public class SystemInfoHandler extends RequestHandlerBase { } if (cc != null) { rsp.add("solr_home", cc.getSolrHome()); - rsp.add("core_root", cc.getCoreRootDirectory().toString()); + rsp.add("core_root", cc.getCoreRootDirectory()); } rsp.add("lucene", getLuceneInfo()); diff --git a/solr/core/src/java/org/apache/solr/pkg/SolrPackageLoader.java b/solr/core/src/java/org/apache/solr/pkg/SolrPackageLoader.java index 5e25d5f6fce..f3a86dd55d7 100644 --- a/solr/core/src/java/org/apache/solr/pkg/SolrPackageLoader.java +++ b/solr/core/src/java/org/apache/solr/pkg/SolrPackageLoader.java @@ -24,7 +24,6 @@ import java.io.IOException; import java.io.InputStream; import java.lang.invoke.MethodHandles; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -286,7 +285,7 @@ public class SolrPackageLoader implements Closeable { new PackageResourceLoader( "PACKAGE_LOADER: " + parent.name() + ":" + version, paths, - Paths.get(coreContainer.getSolrHome()), + coreContainer.getSolrHome(), coreContainer.getResourceLoader().getClassLoader()); } diff --git a/solr/core/src/test/org/apache/solr/core/TestConfigSets.java b/solr/core/src/test/org/apache/solr/core/TestConfigSets.java index 8bec679b63d..34dc343fa2b 100644 --- a/solr/core/src/test/org/apache/solr/core/TestConfigSets.java +++ b/solr/core/src/test/org/apache/solr/core/TestConfigSets.java @@ -77,7 +77,7 @@ public class TestConfigSets extends SolrTestCaseJ4 { CoreContainer container = null; try { container = setupContainer(TEST_PATH().resolve("configsets").toString()); - Path solrHome = Paths.get(container.getSolrHome()); + Path solrHome = container.getSolrHome(); SolrCore core1 = container.create("core1", Map.of("configSet", "configset-2")); assertThat(core1.getCoreDescriptor().getName(), is("core1")); diff --git a/solr/core/src/test/org/apache/solr/core/TestCoreContainer.java b/solr/core/src/test/org/apache/solr/core/TestCoreContainer.java index bc93c3d6ad0..787bea658bc 100644 --- a/solr/core/src/test/org/apache/solr/core/TestCoreContainer.java +++ b/solr/core/src/test/org/apache/solr/core/TestCoreContainer.java @@ -95,7 +95,7 @@ public class TestCoreContainer extends SolrTestCaseJ4 { try { // instance dir & resource loader for the CC - assertEquals(realSolrHome.toString(), cc.getSolrHome()); + assertEquals(realSolrHome, cc.getSolrHome()); assertEquals(realSolrHome, cc.getResourceLoader().getInstancePath()); } finally { @@ -983,7 +983,7 @@ public class TestCoreContainer extends SolrTestCaseJ4 { // ----- // "fix" the bad collection - Path confDir = Path.of(cc.getSolrHome(), "col_bad", "conf"); + Path confDir = cc.getSolrHome().resolve("col_bad").resolve("conf"); Files.createDirectories(confDir); Files.copy( getFile("solr/collection1/conf/solrconfig-defaults.xml"), @@ -1059,7 +1059,7 @@ public class TestCoreContainer extends SolrTestCaseJ4 { final long col_bad_old_start = getCoreStartTime(cc, "col_bad"); Files.writeString( - Path.of(cc.getSolrHome(), "col_bad", "conf", "solrconfig.xml"), + cc.getSolrHome().resolve("col_bad").resolve("conf").resolve("solrconfig.xml"), "This is giberish, not valid XML <", StandardCharsets.UTF_8); diff --git a/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java b/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java index 95732ea3a1c..1a32a24330f 100644 --- a/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java +++ b/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java @@ -25,7 +25,6 @@ import java.io.IOException; import java.io.InputStream; import java.lang.invoke.MethodHandles; import java.nio.ByteBuffer; -import java.nio.file.Paths; import java.util.Collections; import java.util.List; import java.util.Map; @@ -320,7 +319,7 @@ public class TestDistribFileStore extends SolrCloudTestCase { throws Exception { JettySolrRunner jetty = cluster.getRandomJetty(random()); try (HttpSolrClient client = (HttpSolrClient) jetty.newClient()) { - PackageUtils.uploadKey(bytes, path, Paths.get(jetty.getCoreContainer().getSolrHome())); + PackageUtils.uploadKey(bytes, path, jetty.getCoreContainer().getSolrHome()); final var syncReq = new FileStoreApi.SyncFile(path); final var syncRsp = syncReq.process(client); diff --git a/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java b/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java index 06e9a59f54c..ea03399c2c6 100644 --- a/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/metrics/SolrMetricsIntegrationTest.java @@ -220,7 +220,7 @@ public class SolrMetricsIntegrationTest extends SolrTestCaseJ4 { assertTrue(metrics.containsKey("CONTAINER.version.specification")); assertTrue(metrics.containsKey("CONTAINER.version.implementation")); Gauge<?> g = (Gauge<?>) metrics.get("CONTAINER.fs.path"); - assertEquals(g.getValue(), cc.getSolrHome()); + assertEquals(g.getValue(), cc.getSolrHome().toString()); } @Test diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestCoreAdmin.java b/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestCoreAdmin.java index ddcd76d9a5d..fc68b2d48e7 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestCoreAdmin.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestCoreAdmin.java @@ -80,7 +80,7 @@ public class TestCoreAdmin extends AbstractEmbeddedSolrServerTestCase { cores.getAllowPaths().add(dataDir.toPath()); // Allow the test dir cores.getAllowPaths().add(newCoreInstanceDir.toPath()); // Allow the test dir - File instanceDir = new File(cores.getSolrHome()); + File instanceDir = cores.getSolrHome().toFile(); FileUtils.copyDirectory(instanceDir, new File(newCoreInstanceDir, "newcore")); CoreAdminRequest.Create req = new CoreAdminRequest.Create(); diff --git a/solr/test-framework/src/test/org/apache/solr/cloud/MiniSolrCloudClusterTest.java b/solr/test-framework/src/test/org/apache/solr/cloud/MiniSolrCloudClusterTest.java index 6bf75b0b457..f5454b59657 100644 --- a/solr/test-framework/src/test/org/apache/solr/cloud/MiniSolrCloudClusterTest.java +++ b/solr/test-framework/src/test/org/apache/solr/cloud/MiniSolrCloudClusterTest.java @@ -130,15 +130,10 @@ public class MiniSolrCloudClusterTest extends SolrTestCaseJ4 { jetty.getCoreContainer().getSolrHome() + " vs " + workDir, // mock dirs from createTempDir() don't play nice with startsWith, so we have to use the // string value - Paths.get(jetty.getCoreContainer().getSolrHome()).startsWith(workDir)); + jetty.getCoreContainer().getSolrHome().startsWith(workDir)); assertEquals( jetty.getCoreContainer().getSolrHome(), - jetty - .getCoreContainer() - .getResourceLoader() - .getInstancePath() - .toAbsolutePath() - .toString()); + jetty.getCoreContainer().getResourceLoader().getInstancePath().toAbsolutePath()); assertTrue( CollectionAdminRequest.createCollection("test", 1, 1)