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() {