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/27 18:56:51 UTC
[lucene-solr] branch jira/SOLR-14608-export updated: SOLR-14608:
Fix bug when caching docvalues objects related to the leafreader ord
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 894141b SOLR-14608: Fix bug when caching docvalues objects related to the leafreader ord
894141b is described below
commit 894141b3c9461880917de471285d3b8a96c0a4fe
Author: Joel Bernstein <jb...@apache.org>
AuthorDate: Sun Dec 27 13:56:25 2020 -0500
SOLR-14608: Fix bug when caching docvalues objects related to the leafreader ord
---
.../solr/handler/export/BoolFieldWriter.java | 4 ++--
.../solr/handler/export/DateFieldWriter.java | 2 +-
.../solr/handler/export/DoubleFieldWriter.java | 4 ++--
.../solr/handler/export/FloatFieldWriter.java | 4 ++--
.../apache/solr/handler/export/IntFieldWriter.java | 4 ++--
.../solr/handler/export/LongFieldWriter.java | 4 ++--
.../solr/handler/export/MultiFieldWriter.java | 6 +++---
.../solr/handler/export/StringFieldWriter.java | 25 ++++++++++++++++------
8 files changed, 33 insertions(+), 20 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 b7edf98..0411b42 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
@@ -32,7 +32,7 @@ class BoolFieldWriter extends FieldWriter {
private String field;
private FieldType fieldType;
private CharsRefBuilder cref = new CharsRefBuilder();
- private IntObjectHashMap<SortedDocValues> docValuesCache = new IntObjectHashMap();
+ private IntObjectHashMap<SortedDocValues> docValuesCache = new IntObjectHashMap<>();
public BoolFieldWriter(String field, FieldType fieldType) {
@@ -51,7 +51,7 @@ class BoolFieldWriter extends FieldWriter {
}
} else {
// field is not part of 'sort' param, but part of 'fl' param
- int readerOrd = reader.getContext().ord;
+ int readerOrd = sortDoc.ord;
SortedDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
SortedDocValues sortedDocValues = docValuesCache.get(readerOrd);
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 143f13b7..905f9c3 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
@@ -28,7 +28,7 @@ import org.apache.solr.common.MapWriter;
class DateFieldWriter extends FieldWriter {
private String field;
- private IntObjectHashMap<NumericDocValues> docValuesCache = new IntObjectHashMap();
+ private IntObjectHashMap<NumericDocValues> docValuesCache = new IntObjectHashMap<>();
public DateFieldWriter(String field) {
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 96bda09..89e1aa0 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
@@ -27,7 +27,7 @@ import org.apache.solr.common.MapWriter;
class DoubleFieldWriter extends FieldWriter {
private String field;
- private IntObjectHashMap<NumericDocValues> docValuesCache = new IntObjectHashMap();
+ private IntObjectHashMap<NumericDocValues> docValuesCache = new IntObjectHashMap<>();
public DoubleFieldWriter(String field) {
this.field = field;
@@ -45,7 +45,7 @@ class DoubleFieldWriter extends FieldWriter {
}
} else {
// field is not part of 'sort' param, but part of 'fl' param
- int readerOrd = reader.getContext().ord;
+ int readerOrd = sortDoc.ord;
NumericDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
NumericDocValues numericDocValues = docValuesCache.get(readerOrd);
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 6c2bd81..1da4641 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
@@ -27,7 +27,7 @@ import org.apache.solr.common.MapWriter;
class FloatFieldWriter extends FieldWriter {
private String field;
- private IntObjectHashMap<NumericDocValues> docValuesCache = new IntObjectHashMap();
+ private IntObjectHashMap<NumericDocValues> docValuesCache = new IntObjectHashMap<>();
public FloatFieldWriter(String field) {
this.field = field;
@@ -45,7 +45,7 @@ class FloatFieldWriter extends FieldWriter {
}
} else {
// field is not part of 'sort' param, but part of 'fl' param
- int readerOrd = reader.getContext().ord;
+ int readerOrd = sortDoc.ord;
NumericDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
NumericDocValues numericDocValues = docValuesCache.get(readerOrd);
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 5a48df7..5ad522f 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
@@ -27,7 +27,7 @@ import org.apache.solr.common.MapWriter;
class IntFieldWriter extends FieldWriter {
private String field;
- private IntObjectHashMap<NumericDocValues> docValuesCache = new IntObjectHashMap();
+ private IntObjectHashMap<NumericDocValues> docValuesCache = new IntObjectHashMap<>();
public IntFieldWriter(String field) {
this.field = field;
@@ -44,7 +44,7 @@ class IntFieldWriter extends FieldWriter {
}
} else {
// field is not part of 'sort' param, but part of 'fl' param
- int readerOrd = reader.getContext().ord;
+ int readerOrd = sortDoc.ord;
NumericDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
NumericDocValues numericDocValues = docValuesCache.get(readerOrd);
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 3af795d..62e503b 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
@@ -28,7 +28,7 @@ import org.apache.solr.common.MapWriter;
class LongFieldWriter extends FieldWriter {
private String field;
- private IntObjectHashMap<NumericDocValues> docValuesCache = new IntObjectHashMap();
+ private IntObjectHashMap<NumericDocValues> docValuesCache = new IntObjectHashMap<>();
public LongFieldWriter(String field) {
this.field = field;
@@ -45,7 +45,7 @@ class LongFieldWriter extends FieldWriter {
}
} else {
// field is not part of 'sort' param, but part of 'fl' param
- int readerOrd = reader.getContext().ord;
+ int readerOrd = sortDoc.ord;
NumericDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
NumericDocValues numericDocValues = docValuesCache.get(readerOrd);
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 2110aa8..7a02b22 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
@@ -38,7 +38,7 @@ class MultiFieldWriter extends FieldWriter {
private boolean numeric;
private CharsRefBuilder cref = new CharsRefBuilder();
private final LongFunction<Object> bitsToValue;
- private IntObjectHashMap docValuesCache = new IntObjectHashMap();
+ private IntObjectHashMap<Object> docValuesCache = new IntObjectHashMap<>();
public MultiFieldWriter(String field, FieldType fieldType, SchemaField schemaField, boolean numeric) {
@@ -55,7 +55,7 @@ class MultiFieldWriter extends FieldWriter {
public boolean write(SortDoc sortDoc, LeafReader reader, MapWriter.EntryWriter out, int fieldIndex) throws IOException {
if (this.fieldType.isPointField()) {
- int readerOrd = reader.getContext().ord;
+ int readerOrd = sortDoc.ord;
SortedNumericDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
SortedNumericDocValues sortedNumericDocValues = (SortedNumericDocValues) docValuesCache.get(readerOrd);
@@ -82,7 +82,7 @@ class MultiFieldWriter extends FieldWriter {
});
return true;
} else {
- int readerOrd = reader.getContext().ord;
+ int readerOrd = sortDoc.ord;
SortedSetDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
SortedSetDocValues sortedSetDocValues = (SortedSetDocValues) docValuesCache.get(readerOrd);
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 7b51da0..b497ec2 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
@@ -37,7 +37,7 @@ class StringFieldWriter extends FieldWriter {
private FieldType fieldType;
private BytesRef lastRef;
private int lastOrd = -1;
- private IntObjectHashMap<SortedDocValues> docValuesCache = new IntObjectHashMap();
+ private IntObjectHashMap<SortedDocValues> docValuesCache = new IntObjectHashMap<>();
private CharsRefBuilder cref = new CharsRefBuilder();
final ByteArrayUtf8CharSequence utf8 = new ByteArrayUtf8CharSequence(new byte[0], 0, 0) {
@@ -76,11 +76,8 @@ class StringFieldWriter extends FieldWriter {
}
if (ref == null) {
-
- /*
- Reuse the last DocValues object if possible
- */
- int readerOrd = reader.getContext().ord;
+ //Reuse the last DocValues object if possible
+ int readerOrd = sortDoc.ord;
SortedDocValues vals = null;
if(docValuesCache.containsKey(readerOrd)) {
SortedDocValues sortedDocValues = docValuesCache.get(readerOrd);
@@ -104,6 +101,22 @@ 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 {