-
Notifications
You must be signed in to change notification settings - Fork 1.4k
[df] Add RNTupleWriteOptions
to RSnapshotOptions
and add format-compatibility checks
#19976
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
N.B., compression settings that have been set directly through the snapshot options are propagated to the RNTuple write options, provided that they haven't been set there as well.
... and warn users when an option has been set that has no effect on the chosen output format.
Test Results 21 files 21 suites 3d 13h 43m 27s ⏱️ For more details on these failures, see this check. Results for commit b94a6b8. |
if (opts.fAutoFlush != defaultSnapshotOpts.fAutoFlush) { | ||
Warning("Snapshot", "The TTree-specific fAutoFlush option in RSnapshotOptions has been set, but the output " | ||
"format is set to RNTuple, so this option won't have any effect. Use the " | ||
"fNTupleWriteOptions option available in RSnapshotOptions to configure the output " | ||
"RNTuple. Alternatively, change fOutputFormat to snapshot to TTree instead."); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider:
if (opts.fAutoFlush != defaultSnapshotOpts.fAutoFlush) { | |
Warning("Snapshot", "The TTree-specific fAutoFlush option in RSnapshotOptions has been set, but the output " | |
"format is set to RNTuple, so this option won't have any effect. Use the " | |
"fNTupleWriteOptions option available in RSnapshotOptions to configure the output " | |
"RNTuple. Alternatively, change fOutputFormat to snapshot to TTree instead."); | |
const char *issueWith = nullptr; | |
if (opts.fAutoFlush != defaultSnapshotOpts.fAutoFlush) { | |
issueWith = "fAutoFlush"; | |
} else if .... | |
... | |
} | |
Warning("Snapshot", "The TTree-specific %s option in RSnapshotOptions has been set, but the output " | |
"format is set to RNTuple, so this option won't have any effect. Use the " | |
"fNTupleWriteOptions option available in RSnapshotOptions to configure the output " | |
"RNTuple. Alternatively, change fOutputFormat to snapshot to TTree instead.", issueWith); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
// compression settings in fNTupleWriteOpts have not been changed, and the compression algorithm or level in fOptions | ||
// have. | ||
if (fOptions.fNTupleWriteOpts.GetCompression() == RCompressionSetting::EDefaults::kUseGeneralPurpose && | ||
(fOptions.fCompressionAlgorithm != RCompressionSetting::EAlgorithm::kZLIB || |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that leaves the possibility that a user explicitly sets fCompression... to what happens to be the current default, but then is surprised because RNTuple doesn't pick it up but continue to use its zstd default. I don't have a good solution though, maybe that's ok.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, good point. Perhaps to avoid situations like these it might be better to also warn users for fCompression...
, and require them to be set through fNTupleWriteOpts
only.
For snapshotting to RNTuple, users can now pass an
RNTupleWriteOptions
toRSnapshotOptions
to configure the output RNTuple. Compression settings that have been set directly throughRSnapshotOptions::fCompressionAlgorithm
andRSnapshotOptions::fCompressionLevel
are propagated toRSnapshotOptions::fNTupleWriteOpts
, provided that they haven't been set there already as well.In addition, a check has been added to warn users when they set options that are specific to one output format, but
RSnapshotOptions.fOutputFormat
has been set to use the other.Closes #19784.