Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

[automated] Merge branch 'release/2.1' => 'release/2.2'#31131

Merged
weshaggard merged 31 commits into
dotnet:release/2.2from
dotnet-maestro-bot:merge/release/2.1-to-release/2.2
Jul 18, 2018
Merged

[automated] Merge branch 'release/2.1' => 'release/2.2'#31131
weshaggard merged 31 commits into
dotnet:release/2.2from
dotnet-maestro-bot:merge/release/2.1-to-release/2.2

Conversation

@dotnet-maestro-bot
Copy link
Copy Markdown

I detected changes in the release/2.1 branch which have not been merged yet to release/2.2.
I'm a robot and am configured to help you automatically keep release/2.2 up to date, so
I've opened this PR.

This PR merges commits made on release/2.1 by the following committers:

Instructions for merging

This PR will not be auto-merged. When pull request checks pass, please complete this PR
by creating a merge commit, not a squash or rebase commit.

merge button instructions

You can also do this on command line:

git checkout release/2.2
git pull
git fetch --force https://github.com/dotnet-maestro-bot/corefx merge/release/2.1-to-release/2.2:merge/release/2.1-to-release/2.2
git merge merge/release/2.1-to-release/2.2
git push

⚠️ If there are merge conflicts, you will need to resolve them manually before merging.

Please contact ASP.NET Core Engineering if you have questions or issues.
Also, if this PR was generated incorrectly, help us fix it. See https://github.com/aspnet/BuildTools/blob/master/scripts/GitHubMergeBranches.ps1.

wtgodbe and others added 27 commits May 29, 2018 13:39
For any packages that we doin't want to ship and marked as
BlockStable we should always force include the label and
build number in the package name.
) (dotnet#30744)

* Fix compilation for deprecated API on macOS Mojave preview

Fixes: #30599
Allows include build number for packages blocked from going stable
…pdateDependencies

Update CoreClr, CoreFx, CoreSetup to servicing-26708-02, servicing-26708-02, servicing-26708-02, respectively (release/2.1)
…otnet#30954)

This change adds support for 308 redirects to SocketsHttpHandler, and enables 308 redirects in our tests.

Fixes: #30389
* Tests for #30263 fix

Goes with dotnet/coreclr#18460

* Add case for `C:\` to `D:\`
Always run end.ps1/sh
We need to generate the buildversion props file before we start
a parallel build otherwise we race condition that can break
the build.
…orSync

Ensure we generate version prop before sync parallel build
…#31009)

For .NET Core 2.0, I ported the ThreadPool's work-stealing implementation to ConcurrentBag, leading to significant performance throughput and allocation improvements.  However, there's a subtle difference in the concurrency guarantees the ThreadPool's implementation provided from what ConcurrentBag needs, which ends up breaking certain usage patterns on top of ConcurrentBag.

Specifically, ThreadPool's "steal" implementation need not be fully linearizable.  It's possible for a thread to see the bag's count as 1, and then while the thread is doing a take/steal for its count to never drop below 1, but for the steal to still fail, even though there was always an item available.  This is ok for the thread pool because it manages a known count of work items in the queues separately, and if it sees that there are still items available after a steal has failed, it'll try again.  That "try again" logic provided above the work-stealing queue thus didn't make it over to ConcurrentBag, which breaks some usages of ConcurrentBag, in particular cases where a type like BlockingCollection is wrapping the bag and managing its own count.  It's possible now for BlockingCollection to know that there's an item in the bag but to then fail to take it, which causes problems such as exceptions being thrown.

The fix is to port back the relevant portion of ConcurrentBag from .NET Core 1.x / .NET Framework, where local push operations on a list track the number of times the list transitions from empty to non-empty.  A steal operation then looks at those counts prior to doing the steal, and if the steal fails, it looks again after: if the count has increased, it retries.  This unfortunately means that local pushes on small lists are now more expensive than in .NET Core 2.0/2.1, as if there are <= 2 items in the list, it takes the lock, but this seems unavoidable given the work-stealing design.
@weshaggard
Copy link
Copy Markdown
Member

I resolved the merge conflict and pushed the changes.

weshaggard and others added 2 commits July 17, 2018 16:30
The TraversalBuildDependsOn gets other things added to it like
BuildAllProjects which we don't want for the Sync target so
factoring out the common pre-steps and sharing just those
with sync and build.
…orSync

Fix Sync targets to not actually cause a build to occur as well
@dotnet-maestro-bot
Copy link
Copy Markdown
Author

This pull request has been updated.

This PR merges commits made on release/2.1 by the following committers:

@dotnet-maestro-bot dotnet-maestro-bot force-pushed the merge/release/2.1-to-release/2.2 branch from a1a7f63 to b61c8bd Compare July 18, 2018 00:31
@weshaggard
Copy link
Copy Markdown
Member

@natemcmaster After a new change came in it seems to have undone my merge which resolved the conflicts. Is that intentional?

@natemcmaster
Copy link
Copy Markdown

Yes, that was intentional. The bot doesn't attempt to do anything about merge conflicts. When it opens the PR, it simply makes a snapshot of release/2.1 on merge/release/2.1-to-release/2.2 and opens a PR to release/2.2. When new commits come in on release/2.1, it will do a force push on merge/release/2.1-to-release/2.2 to match the latest release/2.1 branch.

@weshaggard
Copy link
Copy Markdown
Member

When new commits come in on release/2.1, it will do a force push on merge/release/2.1-to-release/2.2 to match the latest release/2.1 branch.

We should rethink that a little. We need time for conflicts to be resolved and CI to complete without having to worry about our manual changes getting overwritten.

@dotnet-maestro-bot
Copy link
Copy Markdown
Author

This pull request has been updated.

This PR merges commits made on release/2.1 by the following committers:

@dotnet-maestro-bot dotnet-maestro-bot force-pushed the merge/release/2.1-to-release/2.2 branch from 8f8836e to 778a21f Compare July 18, 2018 20:15
@natemcmaster
Copy link
Copy Markdown

@weshaggard when new commits are pushed to release/2.1 and this PR is still open, what would you like the bot to do instead? Start creating more PRs? Attempt to do some merging automatically within the PR? Ignore?

@weshaggard
Copy link
Copy Markdown
Member

cc @dagood who had done some work in this space for our version update.

If possible we should just replay the new commits on top, but if that doesn't work for some whatever reason just adding a comment to this PR stating that more changes are available (perhaps listing them) but you cannot merge them due to the manual commit. Then we either need to wait for another trigger to get them or somehow manually trigger the new commits.

While looking at these it has occurred to me that we are going to constantly hit merge conflicts with the version dependency file as soon as we turn on dependency updating into this new branch. We are likely going to need to figure out a good strategy to handle them that doesn't require manual merge everytime.

@natemcmaster
Copy link
Copy Markdown

aspnet also runs into frequent conflicts on versions files. We've been kicking around some ideas to implement better automerging tooling aspnet/BuildTools#707

@dagood
Copy link
Copy Markdown
Member

dagood commented Jul 18, 2018

We need time for conflicts to be resolved and CI to complete without having to worry about our manual changes getting overwritten.

The way this is handled for VersionTools PRs is it detects if it's the one that made the HEAD commit on the PR. If HEAD is someone else's, it posts a comment as the bot saying so (ex) and doesn't push anything. The change/commit it's trying to push at that point is basically lost. VersionTools also supports the Maestro-Stop-Updating tag if you simply want to get something through CI without interruptions (commits are also "lost" this way). There are some more ideas at dotnet/buildtools#1902.

I haven't thought about the merge case specifically, though... biggest difference is that version update PRs are always a single commit long, so they're simpler.

@weshaggard weshaggard merged commit d5f11a6 into dotnet:release/2.2 Jul 18, 2018
@karelz karelz added this to the 2.2 milestone Jul 19, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.