diff --git a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java index 2c7f9924436..5e64e5fbfea 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java @@ -580,12 +580,7 @@ public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throw // If things are not tolerant, abort everything and rethrow if (!tolerant) { shardHandler1.cancelAll(); - if (srsp.getException() instanceof SolrException) { - throw (SolrException) srsp.getException(); - } else { - throw new SolrException( - SolrException.ErrorCode.SERVER_ERROR, srsp.getException()); - } + throwSolrException(srsp.getException()); } else { // Check if the purpose includes 'PURPOSE_GET_TOP_IDS' boolean includesTopIdsPurpose = @@ -598,7 +593,7 @@ public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throw boolean allShardsFailed = includesTopIdsPurpose && allResponsesHaveExceptions; // if all shards fail, fail the request despite shards.tolerant if (allShardsFailed) { - throw (SolrException) srsp.getException(); + throwSolrException(srsp.getException()); } else { rsp.getResponseHeader() .asShallowMap() @@ -663,6 +658,14 @@ public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throw } } + private static void throwSolrException(Throwable shardResponseException) throws SolrException { + if (shardResponseException instanceof SolrException) { + throw (SolrException) shardResponseException; + } else { + throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, shardResponseException); + } + } + private void tagRequestWithRequestId(ResponseBuilder rb) { final boolean ridTaggingDisabled = rb.req.getParams().getBool(CommonParams.DISABLE_REQUEST_ID, DISABLE_REQUEST_ID_DEFAULT);