Skip to content

Mitigate the NuGet restore behavior #32764

@jaredpar

Description

@jaredpar

There is a NuGet restore issue which is failing a significant number of our CI / PR builds (as of this time about 6%).

It will likely be several weeks before an actual NuGet fix can make it to our repository (just following standard code flow). That's too long given the magnitude of the failure here.

Short term though there does appear to be a viable work around for us. The linux based jobs need to add a step before arcade build which:

  1. Creates /tmp/NuGetScratch (using the appropriate temp variable)
  2. Run chmod -R ugo+rwx on the created directory

This should remove the restore error until the actual fix comes along.

Places we need to insert this script call:


Symptoms of the bug:

src/libraries/Directory.Build.props#L38
src/libraries/Directory.Build.props(38,3): error : System.AggregateException: One or more errors occurred. (Could not find a part of the path '/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/NuGetScratch/ccd9d22adb6549f086362689e42245d6/9c159c0681d8495c9d48c5e0d296844d.proj.nuget.dgspec.json'.)
 ---> System.IO.DirectoryNotFoundException: Could not find a part of the path '/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/NuGetScratch/ccd9d22adb6549f086362689e42245d6/9c159c0681d8495c9d48c5e0d296844d.proj.nuget.dgspec.json'.
   at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at System.IO.FileStream..ctor(String path, FileMode mode)
   at NuGet.ProjectModel.DependencyGraphSpec.Save(String path)
   at NuGet.Commands.NoOpRestoreUtilities.PersistDGSpecFile(DependencyGraphSpec spec, String dgPath, ILogger log)
   at NuGet.Commands.RestoreCommand.EvaluateCacheFile()
   at NuGet.Commands.RestoreCommand.ExecuteAsync(CancellationToken token)
   at NuGet.Commands.RestoreRunner.ExecuteAsync(RestoreSummaryRequest summaryRequest, CancellationToken token)
   at NuGet.Commands.RestoreRunner.CompleteTaskAsync(List`1 restoreTasks)
   at NuGet.Commands.RestoreRunner.RunWithoutCommit(IEnumerable`1 restoreRequests, RestoreArgs restoreContext)
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
   at Microsoft.Build.NuGetSdkResolver.NuGetSdkResolver.NuGetAbstraction.GetSdkResult(SdkReference sdk, Object nuGetVersion, SdkResolverContext context, SdkResultFactory factory)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions