BP5Reader: close metadata FDs when writer is inactive #4846
+318
−15
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.
When the writer's active flag is false, all metadata is in its final state. Close each metadata file descriptor individually once all of its data has been read into memory:
This reduces file descriptor pressure on remote servers (e.g. XRootD) when many datasets are opened concurrently via campaign files.
Also adds an fstat retry loop for md.idx to handle filesystem metadata lag: after a writer closes a file, fstat() may briefly report a stale size. The loop polls until the reported size stabilizes.
Finally, it adds a test, counting open FDs to make sure that the metadata FDs are actually closed. This test only functions on non-windows platforms.