Skip to content

Commit b65e37a

Browse files
authored
Fix block loader with missing ignored source (#129006) (#129021)
We miss appending null when ignored_source is not available. Our randomized tests already cover this case, but we do not check it when loading fields. I labelled this non-issue for an unreleased bug. Closes #128959 Relates #119546
1 parent fbeed15 commit b65e37a

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

server/src/main/java/org/elasticsearch/index/mapper/FallbackSyntheticSourceBlockLoader.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ private record IgnoredSourceRowStrideReader<T>(String fieldName, Reader<T> reade
7575
public void read(int docId, StoredFields storedFields, Builder builder) throws IOException {
7676
var ignoredSource = storedFields.storedFields().get(IgnoredSourceFieldMapper.NAME);
7777
if (ignoredSource == null) {
78+
builder.appendNull();
7879
return;
7980
}
8081

test/framework/src/main/java/org/elasticsearch/index/mapper/BlockLoaderTestRunner.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929

3030
import static org.apache.lucene.tests.util.LuceneTestCase.newDirectory;
3131
import static org.apache.lucene.tests.util.LuceneTestCase.random;
32+
import static org.hamcrest.MatcherAssert.assertThat;
33+
import static org.hamcrest.Matchers.equalTo;
3234

3335
public class BlockLoaderTestRunner {
3436
private final BlockLoaderTestCase.Params params;
@@ -74,10 +76,9 @@ private Object load(BlockLoader blockLoader, LeafReaderContext context, MapperSe
7476
// `columnAtATimeReader` is tried first, we mimic `ValuesSourceReaderOperator`
7577
var columnAtATimeReader = blockLoader.columnAtATimeReader(context);
7678
if (columnAtATimeReader != null) {
77-
var block = (TestBlock) columnAtATimeReader.read(TestBlock.factory(context.reader().numDocs()), TestBlock.docs(0));
78-
if (block.size() == 0) {
79-
return null;
80-
}
79+
BlockLoader.Docs docs = TestBlock.docs(0);
80+
var block = (TestBlock) columnAtATimeReader.read(TestBlock.factory(context.reader().numDocs()), docs);
81+
assertThat(block.size(), equalTo(1));
8182
return block.get(0);
8283
}
8384

@@ -99,9 +100,8 @@ private Object load(BlockLoader blockLoader, LeafReaderContext context, MapperSe
99100
BlockLoader.Builder builder = blockLoader.builder(TestBlock.factory(context.reader().numDocs()), 1);
100101
blockLoader.rowStrideReader(context).read(0, storedFieldsLoader, builder);
101102
var block = (TestBlock) builder.build();
102-
if (block.size() == 0) {
103-
return null;
104-
}
103+
assertThat(block.size(), equalTo(1));
104+
105105
return block.get(0);
106106
}
107107

0 commit comments

Comments
 (0)