[ntuple] Add kTypeS3 locator type for S3 storage backend#22351
[ntuple] Add kTypeS3 locator type for S3 storage backend#22351JasMehta08 wants to merge 1 commit into
Conversation
Test Results 21 files 21 suites 3d 2h 41m 33s ⏱️ For more details on these failures, see this check. Results for commit 9365f1f. ♻️ This comment has been updated with latest results. |
… kTestLocatorType and kTypeS3
bee8ce4 to
9365f1f
Compare
|
@jblomer Thanks! |
jblomer
left a comment
There was a problem hiding this comment.
In principle looks good to me.
I wonder, however, if it would be better to encode the two modes in two different locator types. We would then consolidate the DAOS with the mode B locator (e.g. kTypeObject64) and create another locator type for mode A (e.g. kTypeMulti or similar). To be discussed, possibly for a follow-up PR.
This Pull Request
(Is a part of the GSoC 2026 project
S3 Backend for RNTuple.)The S3 backend supports two addressing modes: Mode A packs multiple pages into a single S3 object and uses a new locator type to encode both the object ID and byte offset, while Mode B stores one page per object and reuses the existing Object64 locator. This PR adds the on-disk format support needed for Mode A.
This PR:
kTypeS3 = 0x03to theELocatorTypeenum inRNTupleTypes.hxxSerializeLocator()andDeserializeLocator()inRNTupleSerialize.cxx, reusing the existingSerializeLocatorPayloadObject64/DeserializeLocatorPayloadObject64The 64-bit payload is interpreted differently depending on the locator type:
0x03(Mode A) bit-splices upper 32 bits as object ID and lower 32 bits as byte offset, while0x02(Mode B) uses the full value as a plain object ID. The interpretation is handled by the backend, not the serializer. The serializer just stores and retrieves the raw 64-bit value.Checklist
kTypeS3(0x03) andkTypeDAOS(0x02), locally.