From 2e2f1fd713db4ac81842c0e6388b6c0ce8a46af6 Mon Sep 17 00:00:00 2001 From: Tommaso Teofili Date: Thu, 13 Dec 2012 09:24:29 +0000 Subject: [PATCH] [SOLR-4150] - added null checks (with log warnings in case of null) to TopGroupsResultTransformer#transformToNative git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1421164 13f79535-47bb-0310-9956-ffa450edef68 --- .../TopGroupsResultTransformer.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java index 0aba67c9515..217348b2596 100644 --- a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java +++ b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java @@ -17,7 +17,6 @@ package org.apache.solr.search.grouping.distributed.shardresultserializer; * limitations under the License. */ -import org.apache.lucene.document.Document; import org.apache.lucene.document.DocumentStoredFieldVisitor; import org.apache.lucene.index.StoredDocument; import org.apache.lucene.search.FieldDoc; @@ -38,6 +37,8 @@ import org.apache.solr.search.grouping.Command; import org.apache.solr.search.grouping.distributed.command.QueryCommand; import org.apache.solr.search.grouping.distributed.command.QueryCommandResult; import org.apache.solr.search.grouping.distributed.command.TopGroupsFieldCommand; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.ArrayList; @@ -53,6 +54,8 @@ public class TopGroupsResultTransformer implements ShardResultTransformer document : documents) { - Object uniqueId = document.get("id").toString(); + Object docId = document.get("id"); + Object uniqueId = null; + if (docId != null) + uniqueId = docId.toString(); + else + log.warn("doc {} has null 'id'", document); Float score = (Float) document.get("score"); if (score == null) { score = Float.NaN; } - Object[] sortValues = ((List) document.get("sortValues")).toArray(); + Object[] sortValues = null; + Object sortValuesVal = document.get("sortValues"); + if (sortValuesVal != null) { + sortValues = ((List) sortValuesVal).toArray(); + } + else { + log.warn("doc {} has null 'sortValues'", document); + } scoreDocs[j++] = new ShardDoc(score, sortValues, uniqueId, shard); } result.put(key, new QueryCommandResult(new TopDocs(totalHits, scoreDocs, maxScore), matches));