fix(realfs): avoid blocking async runtimes#2205
Merged
Merged
Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
bashkit | 4e16a71 | Commit Preview URL Branch Preview URL |
Jul 25 2026, 11:18 PM |
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.
What changed
RealFs async backend operations now use Tokio filesystem APIs throughout, preventing host filesystem work from blocking current-thread runtimes. Async construction is available through
RealFs::open; the synchronousRealFs::newmigration shim is deprecated.Async JavaScript mount paths use the nonblocking constructor. Existing synchronous Rust builder, Python, and JavaScript factory surfaces remain operational during migration.
Why
Synchronous path resolution and metadata work inside async RealFs operations could stall or deadlock a single-worker Tokio runtime. The deterministic regression combines captured custom-builtin pipeline output with a FIFO-backed RealFs path.
Before / After
Before: the current-thread regression timed out after 500 ms because synchronous FIFO opening blocked the only runtime worker; the same test passed on a multi-thread runtime and masked the defect.
After: both current-thread and multi-thread pipeline tests complete in about 60 ms, while containment, symlink, read-only, and read-write semantics remain covered.
Risk
Validation
just pre-prChecklist