From d2126827ed94d69250458cb265000d166ccac8b0 Mon Sep 17 00:00:00 2001 From: Martijn van Groningen Date: Fri, 8 Aug 2025 21:59:10 +0700 Subject: [PATCH] DocValuesConsumerUtil tweak Be more strict about not finding a metadata entry based on field info number. If this were to happen, then this can cause issues in doc value consumer. However as far as I understand it, the field info number should stay consistent. --- .../codec/tsdb/es819/DocValuesConsumerUtil.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/server/src/main/java/org/elasticsearch/index/codec/tsdb/es819/DocValuesConsumerUtil.java b/server/src/main/java/org/elasticsearch/index/codec/tsdb/es819/DocValuesConsumerUtil.java index c29585f173316..9313e724a237c 100644 --- a/server/src/main/java/org/elasticsearch/index/codec/tsdb/es819/DocValuesConsumerUtil.java +++ b/server/src/main/java/org/elasticsearch/index/codec/tsdb/es819/DocValuesConsumerUtil.java @@ -60,6 +60,9 @@ static MergeStats compatibleWithOptimizedMerge(boolean optimizedMergeEnabled, Me if (entry != null) { sumNumValues += entry.numValues; sumNumDocsWithField += entry.numDocsWithField; + } else { + assert false : "unexpectedly got no entry for field [" + fieldInfo.number + "\\" + fieldInfo.name + "]"; + return UNSUPPORTED; } } case SORTED_NUMERIC -> { @@ -67,6 +70,9 @@ static MergeStats compatibleWithOptimizedMerge(boolean optimizedMergeEnabled, Me if (entry != null) { sumNumValues += entry.numValues; sumNumDocsWithField += entry.numDocsWithField; + } else { + assert false : "unexpectedly got no entry for field [" + fieldInfo.number + "\\" + fieldInfo.name + "]"; + return UNSUPPORTED; } } case SORTED -> { @@ -74,6 +80,9 @@ static MergeStats compatibleWithOptimizedMerge(boolean optimizedMergeEnabled, Me if (entry != null) { sumNumValues += entry.ordsEntry.numValues; sumNumDocsWithField += entry.ordsEntry.numDocsWithField; + } else { + assert false : "unexpectedly got no entry for field [" + fieldInfo.number + "\\" + fieldInfo.name + "]"; + return UNSUPPORTED; } } case SORTED_SET -> { @@ -86,6 +95,9 @@ static MergeStats compatibleWithOptimizedMerge(boolean optimizedMergeEnabled, Me sumNumValues += entry.ordsEntry.numValues; sumNumDocsWithField += entry.ordsEntry.numDocsWithField; } + } else { + assert false : "unexpectedly got no entry for field [" + fieldInfo.number + "\\" + fieldInfo.name + "]"; + return UNSUPPORTED; } } case BINARY -> { @@ -94,6 +106,9 @@ static MergeStats compatibleWithOptimizedMerge(boolean optimizedMergeEnabled, Me sumNumDocsWithField += entry.numDocsWithField; minLength = Math.min(minLength, entry.minLength); maxLength = Math.max(maxLength, entry.maxLength); + } else { + assert false : "unexpectedly got no entry for field [" + fieldInfo.number + "\\" + fieldInfo.name + "]"; + return UNSUPPORTED; } } default -> throw new IllegalStateException("unexpected doc values producer type: " + fieldInfo.getDocValuesType());