Fix for a rare race condition in System.IO.Packaging #63013
Merged
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.
Fix for a rare race condition when initializing System.IO.Packaging.PackageRelationship.s_containerRelationshipPartName._partUriExtension
In rare circumstances, when there are at least two ooxml packages created in parallel for the first time in application's lifetime, it is possible that PackageRelationship.s_containerRelationshipPartName._partUriExtension will be initialized to "els" instead of "rels". Once it's initialized like that, every Package is saved with an invalid extension for package relationships content type in [Content_Types].xml:
<Default ContentType="application/vnd.openxmlformats-package.relationships+xml" Extension="els"/>
When reading such damaged package later, the relationships are not to be found.
As this is extremely non-deterministic, no unit tests were provided. I developed a tiny app to reproduce this issue, launching it in a loop I was able to get the issue 3 times over 8000 runs.