Use XPerFieldDocValuesFormat in AbstractTSDBSyntheticIdCodec#144744
Use XPerFieldDocValuesFormat in AbstractTSDBSyntheticIdCodec#144744tlrx merged 10 commits intoelastic:mainfrom
Conversation
|
Pinging @elastic/es-storage-engine (Team:StorageEngine) |
|
Buildkite benchmark this with tsdb-metricsgen-270m please |
|
I've executed the Then I pulled results from a previous run where this fix was not applied yet: As we can observe, with the change, the merge times are similar/better than the baseline. |
romseygeek
left a comment
There was a problem hiding this comment.
LGTM.
We should look into making it easier to test that a Codec will use the optimized merge paths here as this is very easy to miss. I'll open an issue and see if I can build something useful.
|
I opened #144834 |
|
Benchmark results are here but contender has a higher merge time, which is surprising and not aligned with our other benchmarks 🤔 Buildkite benchmark this with tsdb-metricsgen-270m please |
burqen
left a comment
There was a problem hiding this comment.
Good stuff! Just have small comment.
server/src/main/java/org/elasticsearch/index/codec/tsdb/AbstractTSDBSyntheticIdCodec.java
Show resolved
Hide resolved
|
Buildkite benchmark this with tsdb-metricsgen-270m please |
💚 Build Succeeded
This build ran two tsdb-metricsgen-270m benchmarks to evaluate performance impact of this PR. History
|
|
Thanks everyone! |
* upstream/main: (146 commits) Revert "[Native] Gradle-related tweaks to improve handling of the simdvec native library (elastic#144539)" Fix ArrayIndexOutOfBoundsException in fetch phase with partial results (elastic#144385) ESQL: Correctly manage NULL data type for SUM (elastic#144942) [ESQL] Fixes GroupedTopNBenchmark not executing (elastic#144944) Fix reader context leak when query response serialization fails (elastic#144708) Validate individual offset values in BULK_OFFSETS bounds checks (elastic#144643) Merge main21 source set into main in simdvec (elastic#144921) [TEST] Unmute TsidExtractingIdFieldMapperTests (elastic#144848) [Native] Gradle-related tweaks to improve handling of the simdvec native library (elastic#144539) Fix `ThreadedActionListenerTests#testRejectionHandling` (elastic#144795) Add new DLM Frozen Tier Transition execution plugin and service (elastic#144595) Prometheus: execute query_range via parsed EsqlStatement plan (elastic#144416) Investigate `testBulkIndexingRequestSplitting` failure (elastic#144766) Add test utility for wrapping directories in FilterDirectory layer (elastic#143563) Fix ES|QL decay tests with negative scale (elastic#144657) Fix circuit breaker leak in percolator query construction (elastic#144827) Use XPerFieldDocValuesFormat in AbstractTSDBSyntheticIdCodec (elastic#144744) [DOCS] Document how reindex work in CPS (elastic#144016) Fix Int4 vector library tests failing on Java 21 (elastic#144830) [DiskBBQ] Fix index sorting on flush (elastic#144938) ...
…#144744) The TSDB optimized merge logic in DocValuesConsumerUtil requires the doc values producer to be an instance of XPerFieldDocValuesFormat.FieldsReader to access field-specific producers and use optimized merges. Without explicitly overriding docValuesFormat() in AbstractTSDBSyntheticIdCodec, the codec would use Lucene's standard PerFieldDocValuesFormat, causing the optimized merge check to fail and fall back to the slower unoptimized path. This commit fixes AbstractTSDBSyntheticIdCodec to also use XPerFieldDocValuesFormat.FieldsReader.
…#144744) The TSDB optimized merge logic in DocValuesConsumerUtil requires the doc values producer to be an instance of XPerFieldDocValuesFormat.FieldsReader to access field-specific producers and use optimized merges. Without explicitly overriding docValuesFormat() in AbstractTSDBSyntheticIdCodec, the codec would use Lucene's standard PerFieldDocValuesFormat, causing the optimized merge check to fail and fall back to the slower unoptimized path. This commit fixes AbstractTSDBSyntheticIdCodec to also use XPerFieldDocValuesFormat.FieldsReader.
…#144744) The TSDB optimized merge logic in DocValuesConsumerUtil requires the doc values producer to be an instance of XPerFieldDocValuesFormat.FieldsReader to access field-specific producers and use optimized merges. Without explicitly overriding docValuesFormat() in AbstractTSDBSyntheticIdCodec, the codec would use Lucene's standard PerFieldDocValuesFormat, causing the optimized merge check to fail and fall back to the slower unoptimized path. This commit fixes AbstractTSDBSyntheticIdCodec to also use XPerFieldDocValuesFormat.FieldsReader.
The TSDB optimized merge logic in
DocValuesConsumerUtilrequires the doc values producer to be an instance ofXPerFieldDocValuesFormat.FieldsReaderto access field-specific producers and use optimized merges.Without explicitly overriding
docValuesFormat()inAbstractTSDBSyntheticIdCodec, the codec would use Lucene's standardPerFieldDocValuesFormat, causing the optimized merge check to fail and fall back to the slower unoptimized path.This commit fixes
AbstractTSDBSyntheticIdCodecto also useXPerFieldDocValuesFormat.FieldsReader.