diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index eab217b0366..3a1b8d693fa 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -266,6 +266,9 @@ Other Changes * SOLR-2794: change the default of hl.phraseLimit to 5000. (Michael Della Bitta via Robert Muir, Koji, zarni - pull request #11) +* SOLR-5632: Improve response message for reloading a non-existent core. + (Anshum Gupta via Mark Miller) + ================== 4.6.1 ================== Versions of Major Components diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java index 83a1fc2d96d..136d5eaa2a8 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java @@ -725,6 +725,11 @@ public class CoreAdminHandler extends RequestHandlerBase { protected void handleReloadAction(SolrQueryRequest req, SolrQueryResponse rsp) { SolrParams params = req.getParams(); String cname = params.get(CoreAdminParams.CORE); + + if(coreContainer.getCore(cname) == null) { + throw new SolrException(ErrorCode.BAD_REQUEST, "Core with core name [" + cname + "] does not exist."); + } + try { coreContainer.reload(cname); } catch (Exception ex) { @@ -775,7 +780,7 @@ public class CoreAdminHandler extends RequestHandlerBase { core.getUpdateHandler().getSolrCoreState().doRecovery(coreContainer, core.getCoreDescriptor()); } else { - SolrException.log(log, "Cound not find core to call recovery:" + cname); + SolrException.log(log, "Could not find core to call recovery:" + cname); } } finally { // no recoveryStrat close for now diff --git a/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java index cb05b54b5b0..aee061726a4 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java @@ -274,4 +274,20 @@ public class CoreAdminHandlerTest extends SolrTestCaseJ4 { } } + @Test + public void testNonexistentCoreReload() throws Exception { + final CoreAdminHandler admin = new CoreAdminHandler(h.getCoreContainer()); + SolrQueryResponse resp = new SolrQueryResponse(); + + try { + admin.handleRequestBody( + req(CoreAdminParams.ACTION, + CoreAdminParams.CoreAdminAction.RELOAD.toString(), + CoreAdminParams.CORE, "non-existent-core") + , resp); + fail("Was able to successfully reload non-existent-core"); + } catch (Exception e) { + assertEquals("Expected error message for non-existent core.", "Core with core name [non-existent-core] does not exist.", e.getMessage()); + } + } }