Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge release/dev17.10 to main #10202

Merged
merged 2 commits into from
Apr 2, 2024
Merged

Conversation

dotnet-bot
Copy link
Contributor

This is an automatically generated pull request from release/dev17.10 into main.

Once all conflicts are resolved and all the tests pass, you are free to merge the pull request. 🐯

Troubleshooting conflicts

Identify authors of changes which introduced merge conflicts

Scroll to the bottom, then for each file containing conflicts copy its path into the following searches:

Usually the most recent change to a file between the two branches is considered to have introduced the conflicts, but sometimes it will be necessary to look for the conflicting lines and check the blame in each branch. Generally the author whose change introduced the conflicts should pull down this PR, fix the conflicts locally, then push up a commit resolving the conflicts.

Resolve merge conflicts using your local repo

Sometimes merge conflicts may be present on GitHub but merging locally will work without conflicts. This is due to differences between the merge algorithm used in local git versus the one used by GitHub.

git fetch --all
git checkout -t upstream/merges/release/dev17.10-to-main
git reset --hard upstream/main
git merge upstream/release/dev17.10
# Fix merge conflicts
git commit
git push upstream merges/release/dev17.10-to-main --force

Back in 17.10p1, the FallbackProjectManager would apply changes to the
project snapshot manager without scheduling the updates on the
dispatcher. This had the potential to create correctness and reliability
problems if those changes collided with other updates that *were*
scheduled on the dispatcher.

To address the correctness problem, I made the FallbackProjectManager
async and awaited any updates to the project snapshot manager. However,
this created re-entrancy problems that resulted in deadlocks with
Roslyn. I fixed a couple of those re-entrancy problems in 17.10p2, but
hangs have persisted.

A recent Watson dump revealed another yet another re-entrancy issue
with background document promotion in the IRazorDynamicFileInfoProvider.
The hang occurs when waiting for the FallbackProjectManager to add the
file, which causes the project snapshot manager to notify listeners
of the update, which causes one of the listener to try and perform the
background document promotion again, which causes the hang.

To address this, I've decided to just "fire-and-forget" the updates to
the project snapshot manager. The updates will still happen on the
dispatcher, but we won't wait for them and shouldn't hang.
Back in 17.10p1, the FallbackProjectManager would apply changes to the
project snapshot manager without scheduling the updates on the
dispatcher. This had the potential to create correctness and reliability
problems if those changes collided with other updates that *were*
scheduled on the dispatcher.

To address the correctness problem, I made the FallbackProjectManager
async and awaited any updates to the project snapshot manager. However,
this created re-entrancy problems that resulted in deadlocks with
Roslyn. I fixed a couple of those re-entrancy problems in 17.10p2, but
hangs have persisted.

A recent Watson dump revealed another yet another re-entrancy issue with
background document promotion in the IRazorDynamicFileInfoProvider. The
hang occurs when waiting for the FallbackProjectManager to add the file,
which causes the project snapshot manager to notify listeners of the
update, which causes one of the listener to try and perform the
background document promotion again, which causes the hang.

To address this, I've decided to just "fire-and-forget" the updates to
the project snapshot manager. The updates will still happen on the
dispatcher, but we won't wait for them and shouldn't hang.
@dotnet-bot dotnet-bot requested a review from a team as a code owner April 2, 2024 18:03
@dotnet-bot dotnet-bot added area-infrastructure auto-merge Squash merge once all PR checks are complete and reviewers have approved labels Apr 2, 2024
@dotnet-bot dotnet-bot enabled auto-merge April 2, 2024 18:03
@dotnet-bot dotnet-bot merged commit b286c8d into main Apr 2, 2024
12 checks passed
@dotnet-bot dotnet-bot deleted the merges/release/dev17.10-to-main branch April 2, 2024 18:33
@dotnet-policy-service dotnet-policy-service bot added this to the Next milestone Apr 2, 2024
@Cosifne Cosifne modified the milestones: Next, 17.11 P2 May 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-infrastructure auto-merge Squash merge once all PR checks are complete and reviewers have approved
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants