Prevent hanging when opening old REST files with schema mismatches#563
Open
cmargalejo wants to merge 2 commits intomasterfrom
Open
Prevent hanging when opening old REST files with schema mismatches#563cmargalejo wants to merge 2 commits intomasterfrom
cmargalejo wants to merge 2 commits intomasterfrom
Conversation
for more information, see https://pre-commit.ci
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR prevents
restRootfrom hanging when opening files produced with older REST versions.Context
When a REST file is produced, each class (e.g.
TRestDetectorSignalToHitsProcess) is saved with a specific internal layout: which fields, in which order, how many bytes. If the class changes in a newer version, this layout no longer matches. ROOT tries to reconcile the old data with the new layout, but in some cases gets stuck, causingrestRootto hang atGetEntry(0). This fix detects those errors and skips the event loading, printing a warning instead. The analysis tree (ana_tree) and metadata remain accessible. Files produced with compatible versions are (or at least should be) unaffected.How it works
SetErrorHandler()that allows replacing the default error printing with a custom function.SchemaErrorHandler) that does two things. It prints the error as usual, and sets a flag if the error is related to schema mismatches.GetEntry(0)(the line that causes the hang), we check the flag. If schema errors were found, we skipGetEntry(0)and print a warning instead.Tested with two files:
v2.3.6 file (schema mismatch): no longer hangs, warning printed,
ana_treeaccessiblev2.4.0 file (compatible): works normally with full event browsing
Relates to Memory leak when opening files made with REST<latest (?) #542
@rest-for-physics/core_dev