Repository navigation
plan9: keep fids per session and inodes per filesystem - #1492
Merged
Merged
Conversation
Session.fid_table and Filesystem.inodes were class attributes, so every connection and every server in a process shared them. Clients allocate fids from 1, so a second connection overwrote the first one's fids, and a second server replaced the first server's root inode and exposed its files.
Owner
|
Looks ok, merging. Thanks! |
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.
Session.fid_tableandFilesystem.inodesinpyroute2/plan9/filesystem.pyare class attributes, so every session and every filesystem in the process share them. In 9P fids belong to one connection, andPlan9ClientSocketallocates them from 1, so two connections use the same fid numbers. With two servers in one process (each with its own client), the first client read the second server's file through its own fid, and the first server also served a file that only exists on the second:This moves both tables into
__init__. The addedtest_servers_do_not_share_stateintests/test_core/test_plan9/test_basic.pyfails on master and passes with the change. The plan9 tests pass and the pre-commit hooks (isort, black, flake8) are clean.