From 181332dde04ef136feac68281cd21b52ad33c846 Mon Sep 17 00:00:00 2001 From: Nhat Nguyen Date: Thu, 7 Jan 2021 15:42:27 -0500 Subject: [PATCH] Use SequentialStoredFieldsLeafReader to read Lucene changes --- .../index/engine/LuceneChangesSnapshot.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/index/engine/LuceneChangesSnapshot.java b/server/src/main/java/org/elasticsearch/index/engine/LuceneChangesSnapshot.java index f4f57a5768e01..4b6c4e8efc2af 100644 --- a/server/src/main/java/org/elasticsearch/index/engine/LuceneChangesSnapshot.java +++ b/server/src/main/java/org/elasticsearch/index/engine/LuceneChangesSnapshot.java @@ -34,6 +34,7 @@ import org.apache.lucene.util.ArrayUtil; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.lucene.Lucene; +import org.elasticsearch.common.lucene.index.SequentialStoredFieldsLeafReader; import org.elasticsearch.common.lucene.search.Queries; import org.elasticsearch.core.internal.io.IOUtils; import org.elasticsearch.index.fieldvisitor.FieldsVisitor; @@ -229,8 +230,12 @@ private Translog.Operation readDocAsOp(int docIndex) throws IOException { final String sourceField = parallelArray.hasRecoverySource[docIndex] ? SourceFieldMapper.RECOVERY_SOURCE_NAME : SourceFieldMapper.NAME; final FieldsVisitor fields = new FieldsVisitor(true, sourceField); - leaf.reader().document(segmentDocID, fields); - + if (leaf.reader() instanceof SequentialStoredFieldsLeafReader) { + ((SequentialStoredFieldsLeafReader) leaf.reader()).getSequentialStoredFieldsReader().visitDocument(segmentDocID, fields); + } else { + assert false : "The changes reader isn't wrapped with Lucene#wrapAllDocsLive"; + throw new IllegalStateException("The changes reader isn't wrapped with Lucene#wrapAllDocsLive"); + } final Translog.Operation op; final boolean isTombstone = parallelArray.isTombStone[docIndex]; if (isTombstone && fields.id() == null) {