Skip to content

Commit 63c2dde

Browse files
authored
Fix DocValuesCodecDuelTests (#111503)
We should not access any docValues attribute of the current document if advance() is exhausted or if advanceExact() returns false. Closes #111470
1 parent 96a04fc commit 63c2dde

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

server/src/test/java/org/elasticsearch/index/codec/tsdb/DocValuesCodecDuelTests.java

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,9 @@ private void assertSortedSetDocValues(LeafReader baselineReader, LeafReader cont
232232
for (int i = 0; i < docIdsToAdvanceTo.length; i++) {
233233
int docId = docIdsToAdvanceTo[i];
234234
int baselineTarget = assertAdvance(docId, baselineReader, contenderReader, baseline, contender);
235+
if (baselineTarget == NO_MORE_DOCS) {
236+
break;
237+
}
235238
assertEquals(baseline.docValueCount(), contender.docValueCount());
236239
for (int j = 0; j < baseline.docValueCount(); j++) {
237240
long baselineOrd = baseline.nextOrd();
@@ -255,12 +258,14 @@ private void assertSortedSetDocValues(LeafReader baselineReader, LeafReader cont
255258
boolean contenderFound = contender.advanceExact(docId);
256259
assertEquals(baselineFound, contenderFound);
257260
assertEquals(baseline.docID(), contender.docID());
258-
assertEquals(baseline.docValueCount(), contender.docValueCount());
259-
for (int i = 0; i < baseline.docValueCount(); i++) {
260-
long baselineOrd = baseline.nextOrd();
261-
long contenderOrd = contender.nextOrd();
262-
assertEquals(baselineOrd, contenderOrd);
263-
assertEquals(baseline.lookupOrd(baselineOrd), contender.lookupOrd(contenderOrd));
261+
if (baselineFound) {
262+
assertEquals(baseline.docValueCount(), contender.docValueCount());
263+
for (int i = 0; i < baseline.docValueCount(); i++) {
264+
long baselineOrd = baseline.nextOrd();
265+
long contenderOrd = contender.nextOrd();
266+
assertEquals(baselineOrd, contenderOrd);
267+
assertEquals(baseline.lookupOrd(baselineOrd), contender.lookupOrd(contenderOrd));
268+
}
264269
}
265270
}
266271
}
@@ -328,6 +333,9 @@ private void assertSortedNumericDocValues(LeafReader baselineReader, LeafReader
328333
for (int i = 0; i < docIdsToAdvanceTo.length; i++) {
329334
int docId = docIdsToAdvanceTo[i];
330335
int baselineTarget = assertAdvance(docId, baselineReader, contenderReader, baseline, contender);
336+
if (baselineTarget == NO_MORE_DOCS) {
337+
break;
338+
}
331339
assertEquals(baseline.docValueCount(), contender.docValueCount());
332340
for (int j = 0; j < baseline.docValueCount(); j++) {
333341
long baselineValue = baseline.nextValue();
@@ -349,11 +357,13 @@ private void assertSortedNumericDocValues(LeafReader baselineReader, LeafReader
349357
boolean contenderResult = contender.advanceExact(docId);
350358
assertEquals(baselineResult, contenderResult);
351359
assertEquals(baseline.docID(), contender.docID());
352-
assertEquals(baseline.docValueCount(), contender.docValueCount());
353-
for (int i = 0; i < baseline.docValueCount(); i++) {
354-
long baselineValue = baseline.nextValue();
355-
long contenderValue = contender.nextValue();
356-
assertEquals(baselineValue, contenderValue);
360+
if (baselineResult) {
361+
assertEquals(baseline.docValueCount(), contender.docValueCount());
362+
for (int i = 0; i < baseline.docValueCount(); i++) {
363+
long baselineValue = baseline.nextValue();
364+
long contenderValue = contender.nextValue();
365+
assertEquals(baselineValue, contenderValue);
366+
}
357367
}
358368
}
359369
}

0 commit comments

Comments
 (0)