Skip to content

[ntuple] Rename kTypeDAOS to kTypeObject64 and kTypeS3 to kTypeMulti#22434

Open
JasMehta08 wants to merge 1 commit into
root-project:masterfrom
JasMehta08:locator-type-rename
Open

[ntuple] Rename kTypeDAOS to kTypeObject64 and kTypeS3 to kTypeMulti#22434
JasMehta08 wants to merge 1 commit into
root-project:masterfrom
JasMehta08:locator-type-rename

Conversation

@JasMehta08
Copy link
Copy Markdown
Contributor

This Pull request:

Changes or fixes:

Consolidate locator type naming as suggested in the review of PR #22351. kTypeDAOS is renamed to kTypeObject64 since it is used by both DAOS and S3 Mode B backends. kTypeS3 is renamed to kTypeMulti since it represents a multi-field packed locator. Wire format values (0x02 and 0x03) are unchanged.

Updated BinaryFormatSpecification.md to register locator types 0x02 (Object64) and 0x03 (Multi) in the type table, and added an Object64 payload format diagram to the well-known payload formats section describing the shared layout used by both types.

Checklist:

  • tested changes locally
  • updated the docs (if necessary)

This PR is a follow-up to #22351

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's not update the binary specification just yet. For the moment, we just implement them as experimental extensions.

Comment thread tree/ntuple/inc/ROOT/RNTupleTypes.hxx
static constexpr std::uint64_t kMaskReservedBit = 1ull << 60;

/// To save memory, we use the most significant bits to store the locator type (file, DAOS, zero page,
/// To save memory, we use the most significant bits to store the locator type (file, Object64, zero page,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, that may become a problem for the multi locator that gets one of its two 32bit integers cut by 4 bits. I guess we should cut the the offset, effectively restricting every multi object to 256MiB. That would be ok if backends always also can use the Object64 locator to break out that limitation.

Alternatively, we can restrict the number of multi objects (pages, in the worst case) to 256M. That seems a lot but the limitation is more difficult to break out from. To be discussed.

Perhaps for this PR: let's just make sure that we know into which of the two 32bit integers the four flag bits cut.

Copy link
Copy Markdown
Contributor Author

@JasMehta08 JasMehta08 Jun 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking either a 32/28 bit split (256 MiB/object, 4G object limit) or a 30/30 split (1 GiB/object, 1G object limit).

Multi range requests have a limit on how many ranges you can pack into one request.

If that cap is low (100-500), either split works fine in practice.
If it's higher (~1000), 30/30 gives the headroom to pack large (~1 MiB) pages into one object, while 32/28 would start capping performance.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting, the 30/30 split is clever!

Comment on lines +1093 to 1094
case RNTupleLocator::kTypeMulti:
size += SerializeLocatorPayloadObject64(locator, payloadp);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably want to make the serialization of the 2 32bit integers explicit. For a follow-up PR.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 2, 2026

Test Results

    21 files      21 suites   3d 5h 32m 55s ⏱️
 3 864 tests  3 864 ✅ 0 💤 0 ❌
72 738 runs  72 738 ✅ 0 💤 0 ❌

Results for commit d796341.

♻️ This comment has been updated with latest results.

@JasMehta08 JasMehta08 force-pushed the locator-type-rename branch from 38138a6 to d796341 Compare June 2, 2026 11:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants