Arcade: Maestro can sometimes identify the wrong assets when doing updates

Created on 16 Jan 2020  路  7Comments  路  Source: dotnet/arcade

I think this problem affects coherency scenarios only. Basically what happens is this:

  • internal/release/* branch and release/* branch have the exact same shas
  • Both builds are stabilized
  • Internal build finishes second

When the update goes through and does coherency updates, it needs to build a graph. This graph needs to find the assets that contribute. The primary identifiers are: name+version+sha. In cases of conflict (multiple assets match), the latest asset is chosen.

In this case, the latest happens to be the internal/ branch build, which won't have been published to a public location. This means that a couple things could happen:

  • Non-stable dependencies that are coherency tied to the stable version asset that could pick the wrong version. E.g.
<Dependency Name="Microsoft.NETCore.App.Internal" Version="3.0.3-servicing-20064-01"  CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <- If Microsoft.NETCore.App.Runtime.win-x64 is identified as the internal build version, this dependency will be updated to an internal build version

If the internal build was published to another location or not published at all, we could end with a nuget.config with wrong (pointing to internal) or missing feeds.

There aren't great solutions to this. Except:

  • Don't generate stable assets. This would outright solve this.
  • Default channel publishing could be based on what branches a sha applies to, not what branch was built.

Most helpful comment

Leave it for now. I think we're going to go for option 1.

All 7 comments

/cc @riarenas

Can I vote for option 1?

You can. I'm hoping to make a strong case for it.

Please oh please yes

@mmitche What do you think we should do with this? I think there was some more talk / work to be done with stable versions for .Net 6

Leave it for now. I think we're going to go for option 1.

Using strict CPD will solve this

Was this page helpful?
0 / 5 - 0 ratings