You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jb...@apache.org on 2020/12/28 20:00:44 UTC
[lucene-solr] branch jira/SOLR-14608-export updated: SOLR-14608:
Code clean up
This is an automated email from the ASF dual-hosted git repository.
jbernste pushed a commit to branch jira/SOLR-14608-export
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/jira/SOLR-14608-export by this push:
new 4e2cd9a SOLR-14608: Code clean up
4e2cd9a is described below
commit 4e2cd9aaeaeeeed835af6b638faeefab231d7b9a
Author: Joel Bernstein <jb...@apache.org>
AuthorDate: Mon Dec 28 15:00:12 2020 -0500
SOLR-14608: Code clean up
---
.../solr/handler/export/BoolFieldWriter.java | 8 +--
.../solr/handler/export/DateFieldWriter.java | 8 +--
.../solr/handler/export/DoubleFieldWriter.java | 8 +--
.../apache/solr/handler/export/ExportBuffers.java | 35 +++--------
.../apache/solr/handler/export/ExportWriter.java | 72 ++++++++--------------
.../apache/solr/handler/export/FieldWriter.java | 4 +-
.../solr/handler/export/FloatFieldWriter.java | 8 +--
.../apache/solr/handler/export/IntFieldWriter.java | 8 +--
.../solr/handler/export/LongFieldWriter.java | 8 +--
.../solr/handler/export/MultiFieldWriter.java | 10 +--
.../solr/handler/export/StringFieldWriter.java | 29 ++-------
11 files changed, 71 insertions(+), 127 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/handler/export/BoolFieldWriter.java b/solr/core/src/java/org/apache/solr/handler/export/BoolFieldWriter.java
index 0411b42..57c6dab 100644
--- a/solr/core/src/java/org/apache/solr/handler/export/BoolFieldWriter.java
+++ b/solr/core/src/java/org/apache/solr/handler/export/BoolFieldWriter.java
@@ -21,7 +21,7 @@ import java.io.IOException;
import com.carrotsearch.hppc.IntObjectHashMap;
import org.apache.lucene.index.DocValues;
-import org.apache.lucene.index.LeafReader;
+import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.SortedDocValues;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.CharsRefBuilder;
@@ -40,7 +40,7 @@ class BoolFieldWriter extends FieldWriter {
this.fieldType = fieldType;
}
- public boolean write(SortDoc sortDoc, LeafReader reader, MapWriter.EntryWriter ew, int fieldIndex) throws IOException {
+ public boolean write(SortDoc sortDoc, LeafReaderContext readerContext, MapWriter.EntryWriter ew, int fieldIndex) throws IOException {
BytesRef ref;
SortValue sortValue = sortDoc.getSortValue(this.field);
if (sortValue != null) {
@@ -51,7 +51,7 @@ class BoolFieldWriter extends FieldWriter {
}
} else {
// field is not part of 'sort' param, but part of 'fl' param
- int readerOrd = sortDoc.ord;
+ int readerOrd = readerContext.ord;
SortedDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
SortedDocValues sortedDocValues = docValuesCache.get(readerOrd);
@@ -62,7 +62,7 @@ class BoolFieldWriter extends FieldWriter {
}
if(vals == null) {
- vals = DocValues.getSorted(reader, this.field);
+ vals = DocValues.getSorted(readerContext.reader(), this.field);
docValuesCache.put(readerOrd, vals);
}
diff --git a/solr/core/src/java/org/apache/solr/handler/export/DateFieldWriter.java b/solr/core/src/java/org/apache/solr/handler/export/DateFieldWriter.java
index 905f9c3..e44ba08 100644
--- a/solr/core/src/java/org/apache/solr/handler/export/DateFieldWriter.java
+++ b/solr/core/src/java/org/apache/solr/handler/export/DateFieldWriter.java
@@ -22,7 +22,7 @@ import java.util.Date;
import com.carrotsearch.hppc.IntObjectHashMap;
import org.apache.lucene.index.DocValues;
-import org.apache.lucene.index.LeafReader;
+import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.NumericDocValues;
import org.apache.solr.common.MapWriter;
@@ -35,7 +35,7 @@ class DateFieldWriter extends FieldWriter {
this.field = field;
}
- public boolean write(SortDoc sortDoc, LeafReader reader, MapWriter.EntryWriter ew, int fieldIndex) throws IOException {
+ public boolean write(SortDoc sortDoc, LeafReaderContext readerContext, MapWriter.EntryWriter ew, int fieldIndex) throws IOException {
Long val;
SortValue sortValue = sortDoc.getSortValue(this.field);
if (sortValue != null) {
@@ -46,7 +46,7 @@ class DateFieldWriter extends FieldWriter {
}
} else {
// field is not part of 'sort' param, but part of 'fl' param
- int readerOrd = reader.getContext().ord;
+ int readerOrd = readerContext.ord;
NumericDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
NumericDocValues numericDocValues = docValuesCache.get(readerOrd);
@@ -57,7 +57,7 @@ class DateFieldWriter extends FieldWriter {
}
if(vals == null) {
- vals = DocValues.getNumeric(reader, this.field);
+ vals = DocValues.getNumeric(readerContext.reader(), this.field);
docValuesCache.put(readerOrd, vals);
}
diff --git a/solr/core/src/java/org/apache/solr/handler/export/DoubleFieldWriter.java b/solr/core/src/java/org/apache/solr/handler/export/DoubleFieldWriter.java
index 89e1aa0..cb36a75 100644
--- a/solr/core/src/java/org/apache/solr/handler/export/DoubleFieldWriter.java
+++ b/solr/core/src/java/org/apache/solr/handler/export/DoubleFieldWriter.java
@@ -21,7 +21,7 @@ import java.io.IOException;
import com.carrotsearch.hppc.IntObjectHashMap;
import org.apache.lucene.index.DocValues;
-import org.apache.lucene.index.LeafReader;
+import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.NumericDocValues;
import org.apache.solr.common.MapWriter;
@@ -33,7 +33,7 @@ class DoubleFieldWriter extends FieldWriter {
this.field = field;
}
- public boolean write(SortDoc sortDoc, LeafReader reader, MapWriter.EntryWriter ew, int fieldIndex) throws IOException {
+ public boolean write(SortDoc sortDoc, LeafReaderContext readerContext, MapWriter.EntryWriter ew, int fieldIndex) throws IOException {
SortValue sortValue = sortDoc.getSortValue(this.field);
if (sortValue != null) {
if (sortValue.isPresent()) {
@@ -45,7 +45,7 @@ class DoubleFieldWriter extends FieldWriter {
}
} else {
// field is not part of 'sort' param, but part of 'fl' param
- int readerOrd = sortDoc.ord;
+ int readerOrd = readerContext.ord;
NumericDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
NumericDocValues numericDocValues = docValuesCache.get(readerOrd);
@@ -56,7 +56,7 @@ class DoubleFieldWriter extends FieldWriter {
}
if(vals == null) {
- vals = DocValues.getNumeric(reader, this.field);
+ vals = DocValues.getNumeric(readerContext.reader(), this.field);
docValuesCache.put(readerOrd, vals);
}
if (vals.advance(sortDoc.docId) == sortDoc.docId) {
diff --git a/solr/core/src/java/org/apache/solr/handler/export/ExportBuffers.java b/solr/core/src/java/org/apache/solr/handler/export/ExportBuffers.java
index da25344..3ddcdfe 100644
--- a/solr/core/src/java/org/apache/solr/handler/export/ExportBuffers.java
+++ b/solr/core/src/java/org/apache/solr/handler/export/ExportBuffers.java
@@ -28,7 +28,6 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.LongAdder;
import java.util.concurrent.BrokenBarrierException;
-import com.codahale.metrics.Timer;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.search.Sort;
import org.apache.lucene.util.FixedBitSet;
@@ -54,9 +53,6 @@ class ExportBuffers {
final List<LeafReaderContext> leaves;
final ExportWriter exportWriter;
final OutputStream os;
- final Timer writeOutputBufferTimer;
- final Timer fillerWaitTimer;
- final Timer writerWaitTimer;
final IteratorWriter.ItemWriter rawWriter;
final IteratorWriter.ItemWriter writer;
final CyclicBarrier barrier;
@@ -71,7 +67,7 @@ class ExportBuffers {
ExportBuffers(ExportWriter exportWriter, List<LeafReaderContext> leaves, SolrIndexSearcher searcher,
OutputStream os, IteratorWriter.ItemWriter rawWriter, Sort sort, int queueSize, int totalHits,
- Timer writeOutputBufferTimer, Timer fillerWaitTimer, Timer writerWaitTimer, FixedBitSet[] sets) throws IOException {
+ FixedBitSet[] sets) throws IOException {
this.exportWriter = exportWriter;
this.leaves = leaves;
this.os = os;
@@ -84,9 +80,7 @@ class ExportBuffers {
return this;
}
};
- this.writeOutputBufferTimer = writeOutputBufferTimer;
- this.fillerWaitTimer = fillerWaitTimer;
- this.writerWaitTimer = writerWaitTimer;
+
this.bufferOne = new Buffer(queueSize);
this.bufferTwo = new Buffer(queueSize);
this.totalHits = totalHits;
@@ -106,30 +100,29 @@ class ExportBuffers {
long lastOutputCounter = 0;
for (int count = 0; count < totalHits; ) {
// log.debug("--- filler fillOutDocs in {}", fillBuffer);
-
exportWriter.fillOutDocs(mergeIterator, buffer);
count += (buffer.outDocsIndex + 1);
// log.debug("--- filler count={}, exchange buffer from {}", count, buffer);
- Timer.Context timerContext = getFillerWaitTimer().time();
try {
+ long startBufferWait = System.nanoTime();
exchangeBuffers();
+ long endBufferWait = System.nanoTime();
+ log.debug("Waited for write thread:"+Long.toString(((endBufferWait-startBufferWait)/1000000000)));
} finally {
- timerContext.stop();
+
}
+
buffer = getFillBuffer();
if (outputCounter.longValue() > lastOutputCounter) {
lastOutputCounter = outputCounter.longValue();
flushOutput();
}
- // log.debug("--- filler got empty buffer {}", buffer);
}
buffer.outDocsIndex = Buffer.NO_MORE_DOCS;
- // log.debug("--- filler final exchange buffer from {}", buffer);
- Timer.Context timerContext = getFillerWaitTimer().time();
try {
exchangeBuffers();
} finally {
- timerContext.stop();
+
}
buffer = getFillBuffer();
// log.debug("--- filler final got buffer {}", buffer);
@@ -185,18 +178,6 @@ class ExportBuffers {
return fillBuffer;
}
- public Timer getWriteOutputBufferTimer() {
- return writeOutputBufferTimer;
- }
-
- public Timer getFillerWaitTimer() {
- return fillerWaitTimer;
- }
-
- public Timer getWriterWaitTimer() {
- return writerWaitTimer;
- }
-
// decorated writer that keeps track of number of writes
public IteratorWriter.ItemWriter getWriter() {
return writer;
diff --git a/solr/core/src/java/org/apache/solr/handler/export/ExportWriter.java b/solr/core/src/java/org/apache/solr/handler/export/ExportWriter.java
index d278021..158a7cd 100644
--- a/solr/core/src/java/org/apache/solr/handler/export/ExportWriter.java
+++ b/solr/core/src/java/org/apache/solr/handler/export/ExportWriter.java
@@ -17,8 +17,6 @@
package org.apache.solr.handler.export;
-
-
import java.io.Closeable;
import java.io.IOException;
import java.io.OutputStream;
@@ -29,7 +27,6 @@ import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.TreeSet;
-import com.codahale.metrics.Timer;
import org.apache.lucene.index.LeafReader;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.SortedDocValues;
@@ -77,12 +74,12 @@ import org.apache.solr.schema.StrField;
import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.search.SortSpec;
import org.apache.solr.search.SyntaxError;
+import org.eclipse.jetty.util.IO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static java.util.Collections.singletonList;
import static java.util.Collections.singletonMap;
-import java.util.LinkedList;
import static org.apache.solr.common.util.Utils.makeMap;
/**
@@ -118,13 +115,7 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
FixedBitSet[] sets = null;
PushWriter writer;
private String wt;
- final Timer transferBatchToBufferTimer;
- final Timer getMergeIteratorTimer;
- final Timer writeOutputBufferTimer;
- final Timer writerWaitTimer;
- final Timer fillerWaitTimer;
- final Timer topDocsTimer;
- final Timer totalTimer;
+
public ExportWriter(SolrQueryRequest req, SolrQueryResponse res, String wt,
@@ -139,13 +130,6 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
// may be too tricky to get this right? always use default for now
//this.batchSize = req.getParams().getInt(BATCH_SIZE_PARAM, DEFAULT_BATCH_SIZE);
this.batchSize = DEFAULT_BATCH_SIZE;
- getMergeIteratorTimer = solrMetricsContext.timer("createMergeIterator", metricsPath);
- transferBatchToBufferTimer = solrMetricsContext.timer("transferBatchToBuffer", metricsPath);
- writeOutputBufferTimer = solrMetricsContext.timer("writeOutputBuffer", metricsPath);
- writerWaitTimer = solrMetricsContext.timer("writerWait", metricsPath);
- fillerWaitTimer = solrMetricsContext.timer("fillerWait", metricsPath);
- topDocsTimer = solrMetricsContext.timer("segTopDocs", metricsPath);
- totalTimer = solrMetricsContext.timer("totalTime", metricsPath);
}
@Override
@@ -188,11 +172,10 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
}
public void write(OutputStream os) throws IOException {
- Timer.Context timerContext = totalTimer.time();
try {
_write(os);
} finally {
- timerContext.stop();
+
}
}
@@ -333,7 +316,6 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
private void transferBatchToBufferForOutput(MergeIterator mergeIterator,
ExportBuffers.Buffer destination) throws IOException {
- Timer.Context timerContext = transferBatchToBufferTimer.time();
try {
int outDocsIndex = -1;
for (int i = 0; i < batchSize; i++) {
@@ -352,7 +334,7 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
}
throw t;
} finally {
- timerContext.stop();
+
}
}
@@ -361,8 +343,15 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
final int queueSize = Math.min(batchSize, totalHits);
- ExportBuffers buffers = new ExportBuffers(this, leaves, req.getSearcher(), os, writer, sort, queueSize, totalHits,
- writeOutputBufferTimer, fillerWaitTimer, writerWaitTimer, sets);
+ ExportBuffers buffers = new ExportBuffers(this,
+ leaves,
+ req.getSearcher(),
+ os,
+ writer,
+ sort,
+ queueSize,
+ totalHits,
+ sets);
if (streamExpression != null) {
@@ -415,7 +404,6 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
log.debug("--- writer interrupted");
break;
}
- Timer.Context timerContext = writeOutputBufferTimer.time();
try {
for (int i = 0; i <= buffer.outDocsIndex; ++i) {
// we're using the raw writer here because there's no potential
@@ -425,14 +413,14 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
writer.add((MapWriter) ew -> writeDoc(currentDoc, leaves, ew, fieldWriters));
}
} finally {
- timerContext.stop();
}
log.debug("--- writer exchanging from {}", buffer);
- timerContext = writerWaitTimer.time();
try {
+ long startExchangeBuffers = System.nanoTime();
buffers.exchangeBuffers();
+ long endExchangeBuffers = System.nanoTime();
+ log.debug("Waited for reader thread:"+Long.toString(((endExchangeBuffers-startExchangeBuffers)/1000000000)));
} finally {
- timerContext.stop();
}
buffer = buffers.getOutputBuffer();
log.debug("--- writer got {}", buffer);
@@ -624,7 +612,7 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
private SegmentIterator[] segmentIterators;
private SortDoc outDoc;
- public MergeIterator(SegmentIterator[] segmentIterators, SortDoc proto) {
+ public MergeIterator(SegmentIterator[] segmentIterators, SortDoc proto) throws IOException {
outDoc = proto.copy();
this.segmentIterators = segmentIterators;
for (int i = 0; i < segmentIterators.length; i++) {
@@ -633,11 +621,10 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
if (sortDoc != null) {
set.add(sortDoc);
}
- } catch (Exception e) {
- e.printStackTrace();
+ } catch (IOException e) {
+ log.error("Error in MergeIterator: ", e);
throw e;
}
-
}
}
@@ -646,7 +633,7 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
* Returns null when all docs are iterated.
*/
- public SortDoc next() {
+ public SortDoc next() throws IOException {
SortDoc sortDoc = set.pollLast();
//We've exhausted all documents
if (sortDoc == null) {
@@ -665,7 +652,6 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
}
public MergeIterator getMergeIterator(List<LeafReaderContext> leaves, FixedBitSet[] bits, SortDoc sortDoc) throws IOException {
- Timer.Context timerContext = getMergeIteratorTimer.time();
try {
long totalDocs = 0;
for (int i = 0; i < leaves.size(); i++) {
@@ -682,12 +668,11 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
SegmentIterator[] segmentIterators = new SegmentIterator[leaves.size()];
for (int i = 0; i < segmentIterators.length; i++) {
SortQueue sortQueue = new SortQueue(sizes[i], sortDoc.copy());
- segmentIterators[i] = new SegmentIterator(bits[i], leaves.get(i), sortQueue, sortDoc.copy(), topDocsTimer);
+ segmentIterators[i] = new SegmentIterator(bits[i], leaves.get(i), sortQueue, sortDoc.copy());
}
return new MergeIterator(segmentIterators, sortDoc);
} finally {
- timerContext.stop();
}
}
@@ -698,25 +683,22 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
private final SortDoc sortDoc;
private final LeafReaderContext context;
private final SortDoc[] outDocs;
- private final Timer topDocsTimer;
private SortDoc nextDoc;
private int index;
- public SegmentIterator(FixedBitSet bits, LeafReaderContext context, SortQueue sortQueue, SortDoc sortDoc,
- Timer topDocsTimer) throws IOException {
+ public SegmentIterator(FixedBitSet bits, LeafReaderContext context, SortQueue sortQueue, SortDoc sortDoc) throws IOException {
this.bits = bits;
this.queue = sortQueue;
this.sortDoc = sortDoc;
this.nextDoc = sortDoc.copy();
this.context = context;
this.outDocs = new SortDoc[sortQueue.maxSize];
- this.topDocsTimer = topDocsTimer;
topDocs();
}
- public SortDoc next() {
+ public SortDoc next() throws IOException {
SortDoc sortDoc = null;
if (index > -1) {
sortDoc = outDocs[index--];
@@ -745,8 +727,7 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
return nextDoc;
}
- private void topDocs() {
- Timer.Context timerContext = topDocsTimer.time();
+ private void topDocs() throws IOException {
try {
queue.reset();
SortDoc top = queue.top();
@@ -771,9 +752,10 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
}
}
} catch (Exception e) {
- e.printStackTrace();
+ log.error("Segment Iterator Error:", e);
+ throw new IOException(e);
} finally {
- timerContext.stop();
+
}
}
}
diff --git a/solr/core/src/java/org/apache/solr/handler/export/FieldWriter.java b/solr/core/src/java/org/apache/solr/handler/export/FieldWriter.java
index 9c1361c..fd8cd58 100644
--- a/solr/core/src/java/org/apache/solr/handler/export/FieldWriter.java
+++ b/solr/core/src/java/org/apache/solr/handler/export/FieldWriter.java
@@ -19,9 +19,9 @@ package org.apache.solr.handler.export;
import java.io.IOException;
-import org.apache.lucene.index.LeafReader;
+import org.apache.lucene.index.LeafReaderContext;
import org.apache.solr.common.MapWriter;
abstract class FieldWriter {
- public abstract boolean write(SortDoc sortDoc, LeafReader reader, MapWriter.EntryWriter out, int fieldIndex) throws IOException;
+ public abstract boolean write(SortDoc sortDoc, LeafReaderContext readerContext, MapWriter.EntryWriter out, int fieldIndex) throws IOException;
}
\ No newline at end of file
diff --git a/solr/core/src/java/org/apache/solr/handler/export/FloatFieldWriter.java b/solr/core/src/java/org/apache/solr/handler/export/FloatFieldWriter.java
index 1da4641..9a498f6 100644
--- a/solr/core/src/java/org/apache/solr/handler/export/FloatFieldWriter.java
+++ b/solr/core/src/java/org/apache/solr/handler/export/FloatFieldWriter.java
@@ -21,7 +21,7 @@ import java.io.IOException;
import com.carrotsearch.hppc.IntObjectHashMap;
import org.apache.lucene.index.DocValues;
-import org.apache.lucene.index.LeafReader;
+import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.NumericDocValues;
import org.apache.solr.common.MapWriter;
@@ -33,7 +33,7 @@ class FloatFieldWriter extends FieldWriter {
this.field = field;
}
- public boolean write(SortDoc sortDoc, LeafReader reader, MapWriter.EntryWriter ew, int fieldIndex) throws IOException {
+ public boolean write(SortDoc sortDoc, LeafReaderContext readerContext, MapWriter.EntryWriter ew, int fieldIndex) throws IOException {
SortValue sortValue = sortDoc.getSortValue(this.field);
if (sortValue != null) {
if (sortValue.isPresent()) {
@@ -45,7 +45,7 @@ class FloatFieldWriter extends FieldWriter {
}
} else {
// field is not part of 'sort' param, but part of 'fl' param
- int readerOrd = sortDoc.ord;
+ int readerOrd = readerContext.ord;
NumericDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
NumericDocValues numericDocValues = docValuesCache.get(readerOrd);
@@ -56,7 +56,7 @@ class FloatFieldWriter extends FieldWriter {
}
if(vals == null) {
- vals = DocValues.getNumeric(reader, this.field);
+ vals = DocValues.getNumeric(readerContext.reader(), this.field);
docValuesCache.put(readerOrd, vals);
}
diff --git a/solr/core/src/java/org/apache/solr/handler/export/IntFieldWriter.java b/solr/core/src/java/org/apache/solr/handler/export/IntFieldWriter.java
index 5ad522f..1ce5426 100644
--- a/solr/core/src/java/org/apache/solr/handler/export/IntFieldWriter.java
+++ b/solr/core/src/java/org/apache/solr/handler/export/IntFieldWriter.java
@@ -21,7 +21,7 @@ import java.io.IOException;
import com.carrotsearch.hppc.IntObjectHashMap;
import org.apache.lucene.index.DocValues;
-import org.apache.lucene.index.LeafReader;
+import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.NumericDocValues;
import org.apache.solr.common.MapWriter;
@@ -33,7 +33,7 @@ class IntFieldWriter extends FieldWriter {
this.field = field;
}
- public boolean write(SortDoc sortDoc, LeafReader reader, MapWriter.EntryWriter ew, int fieldIndex) throws IOException {
+ public boolean write(SortDoc sortDoc, LeafReaderContext readerContext, MapWriter.EntryWriter ew, int fieldIndex) throws IOException {
int val;
SortValue sortValue = sortDoc.getSortValue(this.field);
if (sortValue != null) {
@@ -44,7 +44,7 @@ class IntFieldWriter extends FieldWriter {
}
} else {
// field is not part of 'sort' param, but part of 'fl' param
- int readerOrd = sortDoc.ord;
+ int readerOrd = readerContext.ord;
NumericDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
NumericDocValues numericDocValues = docValuesCache.get(readerOrd);
@@ -55,7 +55,7 @@ class IntFieldWriter extends FieldWriter {
}
if(vals == null) {
- vals = DocValues.getNumeric(reader, this.field);
+ vals = DocValues.getNumeric(readerContext.reader(), this.field);
docValuesCache.put(readerOrd, vals);
}
diff --git a/solr/core/src/java/org/apache/solr/handler/export/LongFieldWriter.java b/solr/core/src/java/org/apache/solr/handler/export/LongFieldWriter.java
index 62e503b..457adf4 100644
--- a/solr/core/src/java/org/apache/solr/handler/export/LongFieldWriter.java
+++ b/solr/core/src/java/org/apache/solr/handler/export/LongFieldWriter.java
@@ -21,7 +21,7 @@ import java.io.IOException;
import com.carrotsearch.hppc.IntObjectHashMap;
import org.apache.lucene.index.DocValues;
-import org.apache.lucene.index.LeafReader;
+import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.NumericDocValues;
import org.apache.solr.common.MapWriter;
@@ -34,7 +34,7 @@ class LongFieldWriter extends FieldWriter {
this.field = field;
}
- public boolean write(SortDoc sortDoc, LeafReader reader, MapWriter.EntryWriter ew, int fieldIndex) throws IOException {
+ public boolean write(SortDoc sortDoc, LeafReaderContext readerContext, MapWriter.EntryWriter ew, int fieldIndex) throws IOException {
long val;
SortValue sortValue = sortDoc.getSortValue(this.field);
if (sortValue != null) {
@@ -45,7 +45,7 @@ class LongFieldWriter extends FieldWriter {
}
} else {
// field is not part of 'sort' param, but part of 'fl' param
- int readerOrd = sortDoc.ord;
+ int readerOrd = readerContext.ord;
NumericDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
NumericDocValues numericDocValues = docValuesCache.get(readerOrd);
@@ -56,7 +56,7 @@ class LongFieldWriter extends FieldWriter {
}
if(vals == null) {
- vals = DocValues.getNumeric(reader, this.field);
+ vals = DocValues.getNumeric(readerContext.reader(), this.field);
docValuesCache.put(readerOrd, vals);
}
diff --git a/solr/core/src/java/org/apache/solr/handler/export/MultiFieldWriter.java b/solr/core/src/java/org/apache/solr/handler/export/MultiFieldWriter.java
index 7a02b22..2748b71 100644
--- a/solr/core/src/java/org/apache/solr/handler/export/MultiFieldWriter.java
+++ b/solr/core/src/java/org/apache/solr/handler/export/MultiFieldWriter.java
@@ -53,9 +53,9 @@ class MultiFieldWriter extends FieldWriter {
}
}
- public boolean write(SortDoc sortDoc, LeafReader reader, MapWriter.EntryWriter out, int fieldIndex) throws IOException {
+ public boolean write(SortDoc sortDoc, LeafReaderContext readerContext, MapWriter.EntryWriter out, int fieldIndex) throws IOException {
if (this.fieldType.isPointField()) {
- int readerOrd = sortDoc.ord;
+ int readerOrd = readerContext.ord;
SortedNumericDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
SortedNumericDocValues sortedNumericDocValues = (SortedNumericDocValues) docValuesCache.get(readerOrd);
@@ -66,7 +66,7 @@ class MultiFieldWriter extends FieldWriter {
}
if(vals == null) {
- vals = DocValues.getSortedNumeric(reader, this.field);
+ vals = DocValues.getSortedNumeric(readerContext.reader(), this.field);
docValuesCache.put(readerOrd, vals);
}
@@ -82,7 +82,7 @@ class MultiFieldWriter extends FieldWriter {
});
return true;
} else {
- int readerOrd = sortDoc.ord;
+ int readerOrd = readerContext.ord;
SortedSetDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
SortedSetDocValues sortedSetDocValues = (SortedSetDocValues) docValuesCache.get(readerOrd);
@@ -93,7 +93,7 @@ class MultiFieldWriter extends FieldWriter {
}
if(vals == null) {
- vals = DocValues.getSortedSet(reader, this.field);
+ vals = DocValues.getSortedSet(readerContext.reader(), this.field);
docValuesCache.put(readerOrd, vals);
}
diff --git a/solr/core/src/java/org/apache/solr/handler/export/StringFieldWriter.java b/solr/core/src/java/org/apache/solr/handler/export/StringFieldWriter.java
index b497ec2..fdbc954 100644
--- a/solr/core/src/java/org/apache/solr/handler/export/StringFieldWriter.java
+++ b/solr/core/src/java/org/apache/solr/handler/export/StringFieldWriter.java
@@ -18,12 +18,9 @@
package org.apache.solr.handler.export;
import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
import com.carrotsearch.hppc.IntObjectHashMap;
import org.apache.lucene.index.DocValues;
-import org.apache.lucene.index.LeafReader;
+import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.SortedDocValues;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.CharsRefBuilder;
@@ -57,7 +54,7 @@ class StringFieldWriter extends FieldWriter {
this.fieldType = fieldType;
}
- public boolean write(SortDoc sortDoc, LeafReader reader, MapWriter.EntryWriter ew, int fieldIndex) throws IOException {
+ public boolean write(SortDoc sortDoc, LeafReaderContext readerContext, MapWriter.EntryWriter ew, int fieldIndex) throws IOException {
StringValue stringValue = (StringValue) sortDoc.getSortValue(this.field);
BytesRef ref = null;
@@ -65,7 +62,7 @@ class StringFieldWriter extends FieldWriter {
/*
We already have the top level ordinal used for sorting.
Now let's use it for caching the BytesRef so we don't have to look it up.
- When we have long runs of repeated values do to the sort order of the docs this is huge win.
+ When we have long runs of repeated values do to the sort order of the docs this is a huge win.
*/
if (this.lastOrd == stringValue.currentOrd) {
@@ -77,7 +74,7 @@ class StringFieldWriter extends FieldWriter {
if (ref == null) {
//Reuse the last DocValues object if possible
- int readerOrd = sortDoc.ord;
+ int readerOrd = readerContext.ord;
SortedDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
SortedDocValues sortedDocValues = docValuesCache.get(readerOrd);
@@ -88,7 +85,7 @@ class StringFieldWriter extends FieldWriter {
}
if(vals == null) {
- vals = DocValues.getSorted(reader, this.field);
+ vals = DocValues.getSorted(readerContext.reader(), this.field);
docValuesCache.put(readerOrd, vals);
}
@@ -101,22 +98,6 @@ class StringFieldWriter extends FieldWriter {
lastRef = ref.clone();
}
-
-/*
- if (ref == null) {
- SortedDocValues vals = DocValues.getSorted(reader, this.field);
- if (vals.advance(sortDoc.docId) != sortDoc.docId) {
- return false;
- }
-
- int ord = vals.ordValue();
- ref = vals.lookupOrd(ord);
- lastRef = ref.clone();
- }
-
- */
-
-
if (ew instanceof JavaBinCodec.BinEntryWriter) {
ew.put(this.field, utf8.reset(ref.bytes, ref.offset, ref.length, null));
} else {