You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2017/02/16 13:47:33 UTC

[43/50] lucene-solr:jira/solr-9858: SOLR-10094: /export handler (master only) loses the sort deep into the result set

SOLR-10094: /export handler (master only) loses the sort deep into the result set


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/aa7e980d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/aa7e980d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/aa7e980d

Branch: refs/heads/jira/solr-9858
Commit: aa7e980d3b900613e0b403d470e87f367788523f
Parents: 59b2a62
Author: Joel Bernstein <jb...@apache.org>
Authored: Sat Feb 4 23:48:03 2017 -0500
Committer: Joel Bernstein <jb...@apache.org>
Committed: Wed Feb 15 13:49:31 2017 -0500

----------------------------------------------------------------------
 .../java/org/apache/solr/handler/ExportWriter.java | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aa7e980d/solr/core/src/java/org/apache/solr/handler/ExportWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/ExportWriter.java b/solr/core/src/java/org/apache/solr/handler/ExportWriter.java
index e432f94..8bdd959 100644
--- a/solr/core/src/java/org/apache/solr/handler/ExportWriter.java
+++ b/solr/core/src/java/org/apache/solr/handler/ExportWriter.java
@@ -1254,7 +1254,6 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
   class StringValue implements SortValue {
 
     protected SortedDocValues vals;
-    protected SortedDocValues segmentVals[];
 
     protected MultiDocValues.OrdinalMap ordinalMap;
     protected LongValues globalOrds;
@@ -1264,11 +1263,11 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
     protected int segment;
     protected int currentOrd;
     protected IntComp comp;
+    protected int lastDocID;
 
     public StringValue(SortedDocValues vals, String field, IntComp comp)  {
       this.vals = vals;
       if(vals instanceof MultiDocValues.MultiSortedDocValues) {
-        this.segmentVals = ((MultiDocValues.MultiSortedDocValues) vals).values;
         this.ordinalMap = ((MultiDocValues.MultiSortedDocValues) vals).mapping;
       }
       this.field = field;
@@ -1281,6 +1280,13 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
     }
 
     public void setCurrentValue(int docId) throws IOException {
+
+      if (docId < lastDocID) {
+        throw new AssertionError("docs were sent out-of-order: lastDocID=" + lastDocID + " vs doc=" + docId);
+      }
+
+      lastDocID = docId;
+
       if (docId > currentVals.docID()) {
         currentVals.advance(docId);
       }
@@ -1301,14 +1307,13 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
       this.currentOrd = v.currentOrd;
     }
 
-    public void setNextReader(LeafReaderContext context) {
+    public void setNextReader(LeafReaderContext context) throws IOException {
       segment = context.ord;
       if(ordinalMap != null) {
         globalOrds = ordinalMap.getGlobalOrds(segment);
-        currentVals = segmentVals[segment];
-      } else {
-        currentVals = vals;
       }
+      currentVals = DocValues.getSorted(context.reader(), field);
+      lastDocID = 0;
     }
 
     public void reset() {