dotnet / arcade

Tools that provide common build infrastructure for multiple .NET Foundation projects.
MIT License
670 stars 346 forks source link

DownloadTask should not abort if there's progress #8301

Closed MichalStrehovsky closed 2 years ago

MichalStrehovsky commented 2 years ago

I've been getting the failures below while trying to build the runtime repo.

After a bit of troubleshooting, I found out the acquire-wix.proj project uses the DownloadFile task from this repo. The download was too slow and DownloadFile task unceremoniously cut it off after 100 seconds (I was getting about 100 kB per second when I tried manually with curl).

I hacked around it locally by increasing the timeout.

Should there be a timeout if the download is making forward progress though? The failure mode was really obscure and I spent quite a bit of time on this.

C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018: The "DownloadFile" task failed unexpectedly.
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018: System.AggregateException: One or more errors occurred. (A task was canceled.)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:  ---> System.Threading.Tasks.TaskCanceledException: A task was canceled.
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Threading.Tasks.Task.GetExceptions(Boolean includeTaskCanceledExceptions)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.DotNet.Arcade.Sdk.DownloadFile.Execute() in /_/src/Microsoft.DotNet.Arcade.Sdk/src/DownloadFile.cs:line 49
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.InitializeAndExecuteTask(TaskLoggingContext taskLoggingContext, ItemBucket bucket, IDictionary`2 taskIdentityParameters, TaskHost taskHost, TaskExecutionMode howToExecuteTask)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.InitializeAndExecuteTask(TaskLoggingContext taskLoggingContext, ItemBucket bucket, IDictionary`2 taskIdentityParameters, TaskHost taskHost, TaskExecutionMode howToExecuteTask)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteBucket(TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Dictionary`2 lookupHash)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteBucket(TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Dictionary`2 lookupHash)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(TaskExecutionMode mode, Lookup lookup)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(TaskExecutionMode mode, Lookup lookup)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(TargetLoggingContext loggingContext, BuildRequestEntry requestEntry, ITargetBuilderCallback targetBuilderCallback, ProjectTargetInstanceChild taskInstance, TaskExecutionMode mode, Lookup inferLookup, Lookup executeLookup, CancellationToken cancellationToken)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteTask(TargetLoggingContext loggingContext, BuildRequestEntry requestEntry, ITargetBuilderCallback targetBuilderCallback, ProjectTargetInstanceChild taskInstance, TaskExecutionMode mode, Lookup inferLookup, Lookup executeLookup, CancellationToken cancellationToken)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TargetEntry.ProcessBucket(ITaskBuilder taskBuilder, TargetLoggingContext targetLoggingContext, TaskExecutionMode mode, Lookup lookupForInference, Lookup lookupForExecution)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TargetEntry.ProcessBucket(ITaskBuilder taskBuilder, TargetLoggingContext targetLoggingContext, TaskExecutionMode mode, Lookup lookupForInference, Lookup lookupForExecution)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TargetEntry.ExecuteTarget(ITaskBuilder taskBuilder, BuildRequestEntry requestEntry, ProjectLoggingContext projectLoggingContext, CancellationToken cancellationToken)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TargetEntry.ExecuteTarget(ITaskBuilder taskBuilder, BuildRequestEntry requestEntry, ProjectLoggingContext projectLoggingContext, CancellationToken cancellationToken)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TargetBuilder.ProcessTargetStack(ITaskBuilder taskBuilder)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TargetBuilder.ProcessTargetStack(ITaskBuilder taskBuilder)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TargetBuilder.BuildTargets(ProjectLoggingContext loggingContext, BuildRequestEntry entry, IRequestBuilderCallback callback, String[] targetNames, Lookup baseLookup, CancellationToken cancellationToken)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TargetBuilder.BuildTargets(ProjectLoggingContext loggingContext, BuildRequestEntry entry, IRequestBuilderCallback callback, String[] targetNames, Lookup baseLookup, CancellationToken cancellationToken)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.RequestBuilder.BuildProject()
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.RequestBuilder.BuildProject()
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.RequestBuilder.BuildAndReport()
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.RequestBuilder.BuildAndReport()
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.RequestBuilder.RequestThreadProc(Boolean setThreadParameters)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.RequestBuilder.RequestThreadProc(Boolean setThreadParameters)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.RequestBuilder.<StartBuilderThread>b__52_2()
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Threading.Tasks.Task`1.InnerInvoke()
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Threading.Tasks.TaskScheduler.TryExecuteTask(Task task)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.RequestBuilder.DedicatedThreadsTaskScheduler.<InjectThread>b__6_0()
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Threading.Thread.StartHelper.Callback(Object state)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at System.Threading.Thread.StartCallback()
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018: --- End of stack trace from previous location ---
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    --- End of inner exception stack trace ---
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.DotNet.Arcade.Sdk.DownloadFile.Execute() in /_/src/Microsoft.DotNet.Arcade.Sdk/src/DownloadFile.cs:line 49
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
C:\Users\michals\.nuget\packages\microsoft.dotnet.build.tasks.installers\7.0.0-beta.21621.3\build\acquisition\acquire-wix\acquire-wix.proj(22,5): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask)
markwilkie commented 2 years ago

I know this is not your main point, but it is possible to override the timeout w/ TimeoutInSeconds.

Regarding checking if there's progress, I don't see this realistically being prioritized. However, I'd be open to a PR.

MichalStrehovsky commented 2 years ago

Yes, I ended up adding the timeout parameter by hacking the project file in my nuget cache (the project in question also comes from this repo). I don't know what was the original reason to add a timeout, but on my devbox I can't think of a scenario where I would want to abort a build because it's taking too long. It's a time sink because I'll need to retry.

markwilkie commented 2 years ago

yea....it would be best to keep going so long as there's anything. Unfortunately, I don't see our team prioritizing this work.

I'm going to close this for now, but if someone feels strongly that there's a better business case for it, or wants to do the work themselves, by all means feel free to reopen.