You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by cp...@apache.org on 2017/02/24 21:19:55 UTC
[12/50] [abbrv] lucene-solr:jira/solr-6203: SOLR-10020:
CoreAdminHandler silently swallows some errors
SOLR-10020: CoreAdminHandler silently swallows some errors
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/14b36226
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/14b36226
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/14b36226
Branch: refs/heads/jira/solr-6203
Commit: 14b3622608d3312eca32ba749132ce2f8531326a
Parents: cf1cba6
Author: Erick <er...@apache.org>
Authored: Tue Feb 21 21:59:26 2017 -0800
Committer: Erick <er...@apache.org>
Committed: Tue Feb 21 21:59:26 2017 -0800
----------------------------------------------------------------------
solr/CHANGES.txt | 2 ++
.../solr/handler/admin/CoreAdminOperation.java | 24 ++++++++------------
.../client/solrj/request/TestCoreAdmin.java | 10 ++++++++
3 files changed, 22 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/14b36226/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index d4882e9..c358088 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -169,6 +169,8 @@ Bug Fixes
* SOLR-10170: ClassCastException in RecoveryStrategy. (Mark Miller)
+* SOLR-10020: CoreAdminHandler silently swallows some errors. (Mike Drob via Erick Erickson)
+
Optimizations
----------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/14b36226/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
index af3af4d..a5782db 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
@@ -140,21 +140,17 @@ enum CoreAdminOperation implements CoreAdminOp {
REQUESTRECOVERY_OP(REQUESTRECOVERY, it -> {
final SolrParams params = it.req.getParams();
- log().info("It has been requested that we recover: core=" + params.get(CoreAdminParams.CORE));
- new Thread(() -> {
- String cname = params.get(CoreAdminParams.CORE);
- if (cname == null) {
- cname = "";
- }
- try (SolrCore core = it.handler.coreContainer.getCore(cname)) {
- if (core != null) {
- core.getUpdateHandler().getSolrCoreState().doRecovery(it.handler.coreContainer, core.getCoreDescriptor());
- } else {
- SolrException.log(log(), "Could not find core to call recovery:" + cname);
- }
+ final String cname = params.get(CoreAdminParams.CORE, "");
+ log().info("It has been requested that we recover: core=" + cname);
+
+ try (SolrCore core = it.handler.coreContainer.getCore(cname)) {
+ if (core != null) {
+ // This can take a while, but doRecovery is already async so don't worry about it here
+ core.getUpdateHandler().getSolrCoreState().doRecovery(it.handler.coreContainer, core.getCoreDescriptor());
+ } else {
+ throw new SolrException(ErrorCode.BAD_REQUEST, "Unable to locate core " + cname);
}
- }).start();
-
+ }
}),
REQUESTSYNCSHARD_OP(REQUESTSYNCSHARD, new RequestSyncShardOp()),
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/14b36226/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestCoreAdmin.java
----------------------------------------------------------------------
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 19adf35..c8c67ec 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
@@ -17,6 +17,7 @@
package org.apache.solr.client.solrj.request;
import java.io.File;
+import java.io.IOException;
import java.lang.invoke.MethodHandles;
import java.util.Collection;
@@ -28,9 +29,11 @@ import org.apache.lucene.util.LuceneTestCase;
import org.apache.solr.SolrIgnoredThreadsFilter;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
+import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.embedded.AbstractEmbeddedSolrServerTestCase;
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
import org.apache.solr.client.solrj.request.CoreAdminRequest.Create;
+import org.apache.solr.client.solrj.request.CoreAdminRequest.RequestRecovery;
import org.apache.solr.client.solrj.response.CoreAdminResponse;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
@@ -281,6 +284,13 @@ public class TestCoreAdmin extends AbstractEmbeddedSolrServerTestCase {
assertEquals(2, core0Registry.counter("UPDATE./update.requests").getCount());
assertEquals(3, core1Registry.counter("UPDATE./update.requests").getCount());
}
+
+ @Test
+ public void testInvalidRequestRecovery() throws SolrServerException, IOException {
+ RequestRecovery recoverRequestCmd = new RequestRecovery();
+ recoverRequestCmd.setCoreName("non_existing_core");
+ expectThrows(SolrException.class, () -> recoverRequestCmd.process(getSolrAdmin()));
+ }
@BeforeClass
public static void before() {