Structure RAR conflict diagnostics in binary logs - #14601
Draft
baronfel wants to merge 3 commits into
Draft
Conversation
Replace enormous conflict dependency-list strings with lazy structured events whose repeated identities, paths, dependees, and item specs use the binary log string table. Preserve legacy rendering and warning behavior behind ChangeWave 18.11, and advance the binlog format to v29. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: aa22c3ca-3e39-4cf7-9fd7-666cc172d93d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: aa22c3ca-3e39-4cf7-9fd7-666cc172d93d
Rewrite the ChangeWave entry, public XML documentation, implementation comments, and test descriptions with concise technical language. Clarify reader compatibility and lazy message behavior without changing product behavior. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: aa22c3ca-3e39-4cf7-9fd7-666cc172d93d
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.
Stack dependency
This draft PR depends on draft PR #14599 and targets its
baronfel-analyze-binlog-sizebranch. PR #14599 addsAssemblyResolutionSearchTraceEventArgsand binary-log format 28. Review and merge PR #14599 first. This PR advances the binary-log format to 29.Motivation and size model
RAR emitted 2,126 conflict dependency-list messages in the analyzed 823.6 MiB binary log. The messages contained 992,063,604 characters, or approximately 946 MiB of uncompressed text.
The initial whole-log model projected compressed savings of 130–170 MiB. Its central estimate was approximately 150 MiB.
A category-specific model parsed all 2,126 messages without failures. The structured model contains 1,949 unique strings and 13,560,767 wire bytes. Optimal gzip reduced the category from 49,133,718 bytes to 1,281,821 bytes. This result is a 45.6 MiB, or 97.4 percent, reduction for the category. A production workload must measure the final whole-log reduction.
Changes
OutputUnresolvedAssemblyConflictsmetadata.Review changes
ProjectFileduring replay for structured conflict events and the parent search-trace event.MessageFormatteroverloads to prevent parameter-array allocations.ProjectFile.At 250 dependees, formatter time decreased from 76.5 µs to 67.2 µs. Allocation decreased from 488,429 bytes to 480,197 bytes. For 93 dependees with 17 causes, preallocation decreased time from 13.49 µs to 6.37 µs. Allocation decreased from 61,768 bytes to 21,688 bytes.
Validation
MSBuild.dll --helpsmoke test passed.