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:50:51 UTC

[lucene-solr] branch branch_8x 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 branch_8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


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

commit 1710a8a36de225c819cf3e89dd05c325019ac9fe
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 77fd3f2..72851a0 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -92,6 +92,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);
+      }
+    }
+  }
+
 }