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 349b3fb820e..a72f970d951 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 @@ -19,6 +19,7 @@ package org.apache.solr.handler.component; import org.apache.lucene.index.ExitableDirectoryReader; import org.apache.solr.client.solrj.SolrServerException; +import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrException.ErrorCode; import org.apache.solr.common.params.CommonParams; @@ -244,6 +245,17 @@ public class SearchHandler extends RequestHandlerBase implements SolrCoreAware , } } catch (ExitableDirectoryReader.ExitingReaderException ex) { log.warn( "Query: " + req.getParamString() + "; " + ex.getMessage()); + SolrDocumentList r = (SolrDocumentList) rb.rsp.getValues().get("response"); + if(r == null) + r = new SolrDocumentList(); + r.setNumFound(0); + rb.rsp.add("response", r); + if(rb.isDebug()) { + NamedList debug = new NamedList(); + debug.add("explain", new NamedList()); + rb.rsp.add("debug", debug); + } + rb.rsp.getResponseHeader().add("partialResults", Boolean.TRUE); } finally { SolrQueryTimeoutImpl.reset(); } diff --git a/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java b/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java index 2d2c1465bf0..63fbeb6ceec 100644 --- a/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java +++ b/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java @@ -120,6 +120,8 @@ public class TopGroupsShardResponseProcessor implements ShardResponseProcessor { continue; // continue if there was an error and we're tolerant. } NamedList secondPhaseResult = (NamedList) srsp.getSolrResponse().getResponse().get("secondPhase"); + if(secondPhaseResult == null) + continue; Map result = serializer.transformToNative(secondPhaseResult, groupSort, sortWithinGroup, srsp.getShard()); int numFound = 0; float maxScore = Float.NaN;