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 2019/06/07 15:49:52 UTC

[lucene-solr] branch master updated: SOLR-13496: Fix distributed grouping related NullPointerException in JSONWriter.writeSolrDocument

This is an automated email from the ASF dual-hosted git repository.

cpoerschke pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/master by this push:
     new 85f4029  SOLR-13496: Fix distributed grouping related NullPointerException in JSONWriter.writeSolrDocument
85f4029 is described below

commit 85f4029c5c4dfe6f622600d82271eeb9d05f87d6
Author: Christine Poerschke <cp...@apache.org>
AuthorDate: Fri Jun 7 16:05:10 2019 +0100

    SOLR-13496: Fix distributed grouping related NullPointerException in JSONWriter.writeSolrDocument
---
 solr/CHANGES.txt                                       |  2 ++
 .../GroupedEndResultTransformer.java                   | 18 ++++++++++++------
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 64ac470..3c0a17e 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -135,6 +135,8 @@ Bug Fixes
 * SOLR-13521: Fix input parameter handling in SchemaRequest.DynamicField and SchemaRequest.FieldTypes (Schema API)
   (Tomás Fernández Löbbe)
 
+* SOLR-13496: Fix distributed grouping related NullPointerException in JSONWriter.writeSolrDocument (Christine Poerschke)
+
 Other Changes
 ----------------------
 
diff --git a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java
index 2c622d4..6757d9c 100644
--- a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java
+++ b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java
@@ -28,6 +28,7 @@ import org.apache.lucene.search.TotalHits;
 import org.apache.lucene.search.grouping.GroupDocs;
 import org.apache.lucene.search.grouping.TopGroups;
 import org.apache.lucene.util.BytesRef;
+import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
@@ -90,9 +91,7 @@ public class GroupedEndResultTransformer implements EndResultTransformer {
             docList.setMaxScore(group.maxScore);
           }
           docList.setStart(rb.getGroupingSpec().getWithinGroupOffset());
-          for (ScoreDoc scoreDoc : group.scoreDocs) {
-            docList.add(solrDocumentSource.retrieve(scoreDoc));
-          }
+          retrieveAndAdd(docList, solrDocumentSource, group.scoreDocs);
           groupResult.add("doclist", docList);
           groups.add(groupResult);
         }
@@ -110,9 +109,7 @@ public class GroupedEndResultTransformer implements EndResultTransformer {
           docList.setMaxScore(queryCommandResult.getMaxScore());
         }
         docList.setStart(rb.getGroupingSpec().getWithinGroupOffset());
-        for (ScoreDoc scoreDoc :queryCommandResult.getTopDocs().scoreDocs){
-          docList.add(solrDocumentSource.retrieve(scoreDoc));
-        }
+        retrieveAndAdd(docList, solrDocumentSource, queryCommandResult.getTopDocs().scoreDocs);
         command.add("doclist", docList);
         commands.add(entry.getKey(), command);
       }
@@ -120,4 +117,13 @@ public class GroupedEndResultTransformer implements EndResultTransformer {
     rb.rsp.add("grouped", commands);
   }
 
+  private static void retrieveAndAdd(SolrDocumentList solrDocumentList, SolrDocumentSource solrDocumentSource, ScoreDoc[] scoreDocs) {
+    for (ScoreDoc scoreDoc : scoreDocs) {
+      SolrDocument solrDocument = solrDocumentSource.retrieve(scoreDoc);
+      if (solrDocument != null) {
+        solrDocumentList.add(solrDocument);
+      }
+    }
+  }
+
 }