Skip to content

Conversation

silverweed
Copy link
Contributor

@silverweed silverweed commented Sep 16, 2025

Add a bunch of functions to poke through the abstraction of the storage classes (specifically, to get the underlying TDirectory and RMiniFileReader). These functionalities (all Internal) will be needed by the RNTuple Attributes (see the full PR for details)

Checklist:

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

Copy link

github-actions bot commented Sep 16, 2025

Test Results

    22 files      22 suites   3d 19h 53m 2s ⏱️
 3 689 tests  3 685 ✅ 0 💤 4 ❌
79 228 runs  79 224 ✅ 0 💤 4 ❌

For more details on these failures, see this check.

Results for commit 722b86a.

♻️ This comment has been updated with latest results.

Copy link
Contributor

@jblomer jblomer left a comment

Choose a reason for hiding this comment

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

Do we really need GetUnderlyingDirectory()? Since the attribute anchor is a hidden key, we can just store it in the ROOT file's root directory.

@silverweed
Copy link
Contributor Author

Do we really need GetUnderlyingDirectory()? Since the attribute anchor is a hidden key, we can just store it in the ROOT file's root directory.

Not sure...the reason I need it in the full PR is to create the AttrSetWriter which then uses it create a PageSinkFile using it. Even if we wanted to store the key in the root directory we'd still need the underlying TFile for it...

@silverweed silverweed force-pushed the ntuple_attr_2 branch 2 times, most recently from 3675b97 to 8cc71a8 Compare September 29, 2025 07:21
@silverweed silverweed requested a review from jblomer September 29, 2025 10:17
Copy link
Member

@hahnjo hahnjo left a comment

Choose a reason for hiding this comment

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

Some comments inline. I'm not actually sure it helps to review internal methods and additions to the RPageStorage abstraction layer without seeing the immediate need. Maybe one has to look at the final PR all the time, but that is quite some mental overhead. It feels like we are now vertically building the implementation, instead of in logical chunks...

@silverweed silverweed force-pushed the ntuple_attr_2 branch 3 times, most recently from f5e1b8c to 79698ad Compare October 2, 2025 08:32
@silverweed
Copy link
Contributor Author

I'm not actually sure it helps to review internal methods and additions to the RPageStorage abstraction layer without seeing the immediate need. Maybe one has to look at the final PR all the time, but that is quite some mental overhead

I split it like this because this way it could be reviewed in parallel with the other PR rather than being blocked by it, but if you prefer I can also close this, wait for the other to be merged and then put this change together with the parts that use it (probably doing one PR for attribute reading, one for attribute writing and one for merging)

@silverweed silverweed requested a review from pcanal October 3, 2025 14:44
virtual std::vector<std::unique_ptr<ROOT::Internal::RCluster>>
LoadClusters(std::span<ROOT::Internal::RCluster::RKey> clusterKeys) = 0;

virtual RMiniFileReader *GetUnderlyingReader() { return nullptr; }
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we need that? Aren't we using the reader only within ReadAttrSet?

Copy link
Contributor Author

@silverweed silverweed Oct 13, 2025

Choose a reason for hiding this comment

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

It is also used by the RNTupleMerger, since we need to fetch the Anchor when opening the attribute sets during merging (see https://github.com/root-project/root/pull/19153/files#diff-3fe10805b28dcc612504e58728446c32a3f70f4e42b5a6d62e46d07facd46766R127)

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.

3 participants