Fix command-line binlog replay to respect minimum reader version #12775
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.
Fixes #(issue number needed)
Context
MSBuild throws fatal exceptions when replaying binlog files with format versions newer than supported, even when the minimum required reader version is within range. The minimum reader version field exists precisely to enable forward compatibility—older MSBuilds should read (possibly partial) logs from newer versions.
Example failure:
Changes Made
XMake.cs:
AllowForwardCompatibilityonBinaryLogReplayEventSourceRecoverableReadErrorfor graceful error handlingBinaryReaderoverload to ensure compatibility flag is respectedBinaryLogger.cs:
FileFormatVersionconstant public (was internal) for version comparisonBinaryLogger_Tests.cs:
AllowForwardCompatibilityproperty and publicFileFormatVersionaccessTesting
Verified with simulated binlog files:
Unit tests pass for new API surface.
Notes
Pre-existing test failures in
BinaryLogger_Testsare unrelated (confirmed on base commit).Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.