clintropolis opened a new pull request, #19496:
URL: https://github.com/apache/druid/pull/19496

   ### Description
   This PR adds the cache-layer primitives that will allow mounting a V10 
segment as multiple entries on one storage location. The models is that there 
will be one always-resident metadata entry that holds the parsed header + file 
mapper (`PartialSegmentMetadataCacheEntry`), plus one entry per group of 
containers associated with a 'bundle' of files in the v10 segment 
(`PartialSegmentBundleCacheEntry`). Each bundle is independently mountable and 
so importantly, evictable. The entries share one on-disk layout with the 
existing eager-load path. No partial-aware `Segment` or `CursorFactory` yet, 
those will be added in a follow-up PR.
   
   changes:
   * add `PartialSegmentMetadataCacheEntry` a `CacheEntry` that range-reads the 
V10 header on mount, constructs `PartialSegmentFileMapperV10`, and shrinks its 
reservation to actual on-disk size
   * add `PartialSegmentBundleCacheEntry` and 
`PartialSegmentBundleCacheEntryIdentifier` are `CacheEntry` associated with 
each file bundle of a v10 segment that sparse-allocates and evicts its 
containers as a unit; places holds metadata and transitive parent bundle 
entries holds via the `StorageLocation` methods (weak reference holds on the 
parent cache entries) and reference-counted usage references
   * add `PartialSegmentCacheBootstrap` a helper that restores partial-format 
entries from on-disk layout on historical startup (not wired up yet); cleans 
orphaned bundles
   * add `ResizableCacheEntry` interface and 
`StorageLocation.adjustReservation` (shrink-only) so the metadata entry can 
tighten its reservation post-mount
   * rename `SegmentFileBuilder.startFileGroup` → `startFileBundle`; introduce 
`ROOT_BUNDLE_NAME` as the default bundle for containers written without an 
explicit declaration                                                            
  * rename json field `SegmentFileContainerMetadata.fileGroup` → `bundle`; now 
non-null via getter, normalizes to `ROOT_BUNDLE_NAME` in the constructor, 
default value omitted from JSON using a custom `JsonInclude` filter
   * Extract shared `DirectoryBackedRangeReader` and `CountingRangeReader` test 
helpers; consolidate duplicates across processing + server tests


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to