diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 69e168d79c4..d902c3c1a2a 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -226,6 +226,9 @@ Bug Fixes * SOLR-9128: Fix error handling issues in Streaming classes (Joel Bernstein) +* SOLR-8801: /bin/solr create script always returns exit code 0 when a collection/core already exists. + (Khalid Alharbi, Marius Grama via Steve Rowe) + Optimizations ---------------------- * SOLR-8722: Don't force a full ZkStateReader refresh on every Overseer operation. diff --git a/solr/core/src/java/org/apache/solr/util/SolrCLI.java b/solr/core/src/java/org/apache/solr/util/SolrCLI.java index b5960f39dc5..13274847157 100644 --- a/solr/core/src/java/org/apache/solr/util/SolrCLI.java +++ b/solr/core/src/java/org/apache/solr/util/SolrCLI.java @@ -1641,7 +1641,7 @@ public class SolrCLI { String systemInfoUrl = solrUrl+"admin/info/system"; CloseableHttpClient httpClient = getHttpClient(); - Tool tool = null; + ToolBase tool = null; try { Map systemInfo = getJson(httpClient, systemInfoUrl, 2, true); if ("solrcloud".equals(systemInfo.get("mode"))) { @@ -1649,7 +1649,7 @@ public class SolrCLI { } else { tool = new CreateCoreTool(stdout); } - tool.runTool(cli); + tool.runImpl(cli); } finally { closeHttpClient(httpClient); } diff --git a/solr/core/src/test/org/apache/solr/cloud/SolrCloudExampleTest.java b/solr/core/src/test/org/apache/solr/cloud/SolrCloudExampleTest.java index f084c207345..a844db3296b 100644 --- a/solr/core/src/test/org/apache/solr/cloud/SolrCloudExampleTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/SolrCloudExampleTest.java @@ -93,6 +93,10 @@ public class SolrCloudExampleTest extends AbstractFullDistribZkTestBase { ensureAllReplicasAreActive(testCollectionName, "shard2", 2, 2, 10); cloudClient.setDefaultCollection(testCollectionName); + int invalidToolExitStatus = 1; + assertEquals("Collection '" + testCollectionName + "' created even though it already existed", + invalidToolExitStatus, tool.runTool(cli)); + // now index docs like bin/post would do but we can't use SimplePostTool because it uses System.exit when // it encounters an error, which JUnit doesn't like ... log.info("Created collection, now posting example docs!");