Conversation
|
| Check | Count |
|---|---|
cppcoreguidelines-pro-type-member-init |
1 |
| Total | 1 |
Details
utilities/trie_index/trie_index_test.cc (1 warning(s))
utilities/trie_index/trie_index_test.cc:6069:10: warning: constructor does not initialize these fields: handle [cppcoreguidelines-pro-type-member-init]
bdfd573 to
9a42904
Compare
ecf915c to
03ee07a
Compare
Claude Code Review - OBSOLETESuperseded by a newer AI review. Expand to see the original review.✅ Claude Code ReviewAuto-triggered after CI passed — reviewing commit 03ee07a SummaryClean, well-structured PR that adds parallel compression support to the trie index builder. The split of High-severity findings (0): No high-severity findings. Full review (click to expand)Findings🔴 HIGHNone. 🟡 MEDIUMM1. Redundant non-atomic counter maintenance --
|
| Context | Assumptions hold? | Action needed? |
|---|---|---|
| Parallel compression | YES - emit/BG writer split correct | None |
| Single-threaded fallback | YES - AddIndexEntry sync path unchanged | None |
| kCustomOnly mode | YES - index_builder null, custom_indexes has trie | None |
| kStandardDefault mode | YES - both built-in and custom entries staged | None |
Key invariant verification: The parallel path produces identical buffered_entries_ to the sync path because (1) FindShortestSeparator receives identical inputs, (2) FinishAddEntry runs serially in commit order so back() is always the correct preceding entry, and (3) tag assignment logic is duplicated identically.
Positive Observations
- Clean Prepare/Finish split faithfully mirrors the built-in index builder pattern
- Defensive
validflag prevents processing stale ring buffer data - Ring buffer flag reset (
custom_entries_prepared = false) at top ofEmitBlockForParallelprevents stale-flag bugs ParallelMatchesSerialOutputtest verifies byte-identical outputSkipCustomPreparesync point is a thoughtful test hook for flag-reset safety
ℹ️ About this response
Generated by Claude Code.
Review methodology: claude_md/code_review.md
Limitations:
- Claude may miss context from files not in the diff
- Large PRs may be truncated
- Always apply human judgment to AI suggestions
Commands:
/claude-review [context]— Request a code review/claude-query <question>— Ask about the PR or codebase
2ee40ce to
e1a6462
Compare
19ef8fd to
38539ee
Compare
Summary: Part 3 of 13 in the UDI split. Stack order: 1. #14954 Add IndexFactory compatibility names 2. #14959 Add UDI index mode API vocabulary 3. #14960 Add optional UDI builder protocols 4. #14961 Add built-in index factory wrappers 5. #14969 Add built-in index factory tests 6. #14962 Promote IndexFactory as UDI SPI 7. #14963 Wire IndexFactory through block-based tables 8. #14964 Add IndexFactory table routing tests 9. #14970 Add IndexFactory parallel routing tests 10. #14965 Account UDI blocks as index blocks 11. #14966 Support parallel AddIndexEntry in trie index 12. #14967 Cover trie index modes 13. #14968 Add IndexFactory stress and benchmark flags Previous: #14959. Next: #14961. Depends on #14959. Until #14954 and #14959 land, GitHub shows the cumulative diff against main. After those land, the intended review diff is: `zaidoon/udi-02-index-mode-api..zaidoon/udi-03-index-builder-protocols` That final review delta is 1 file with 62 insertions. What changed: - Add optional UserDefinedIndexBuilder protocols with default no-op behavior. - Keep the API additive. Runtime wiring comes in later PRs. Validation: - `git diff --check` - `make check-sources` Pull Request resolved: #14960 Reviewed By: jaykorean Differential Revision: D117536541 Pulled By: xingbowang fbshipit-source-id: affe3e49e7185af6cfdf85314bb6f2e002c84c08
d4cabff to
8d593ad
Compare
Claude Code Review - OBSOLETESuperseded by a newer AI review. Expand to see the original review.✅ Claude Code ReviewAuto-triggered after CI passed — reviewing commit 8d593ad SummarySolid refactoring that cleanly separates the built-in index behind the public High-severity findings (0): Full review (click to expand)Findings🔴 HIGHNone. 🟡 MEDIUMM1.
|
| Context | Executes? | Assumptions hold? | Action needed? |
|---|---|---|---|
| WritePreparedTxnDB | YES (uses standard SST pipeline) | YES -- index building is below the transaction layer | None |
| ReadOnly DB / SecondaryInstance | YES (reads SSTs) | YES -- reader changes are read-only | None |
| CompactionService / Remote compaction | YES (writes SSTs remotely) | YES -- Rep/builders are per-SST, no shared state | None |
| User-defined timestamps | Blocked by validation | N/A -- ts_sz > 0 + UDI factory is rejected |
Safe |
| Concurrent writers | YES (each SST has own Rep) | YES -- no cross-SST shared mutable state | None |
| FIFO / Universal compaction | YES | YES -- index building is independent of compaction strategy | None |
| Partitioned index + kCustomDefault | Blocked by validation | N/A -- rejected in ValidateOptions and Rep constructor | Safe |
| Backup/Restore (OPTIONS serialization) | YES | kStandardDefault/kStandardRequired: safe (standard index works). kCustomDefault/kCustomOnly: caller must reattach factory | Documented |
| Old SSTs (no UDI block) + kStandardRequired | Reader falls back to standard with warning | YES -- zero-size block check handles legacy SSTs | Safe |
Positive Observations
-
Clean separation of concerns: The
BuiltinIndexFactoryBuilder/IndexFactoryBuilderlayering is well-designed. The built-in builder gets a fast direct path (AddIndexEntryDirect,OnKeyAddedInternal) that avoids parse/repack overhead, while custom builders go through the user-key-based public interface. -
Thread safety documentation is excellent. The
IndexFactoryBuilderheader clearly documents which callbacks run on which thread and what synchronization is provided. The trie builder'sPreparedTrieEntrydesign keeps emit-thread state (estimated_*) cleanly disjoint from BG-writer state (buffered_entries_). -
Parallel protocol opt-in is well-guarded. The Rep constructor probes each custom builder with
SupportsParallelAddEntry()+CreatePreparedAddEntry(), and falls back to single-threaded with a named log warning if any builder declines. TheMaybeStartParallelCompressionfunction adds a second guard for builders that start returning null after the probe. -
Legacy compatibility is carefully handled. The
ConfigureOptions()override correctly resolves alias priority (explicitindex_modewins), and the C APISyncIndexModeFromLegacyUdiOptions()maintains backward compatibility for C callers. -
Footer incompatible feature flag is a clean forward-compatible design. Older readers reject unknown bits, and the flag is only set for
kCustomOnlywhich requires format_version >= 6 (where the checked bytes exist). -
Good test coverage for the parallel protocol: the trie_index_test tests serial/parallel equivalence, size estimates, invalid prepared entries, and the
SkipCustomPreparetest hook exercises the stale-flag reset path.
ℹ️ About this response
Generated by Claude Code.
Review methodology: claude_md/ci_review_prompt.md
Limitations:
- Claude may miss context from files not in the diff
- Large PRs may be truncated
- Always apply human judgment to AI suggestions
Commands:
/claude-review [context]— Request a code review/claude-query <question>— Ask about the PR or codebase
9fdd82f to
538932c
Compare
538932c to
d7119a8
Compare
Claude Code Review - OBSOLETESuperseded by a newer AI review. Expand to see the original review.✅ Claude Code ReviewAuto-triggered after CI passed — reviewing commit d7119a8 SummaryMajor refactoring PR (Part 8 of 9) that renames UDI types to IndexFactory, replaces boolean flags with IndexMode enum, introduces BuiltinIndexFactoryBuilder, and enables parallel compression for custom indexes. The design direction is sound but there are several correctness and compatibility concerns. Note: the diff is truncated (51 files, 7013 insertions), so some findings may be addressed in unseen portions. High-severity findings (3):
Full review (click to expand)Findings🔴 HIGHH1. Buffered replay path skips custom index OnKeyAdded --
|
| Context | Affected? | Assessment |
|---|---|---|
| WritePreparedTxnDB | No | Index building is independent of transaction semantics |
| ReadOnly DB | No | Write-path changes only |
| CompactionService | Possible | IndexMode enum needs serialization (present in type info map) |
| User-defined timestamps | Yes | Correctly rejected in Rep constructor |
| Partitioned index | Yes | Correctly rejected for kCustomDefault/kCustomOnly |
| Concurrent writers | No | Single-SST, single-writer |
Positive Observations
- Separating built-in and custom indexes into independent builders is cleaner than the old
UserDefinedIndexBuilderWrapperand enables per-builder parallel compression. - The
IndexModeenum is a significant improvement over boolean flags with clear migration path documentation. - Per-builder parallel support probing (throwaway
CreatePreparedAddEntry()in constructor) is practical. - C API backward compatibility layer preserves existing caller behavior.
- Static_asserts for enum values and struct layout are excellent defensive measures.
- The
IndexFactoryOptionsdocumentation on UDT incompatibility is clear.
ℹ️ About this response
Generated by Claude Code.
Review methodology: claude_md/ci_review_prompt.md
Limitations:
- Claude may miss context from files not in the diff
- Large PRs may be truncated
- Always apply human judgment to AI suggestions
Commands:
/claude-review [context]— Request a code review/claude-query <question>— Ask about the PR or codebase
d7119a8 to
f228a2c
Compare
Claude Code Review - OBSOLETESuperseded by a newer AI review. Expand to see the original review.✅ Claude Code ReviewAuto-triggered after CI passed — reviewing commit f228a2c SummaryWell-structured refactoring that cleanly separates built-in and custom index building, enables parallel compression for custom indexes, and introduces the IndexMode enum for controlling index build/read routing. The type renaming (UserDefinedIndex* -> IndexFactory*) with backward-compatible shims is done correctly. The C API compatibility wrapper with SyncIndexModeFromLegacyUdiOptions is a thoughtful approach. High-severity findings (2):
Full review (click to expand)Findings🔴 HIGHH1. BGWorker parallel write path does not commit custom index entries —
|
| Context | Impact | Assessment |
|---|---|---|
| WritePreparedTxnDB | Index building only | Safe |
| ReadOnly DB | No writes | Safe - read path unchanged |
| User-defined timestamps | Rejected in Rep constructor | Safe |
| Partitioned index | kCustomDefault/kCustomOnly rejected | Safe |
| kCustomOnly + old readers | format_version >= 6 guard | Safe |
| Parallel compression | New capability for custom indexes | Needs H1 verification |
| Options serialization | index_mode serializes, factory doesn't |
Documented in API |
Positive Observations
- Clean separation of built-in and custom index builders improves maintainability and enables independent evolution.
- The
SupportsParallelAddEntry/CreatePreparedAddEntryprobe at construction time elegantly handles builders that don't support parallel compression. - Backward compatibility is thorough:
user_defined_index.htype aliases, C API wrapper withSyncIndexModeFromLegacyUdiOptions, and OPTIONS file parse aliases. static_asserts for enum values and struct layout provide compile-time safety nets.- Good test coverage for
BuiltinIndexFactoryBuildercovering each index type, error cases, and the parallel entry protocol. IndexModeenum design with documented migration path (kStandardDefault -> kStandardRequired -> kCustomDefault -> kCustomOnly) is well designed.- The diff correctly validates
ts_sz > 0rejection in the Rep constructor, closing a gap where SstFileWriter and SetOptions could bypassBlockBasedTableFactory::ValidateOptions.
ℹ️ About this response
Generated by Claude Code.
Review methodology: claude_md/ci_review_prompt.md
Limitations:
- Claude may miss context from files not in the diff
- Large PRs may be truncated
- Always apply human judgment to AI suggestions
Commands:
/claude-review [context]— Request a code review/claude-query <question>— Ask about the PR or codebase
7fb7b22 to
fae9998
Compare
Claude Code Review - OBSOLETESuperseded by a newer AI review. Expand to see the original review.✅ Claude Code ReviewAuto-triggered after CI passed — reviewing commit fae9998 SummaryThis PR (Part 8 of 9) makes the trie index builder support parallel compression by implementing the High-severity findings (0): No high-severity findings. Full review (click to expand)Findings🟡 MEDIUMM1. C API
|
| Context | Does code execute? | Assumptions hold? | Action needed? |
|---|---|---|---|
| WritePreparedTxnDB | YES (table building) | YES (index building independent of txn visibility) | Safe |
| ReadOnly DB | NO (no table building) | N/A | Safe |
| SstFileWriter | YES (uses BlockBasedTableBuilder) | YES (same validation) | Safe |
| CompactionService | YES | index_mode serializes via OPTIONS string map | Safe |
| Backup/Restore | YES | factory shared_ptr lost; documented in table.h | Documented |
| User-defined timestamps | YES | ts_sz > 0 rejected with custom indexes | Validated |
| Concurrent writers | YES | OnKeyAdded on emit thread only | Safe |
Meta block key compatibility verified: kIndexFactoryMetaPrefix == kUserDefinedIndexPrefix == "rocksdb.user_defined_index." (asserted in tests). Reader and writer use the same prefix.
The incompatible_features footer mechanism and kFooterFeatureRequireUserDefinedIndex are from predecessor PR a57af39e6. This PR correctly passes the feature flag only for kCustomOnly mode.
Positive Observations
-
Well-structured parallel protocol: The
PreparedTrieEntrycleanly separates emit-thread state from writer-thread state. Thevalidflag reset afterFinishAddEntrycorrectly handles ring buffer reuse. -
Good test coverage: Five new unit tests (SupportsParallelAddEntry, ParallelMatchesSerialOutput, ParallelPipelineOverlapsPrepareAndFinish, ParallelEstimatedSizeStaysMonotonic, ParallelInvalidPreparedEntrySkipped) plus one integration test (ParallelCompressionWithHashStandardIndexAndTrieUdi) that exercises hash index + trie + 4 parallel threads.
-
Correct same-user-key detection: Two-phase detection (initial from inputs in Prepare, buffer-state recheck in Finish) correctly mirrors serial AddIndexEntry including the edge case where FindShortestSeparator fails to shorten.
-
Disjoint estimation counters: Moving size estimation out of
buffered_entries_eliminates the data race that would occur ifEstimatedSize()read vector size concurrently withFinishAddEntrymutations. -
Graceful degradation: Rep constructor probes each builder, falls back to serial with a logged warning if any declines parallel support.
ℹ️ About this response
Generated by Claude Code.
Review methodology: claude_md/ci_review_prompt.md
Limitations:
- Claude may miss context from files not in the diff
- Large PRs may be truncated
- Always apply human judgment to AI suggestions
Commands:
/claude-review [context]— Request a code review/claude-query <question>— Ask about the PR or codebase
Add index modes and read selection while preserving the built-in read path and legacy options. Mark custom-only SSTs for compatible readers. Skip filter construction after index-option errors and bound trie size estimates used by compaction. Add regressions for both failures.
fae9998 to
ad516ed
Compare
✅ Claude Code ReviewAuto-triggered after CI passed — reviewing commit ad516ed SummarySubstantial refactoring of block-based table builder index construction to decouple built-in and custom indexes, enabling parallel compression for custom index implementations. The design is sound: separate High-severity findings (2):
Full review (click to expand)Findings🔴 HIGHH1. C API enum casts without range validation --
|
| Context | Does code execute? | Assumptions hold? | Action needed? |
|---|---|---|---|
| WritePreparedTxnDB | YES (compaction/flush) | YES - index building is value-type-aware | Safe |
| ReadOnly DB | NO (no table building) | N/A | Safe |
| User-defined timestamps | YES - rejected at validation | YES but overly broad (H2) | Narrow check |
| CompactionService | YES (remote compaction) | PARTIALLY - IndexFactory survives only via registry | Document |
| FIFO / Universal compaction | YES | YES | Safe |
| Concurrent writers | YES (parallel compression) | YES - PrepareAddEntry on emit, FinishAddEntry on writer | Safe |
| Partitioned index + kCustomDefault | NO - rejected at validation | N/A | Safe |
| Old binaries reading new SSTs | kCustomOnly: DEPENDS on format_version >= 6 footer flag | YES with dependent PR #14965 | Verify #14965 |
| Snapshots | YES | YES - index building is snapshot-agnostic | Safe |
Positive Observations
- Clean separation of concerns: The split from
UserDefinedIndexBuilderWrapperto separateindex_builder+custom_indexesvector is a good architectural improvement. Each builder has its own scratch buffer, avoiding contention. - Defensive ring buffer flag resets:
index_entry_prepared = falseandcustom_entries_prepared = falseat the top ofEmitBlockForParallelprevents stale data from previous ring buffer iterations. - Graceful degradation: When any builder doesn't support parallel compression, the system falls back to single-threaded with a descriptive log message naming the declining builder.
- C API backwards compatibility: Legacy bools are preserved in the C wrapper struct with explicit precedence rules (
index_mode_explicitflag), andc_test.cthoroughly exercises the precedence logic including the "explicit wins" scenario. - Static asserts in
options_settable_test.cc: Enum numeric stability andReadOptionslayout invariants are checked at compile time, catching ABI breaks. - Parallel probe at construction time: The Rep constructor probes
CreatePreparedAddEntry()for each custom builder and falls back immediately if it returns null, preventing a null dereference on the emit thread later.
ℹ️ About this response
Generated by Claude Code.
Review methodology: claude_md/ci_review_prompt.md
Limitations:
- Claude may miss context from files not in the diff
- Large PRs may be truncated
- Always apply human judgment to AI suggestions
Commands:
/claude-review [context]— Request a code review/claude-query <question>— Ask about the PR or codebase
Summary: Part 1 of 13 in the UDI split. Stack order: 1. facebook#14954 Add IndexFactory compatibility names 2. facebook#14959 Add UDI index mode API vocabulary 3. facebook#14960 Add optional UDI builder protocols 4. facebook#14961 Add built-in index factory wrappers 5. facebook#14969 Add built-in index factory tests 6. facebook#14962 Promote IndexFactory as UDI SPI 7. facebook#14963 Wire IndexFactory through block-based tables 8. facebook#14964 Add IndexFactory table routing tests 9. facebook#14970 Add IndexFactory parallel routing tests 10. facebook#14965 Account UDI blocks as index blocks 11. facebook#14966 Support parallel AddIndexEntry in trie index 12. facebook#14967 Cover trie index modes 13. facebook#14968 Add IndexFactory stress and benchmark flags Previous: none. Next: facebook#14959. This PR adds `include/rocksdb/index_factory.h` as a source-compatible set of new names over the current experimental UDI API: - `IndexFactoryBuilder` -> `UserDefinedIndexBuilder` - `IndexFactoryIterator` -> `UserDefinedIndexIterator` - `IndexFactoryReader` -> `UserDefinedIndexReader` - `IndexFactoryOptions` -> `UserDefinedIndexOption` - `IndexFactory` -> `UserDefinedIndexFactory` - `kIndexFactoryMetaPrefix` -> `kUserDefinedIndexPrefix` This intentionally does not change table building, table reading, SST format, OPTIONS parsing, or the C API. Existing `UserDefinedIndexFactory` subclasses that only implement the old `NewBuilder()` and `NewReader(Slice&)` shape still compile and work through the new `IndexFactory` name. Validation: - `build_tools/rockstest.sh table_test --gtest_filter='IndexFactoryCompatibilityTest.*'` - `make check-sources` - GitHub Actions PR matrix passed on the current head Pull Request resolved: facebook#14954 Reviewed By: jaykorean Differential Revision: D114358164 Pulled By: xingbowang fbshipit-source-id: 5c830dc1f9dfcf11373423a03103a595fd8ad921
Summary: Part 2 of 13 in the UDI split. Stack order: 1. facebook#14954 Add IndexFactory compatibility names 2. facebook#14959 Add UDI index mode API vocabulary 3. facebook#14960 Add optional UDI builder protocols 4. facebook#14961 Add built-in index factory wrappers 5. facebook#14969 Add built-in index factory tests 6. facebook#14962 Promote IndexFactory as UDI SPI 7. facebook#14963 Wire IndexFactory through block-based tables 8. facebook#14964 Add IndexFactory table routing tests 9. facebook#14970 Add IndexFactory parallel routing tests 10. facebook#14965 Account UDI blocks as index blocks 11. facebook#14966 Support parallel AddIndexEntry in trie index 12. facebook#14967 Cover trie index modes 13. facebook#14968 Add IndexFactory stress and benchmark flags Previous: facebook#14954. Next: facebook#14960. Depends on facebook#14954. Until facebook#14954 lands, GitHub shows the cumulative diff against main. After that lands, the intended review diff is: `zaidoon/udi-01-index-factory-compat-shim..zaidoon/udi-02-index-mode-api` That final review delta is 4 files with 52 insertions. What changed: - Add inert IndexMode and ReadIndex vocabulary to the public options headers. - Block those experimental enum fields from automatic C API generation until the explicit C API mapping lands later in the stack. - Keep behavior unchanged. Runtime wiring comes in later PRs. Validation: - `git diff --check` - `make check-sources` - `python3 tools/c_api_gen/verify_generated_up_to_date.py` - `AUTO_CLEAN=1 make check-c-api-gen` - `./c_test` Pull Request resolved: facebook#14959 Reviewed By: jaykorean Differential Revision: D116211178 Pulled By: xingbowang fbshipit-source-id: 42edd3f0991d90b0b5c90232e5023de6e3740dac
Summary: Part 3 of 13 in the UDI split. Stack order: 1. facebook#14954 Add IndexFactory compatibility names 2. facebook#14959 Add UDI index mode API vocabulary 3. facebook#14960 Add optional UDI builder protocols 4. facebook#14961 Add built-in index factory wrappers 5. facebook#14969 Add built-in index factory tests 6. facebook#14962 Promote IndexFactory as UDI SPI 7. facebook#14963 Wire IndexFactory through block-based tables 8. facebook#14964 Add IndexFactory table routing tests 9. facebook#14970 Add IndexFactory parallel routing tests 10. facebook#14965 Account UDI blocks as index blocks 11. facebook#14966 Support parallel AddIndexEntry in trie index 12. facebook#14967 Cover trie index modes 13. facebook#14968 Add IndexFactory stress and benchmark flags Previous: facebook#14959. Next: facebook#14961. Depends on facebook#14959. Until facebook#14954 and facebook#14959 land, GitHub shows the cumulative diff against main. After those land, the intended review diff is: `zaidoon/udi-02-index-mode-api..zaidoon/udi-03-index-builder-protocols` That final review delta is 1 file with 62 insertions. What changed: - Add optional UserDefinedIndexBuilder protocols with default no-op behavior. - Keep the API additive. Runtime wiring comes in later PRs. Validation: - `git diff --check` - `make check-sources` Pull Request resolved: facebook#14960 Reviewed By: jaykorean Differential Revision: D117536541 Pulled By: xingbowang fbshipit-source-id: affe3e49e7185af6cfdf85314bb6f2e002c84c08
Preserve legacy routing from old OPTIONS files with an explicit-mode encoding marker. Normalize legacy inclusive custom-reader estimates so core charges raw index bytes once, and share mode validation across factory and standalone SST entry points. Add integration coverage for persisted options, strict-cache opens, and invalid standalone SST modes. Remove the redundant validation checks and partitioned-filter forwarding methods noted in review.
ad516ed to
84957aa
Compare
Protect shared cached Slice views from consuming factories. Repair strict-cache test lifetimes and allocator-sensitive checks. Bound trie estimates by distinct edges and reject handles outside the 32-bit encoding.
84957aa to
05eb4d7
Compare
Use index cache helpers and read statistics for custom index blocks. Account for the raw block and parsed reader memory separately.
Prepare entries and track size estimates on the emit thread, then add entries in order on the writer thread. Cover serial and parallel output, overlapping callbacks, and size bounds.
05eb4d7 to
c87e723
Compare
Summary
The trie builder previously declined the parallel-add protocol, forcing serial compression when used as a custom index. Opt it into the two-phase protocol: prepare separators and size-estimate counters on the emit thread, then commit trie entries in order on the writer thread.
Keep estimation state separate from writer-owned buffered entries so
EstimatedSize()cannot race with entry commits. Preserve serial separator and sequence-number handling, including repeated user keys spanning multiple blocks and the last-block boundary.Safety and compatibility
The prepared slot is transferred through the existing ordered table-builder pipeline; final serialization runs after workers join. Builders that do not support the protocol still force serial compression. The serialized trie layout is unchanged, and this PR does not change the existing block-offset truncation above 4 GiB.
Test Plan
TrieIndexFactoryTest.ParallelMatchesSerialOutputchecks byte-identical serial/parallel output and seeks, including a multi-block run of one user key.ParallelPipelineOverlapsPrepareAndFinishexercises concurrent callbacks through a bounded handoff queue. Other cases cover monotonic size bounds and unfilled prepared entries.TrieIndexDBTest.ParallelCompressionWithTrieIndexchecks end-to-end reads in the three custom-index write modes;ParallelCompressionWithHashStandardIndexAndTrieUdicovers the supported hash/trie combination.These are included in the 628 focused engine cases that pass normally and with
ASSERT_STATUS_CHECKED=1plusCOERCE_CONTEXT_SWITCH=1. Source and format checks pass. No compression-throughput gain or race-sanitizer result is claimed.Validation used the complete stack on macOS ARM64 with Apple Clang. The published #14968 tree (
b9f332dd) is identical to the tested revision (91417d877); intermediate PR heads were not tested independently.Both full
make checkruns completed with failures: 173/2095 jobs normally and 152/2088 withASSERT_STATUS_CHECKED=1. All four assertion cases reproduce on unchanged upstream main; broad timeout causes remain unresolved. The normal run reused 755 jobs from the earlier fix revision. No Linux, Windows, ASAN, UBSAN, TSAN, or hosted CI validation is claimed.Series
Depends on #14965. Next: #14968.
Changes since #14965. GitHub shows the cumulative stack against main until the preceding PRs land.