Repository navigation
fix(windows): give blocks a media path without the verbatim prefix - #1045
Merged
Merged
Conversation
It was ignored on Windows because the flow never reached EOS (#835). This commit only removes the ignore, so Windows CI shows the failure before the fix in the next commit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
block_expansion canonicalized media_path with Path::canonicalize, which returns a verbatim \\?\C:\... path on Windows. Blocks join file names onto it with '/', which is not a separator inside a verbatim path, so filesink refused the Recorder's location and the flow never reached EOS. dunce::canonicalize returns the plain C:\... form whenever it is valid. On Linux and macOS it is std::fs::canonicalize. Closes #835 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
srperens
marked this pull request as ready for review
October 8, 2026 09:46
This was referenced Oct 8, 2026
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.
Closes #835
Problem
On Windows no Recorder flow writes a file.
block_expansioncanonicalizesmedia_pathfor every block, and on Windowscanonicalize()returns a verbatim path (\\?\C:\...). The Recorder joins its file name onto that with/. Inside a verbatim path/is not a separator, sofilesinkrefuses the location, splitmuxsink stays in READY, and the flow never reaches EOS. Root cause found by @wagenet in #835; from his diagnostic run on the Windows runner:Every flow goes through
block_expansion, so this hits a real Windows server, not only the test.Change
block_expansioncanonicalizes withdunce::canonicalizeinstead ofPath::canonicalize.duncereturns the plainC:\...form whenever that form is valid, and keeps the verbatim form only where it is needed. On Linux and macOS it isstd::fs::canonicalize, so nothing changes there.duncewas already inCargo.lockas a transitive dependency.recorder_records_when_driven_through_pipeline_startis no longer ignored on Windows.Rejected:
Path::joininstead of/. That fixes one block; every block that joins onto_media_pathwith/would still break. The Live Recorder in feat(live recorder): a recorder where a quiet track holds nothing up #1034 builds its location the same way (format!("{}/{}_{}_%05d.{}", ...)) and would hit this too.std::path::absoluteinstead of canonicalizing. It drops symlink resolution, which other code may rely on.Evidence
86921c9) only removes theignore;Build (Windows)in run 37754917806:5fb89ae),Build (Windows)in run 37757051131:Tests
cargo fmt --check,cargo clippy --workspace --all-targets --features efp,nvidia -D warnings), macOS.ci:windows) on both commits: see Evidence.Build (Windows)is still red on commit 2 for one unrelated test,media_download_test::partial_download_never_appears_under_the_final_name("the first half never reached the disk"). It fails the same way on main (run 37751779361, after feat(media): download a file from a URL, and stream uploads with progress #1043), so it is not caused by this PR.port_pool_test::a_port_held_by_another_process_is_skipped_and_marked_blockedfailed on commit 1 and passed on commit 2; it also failed on main in run 37751779361. Unrelated to this change.For the reviewer
_media_pathwithout the\\?\prefix on Windows. The Media Player canonicalizes its own paths again (mediaplayer/mod.rs) and is not affected by this change.Out of scope
PipelineManager, so they never see a canonicalized path. A test throughPipelineManagerbelongs in that PR.🤖 Generated with Claude Code