Repository navigation
fix(python): preserve shared readers when closing dataframe subsets - #946
Merged
Merged
Conversation
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.
Closing or collecting a subset
TsFileDataFramein the defaultuse_index=Falsemode closes the readers shared with its parent. The parent remains marked open, so a later.locquery can pass a null reader intoquery_table_on_treeand segfault. A temporary boolean-filter view is enough to trigger this with an ordinary English device name; it is still reproducible on #942.Keep direct-reader ownership on the root dataframe: closing a subset invalidates only that subset. Reads through a direct subset or its Timeseries now check whether the root has been explicitly closed and raise
RuntimeErrorbefore entering native code. Indexed subsets retain their existing independent runtime leases.Add 18 subprocess-isolated regressions covering tree/table models, both index modes, explicit close, garbage collection, context-manager exit, temporary filtering, sibling/nested views, and reads after root closure. Before the fix, 10 of these fail; all 18 pass with the fix.
Validation:
cd python && python -m pytest tests -q --tb=short: 259 passed.git diff --checkpasses. The formatting follow-up preserves the Python AST.