You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ds...@apache.org on 2021/06/01 17:50:21 UTC
[solr] branch main updated: SOLR-15421: ConfigSet existence now
checks for solrconfig.xml (#135)
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 f3b4693 SOLR-15421: ConfigSet existence now checks for solrconfig.xml (#135)
f3b4693 is described below
commit f3b4693081ed2bd7194526e902b80278aec92edc
Author: AndrĂ¡s Salamon <an...@melda.info>
AuthorDate: Tue Jun 1 19:50:10 2021 +0200
SOLR-15421: ConfigSet existence now checks for solrconfig.xml (#135)
ConfigSet API now checks for solrconfig.xml when checking for the existence of a configset
---
solr/CHANGES.txt | 2 ++
solr/core/src/java/org/apache/solr/cloud/ConfigSetCmds.java | 4 ----
.../src/java/org/apache/solr/cloud/ZkConfigSetService.java | 6 +++---
.../org/apache/solr/core/FileSystemConfigSetService.java | 4 ++--
.../cloud/OverseerCollectionConfigSetProcessorTest.java | 3 ++-
.../src/test/org/apache/solr/cloud/TestConfigSetsAPI.java | 13 ++++++-------
6 files changed, 15 insertions(+), 17 deletions(-)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index f0fc29b..eed1410 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -129,6 +129,8 @@ when told to. The admin UI now tells it to. (Nazerke Seidan, David Smiley)
* SOLR-15414: Use ConfigSet API instead of Zookeeper data node to list out configsets available in Solr Admin UI. (Nazerke Seidan via Eric Pugh)
+* SOLR-15421: ConfigSet API also checks for solrconfig.xml when checking the existence of a configset (Andras Salamon via David Smiley)
+
Other Changes
----------------------
* SOLR-14656: Autoscaling framework removed (Ishan Chattopadhyaya, noble, Ilan Ginzburg)
diff --git a/solr/core/src/java/org/apache/solr/cloud/ConfigSetCmds.java b/solr/core/src/java/org/apache/solr/cloud/ConfigSetCmds.java
index 5d5983a..8568f14 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ConfigSetCmds.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ConfigSetCmds.java
@@ -184,10 +184,6 @@ public class ConfigSetCmds {
}
private static void deleteConfigSet(String configSetName, boolean force, CoreContainer coreContainer) throws IOException {
- if (!coreContainer.getConfigSetService().checkConfigExists(configSetName)) {
- throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "ConfigSet does not exist to delete: " + configSetName);
- }
-
ZkStateReader zkStateReader = coreContainer.getZkController().getZkStateReader();
for (Map.Entry<String, DocCollection> entry : zkStateReader.getClusterState().getCollectionsMap().entrySet()) {
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkConfigSetService.java b/solr/core/src/java/org/apache/solr/cloud/ZkConfigSetService.java
index 5c0c22b..3db4efe 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkConfigSetService.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkConfigSetService.java
@@ -142,9 +142,9 @@ public class ZkConfigSetService extends ConfigSetService {
@Override
public boolean checkConfigExists(String configName) throws IOException {
try {
- Boolean existsConfig = zkClient.exists(CONFIGS_ZKNODE + "/" + configName, true);
- if (existsConfig == null) return false;
- return existsConfig;
+ Boolean existsSolrConfigXml = zkClient.exists(CONFIGS_ZKNODE + "/" + configName + "/solrconfig.xml", true);
+ if (existsSolrConfigXml == null) return false;
+ return existsSolrConfigXml;
} catch (KeeperException | InterruptedException e) {
throw new IOException("Error checking whether config exists",
SolrZkClient.checkInterrupted(e));
diff --git a/solr/core/src/java/org/apache/solr/core/FileSystemConfigSetService.java b/solr/core/src/java/org/apache/solr/core/FileSystemConfigSetService.java
index 9db6245..a4029a2 100644
--- a/solr/core/src/java/org/apache/solr/core/FileSystemConfigSetService.java
+++ b/solr/core/src/java/org/apache/solr/core/FileSystemConfigSetService.java
@@ -61,8 +61,8 @@ public class FileSystemConfigSetService extends ConfigSetService {
@Override
public boolean checkConfigExists(String configName) throws IOException {
- Path configSetDirectory = configSetBase.resolve(configName);
- return Files.isDirectory(configSetDirectory);
+ Path solrConfigXmlFile= configSetBase.resolve(configName).resolve("solrconfig.xml");
+ return Files.exists(solrConfigXmlFile);
}
@Override
diff --git a/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java b/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
index 82e600e..ab6ac68 100644
--- a/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
@@ -547,7 +547,8 @@ public class OverseerCollectionConfigSetProcessorTest extends SolrTestCaseJ4 {
return null;
}}).when(distribStateManagerMock).makePath(anyString());
- zkClientData.put("/configs/myconfig", new byte[1]);
+ zkClientData.put("/configs/"+CONFIG_NAME, new byte[1]);
+ zkClientData.put("/configs/"+CONFIG_NAME+"/solrconfig.xml", new byte[1]);
when(solrMetricsContextMock.getChildContext(any(Object.class))).thenReturn(solrMetricsContextMock);
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
index 1af32d2..45c5806 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
@@ -1121,10 +1121,6 @@ public class TestConfigSetsAPI extends SolrCloudTestCase {
DeleteNoErrorChecking delete = new DeleteNoErrorChecking();
verifyException(solrClient, delete, NAME);
- // ConfigSet doesn't exist
- delete.setConfigSetName("configSetBogus");
- verifyException(solrClient, delete, "ConfigSet does not exist");
-
// ConfigSet is immutable
delete.setConfigSetName("configSet");
verifyException(solrClient, delete, "Requested delete of immutable ConfigSet");
@@ -1148,11 +1144,16 @@ public class TestConfigSetsAPI extends SolrCloudTestCase {
final SolrClient solrClient = getHttpSolrClient(baseUrl);
final String configSet = "testDelete";
getConfigSetService().uploadConfig(configSet, configset("configset-2"));
+ assertDelete(solrClient, configSet, true);
+ assertDelete(solrClient, "configSetBogus", false);
+ solrClient.close();
+ }
+ private void assertDelete(SolrClient solrClient, String configSet, boolean assertExists) throws IOException, SolrServerException {
SolrZkClient zkClient = new SolrZkClient(cluster.getZkServer().getZkAddress(),
AbstractZkTestCase.TIMEOUT, AbstractZkTestCase.TIMEOUT, null);
try {
- assertTrue(getConfigSetService().checkConfigExists(configSet));
+ assertEquals(assertExists, getConfigSetService().checkConfigExists(configSet));
Delete delete = new Delete();
delete.setConfigSetName(configSet);
@@ -1162,8 +1163,6 @@ public class TestConfigSetsAPI extends SolrCloudTestCase {
} finally {
zkClient.close();
}
-
- solrClient.close();
}
@Test