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() {