Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions tree/ntuple/inc/ROOT/RMiniFile.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,12 @@ class TVirtualStreamerInfo;

namespace ROOT {

namespace Internal {
class RRawFile;
}

class RNTupleWriteOptions;

namespace Internal {

class RRawFile;

/// Holds status information of an open ROOT file during writing
struct RTFileControlBlock;

Expand Down
2 changes: 1 addition & 1 deletion tree/ntuple/inc/ROOT/RPageStorage.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -757,7 +757,7 @@ public:
/// The underlying `std::shared_mutex`, however, is neither read nor write recursive:
/// within one thread, only one lock (shared or exclusive) must be acquired at the same time. This requires special
/// care in sections protected by `GetSharedDescriptorGuard()` and `GetExclDescriptorGuard()` especially to avoid
/// that the locks are acquired indirectly (e.g. by a call to `GetNEntries()`). As a general guideline, no other
/// that the locks are acquired indirectly. As a general guideline, no other
/// method of the page source should be called (directly or indirectly) in a guarded section.
const RSharedDescriptorGuard GetSharedDescriptorGuard() const
{
Expand Down
3 changes: 2 additions & 1 deletion tree/ntuple/inc/ROOT/RPageStorageDaos.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,8 @@ struct RDaosNTupleAnchor {
/// The object class for user data OIDs, e.g. `SX`
std::string fObjClass{};

bool operator ==(const RDaosNTupleAnchor &other) const {
bool operator==(const RDaosNTupleAnchor &other) const
{
return fVersionAnchor == other.fVersionAnchor && fVersionEpoch == other.fVersionEpoch &&
fVersionMajor == other.fVersionMajor && fVersionMinor == other.fVersionMinor &&
fVersionPatch == other.fVersionPatch && fNBytesHeader == other.fNBytesHeader &&
Expand Down
23 changes: 11 additions & 12 deletions tree/ntuple/src/RPageStorageFile.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -552,18 +552,17 @@ ROOT::Internal::RPageSourceFile::PrepareSingleCluster(const RCluster::RKey &clus
std::vector<ROnDiskPageLocator> onDiskPages;
auto activeSize = 0;
auto pageZeroMap = std::make_unique<ROnDiskPageMap>();
PrepareLoadCluster(clusterKey, *pageZeroMap,
[&](ROOT::DescriptorId_t physicalColumnId, ROOT::NTupleSize_t pageNo,
const ROOT::RClusterDescriptor::RPageInfo &pageInfo) {
const auto &pageLocator = pageInfo.GetLocator();
if (pageLocator.GetType() == RNTupleLocator::kTypeUnknown)
throw RException(R__FAIL("tried to read a page with an unknown locator"));
const auto nBytes =
pageLocator.GetNBytesOnStorage() + pageInfo.HasChecksum() * kNBytesPageChecksum;
activeSize += nBytes;
onDiskPages.push_back(
{physicalColumnId, pageNo, pageLocator.GetPosition<std::uint64_t>(), nBytes, 0});
});
PrepareLoadCluster(
clusterKey, *pageZeroMap,
[&](ROOT::DescriptorId_t physicalColumnId, ROOT::NTupleSize_t pageNo,
const ROOT::RClusterDescriptor::RPageInfo &pageInfo) {
const auto &pageLocator = pageInfo.GetLocator();
if (pageLocator.GetType() == RNTupleLocator::kTypeUnknown)
throw RException(R__FAIL("tried to read a page with an unknown locator"));
const auto nBytes = pageLocator.GetNBytesOnStorage() + pageInfo.HasChecksum() * kNBytesPageChecksum;
activeSize += nBytes;
onDiskPages.push_back({physicalColumnId, pageNo, pageLocator.GetPosition<std::uint64_t>(), nBytes, 0});
});

// Linearize the page requests by file offset
std::sort(onDiskPages.begin(), onDiskPages.end(),
Expand Down
Loading