dotnet / performance

This repo contains benchmarks used for testing the performance of all .NET Runtimes
MIT License
689 stars 267 forks source link

Some autofiling failing with Path too long exception #4426

Closed LoopedBard3 closed 2 weeks ago

LoopedBard3 commented 2 weeks ago

We are hitting some exceptions during our cloning of the dotnet/sdk repo due to the file paths being too long. Full exception:

Unhandled exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.AggregateException: One or more errors occurred. (path too long: 'D:/Users/<PoolUser>/AppData/Local/Temp/oevc4jep.fyj/test/dotnet-new.Tests/Approvals/FeaturesSupport.classlib.Nullable-False#TopLevel-False#ImplicitUsings-False#FileScopedNs-False#Framework-net6.0#cs#UnsuportedLangVer.verified/MyProject/classlib.csproj')
 ---> LibGit2Sharp.LibGit2SharpException: path too long: 'D:/Users/<PoolUser>/AppData/Local/Temp/oevc4jep.fyj/test/dotnet-new.Tests/Approvals/FeaturesSupport.classlib.Nullable-False#TopLevel-False#ImplicitUsings-False#FileScopedNs-False#Framework-net6.0#cs#UnsuportedLangVer.verified/MyProject/classlib.csproj'
   at LibGit2Sharp.Core.Ensure.HandleError(Int32 result) in /_/LibGit2Sharp/Core/Ensure.cs:line 154
   at LibGit2Sharp.Core.Ensure.ZeroResult(Int32 result) in /_/LibGit2Sharp/Core/Ensure.cs:line 172
   at LibGit2Sharp.Core.Proxy.git_clone(String url, String workdir, GitCloneOptions& opts) in /_/LibGit2Sharp/Core/Proxy.cs:line 278
   at LibGit2Sharp.Repository.Clone(String sourceUrl, String workdirPath, CloneOptions options) in /_/LibGit2Sharp/Repository.cs:line 824
   at LibGit2Sharp.Repository.Clone(String sourceUrl, String workdirPath) in /_/LibGit2Sharp/Repository.cs:line 758
   at perfcommandcore.GitManager.Clone(Repo repo) in /home/vsts/work/1/s/src/perfcommandcore/GitManager.cs:line 48
   at perfcommandcore.AutoFiler.GenerateAutoFiledIssuesAsync(List`1 regressionRows, List`1 improvementRows, RunEnvironment baselineEnvironment, RunEnvironment compareEnvironment, Dictionary`2 trendHash, Dictionary`2 baselineTrendHash, Args commandLine, Dictionary`2 baseIndexes, Dictionary`2 compareIndexes, String html, RerunData regressionTraceFiles, RerunData improvementTraceFiles, IStorageClientFactory storageClientFactory) in /home/vsts/work/1/s/src/perfcommandcore/AutoFiler.cs:line 138
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at System.Threading.Tasks.Task.Wait()
   at perfcommandcore.RazorRenderer.MakeHTMLPage(ComparisonEngine comparison, RunEnvironment baselineEnvironment, RunEnvironment compareEnvironement, DateTime baselineRunDate, DateTime compareRunDate, Dictionary`2 trendHash, Dictionary`2 baselineTrendHash, Args commandLine, IStorageClientFactory storageClientFactory) in /home/vsts/work/1/s/src/perfcommandcore/RazorRenderer.cs:line 387
   at perfcommandcore.Program.Main(String testFilter, String categoryFilter, OS baselineOs, OS compareOs, String baselineCommitish, String compareCommitish, String outputDir, ReportType reportType, Queue baselineQueue, Queue compareQueue, String baselineBuildName, String compareBuildName, Nullable`1 actAsDate, Arch baselineArch, Arch compareArch, Repo baselineRepo, Repo compareRepo, String baselineBranch, String compareBranch, Locale baselineLocale, Locale compareLocale, String reportName, RunClass runClass, Boolean showUnchanged, Boolean uploadReport, Boolean uploadToMain, Boolean skipDownload, Boolean generateLookupInfo, RunKind runKind, Boolean testSameBuild, Double epsilon, Boolean filterDiag, Boolean skipFirstBuild, List`1 compareConfigs, List`1 baselineConfigs, String folderName, Boolean autoFile, Boolean getRuntimeHash, Int32 daysOfBuilds, Boolean allTestHistory, Boolean verbose, Boolean combineTrends, String bimodalCheck, Boolean skipChangePoint, Boolean useNonTopCountersForChange, Boolean coreClr, Boolean mono, Boolean WASM, Boolean MAUI, Boolean dontCollectTraces, Boolean autofileIncludeBdnDisasm, Boolean autofileIncludeJitDisasm, Boolean autofileIncludeDetectionLogicInfo, Boolean aspLab, String aspTableName) in /home/vsts/work/1/s/src/perfcommandcore/Program.cs:line 386
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Span`1& arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at System.CommandLine.Invocation.ModelBindingCommandHandler.InvokeAsync(InvocationContext context)
   at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass23_0.<<UseParseErrorReporting>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass16_0.<<UseHelp>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass27_0.<<UseVersionOption>b__1>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass25_0.<<UseTypoCorrections>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<UseSuggestDirective>b__24_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass22_0.<<UseParseDirective>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass11_0.<<UseDebugDirective>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<RegisterWithDotnetSuggest>b__10_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass6_0.<<ConfigureConsole>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.Builder.CommandLineBuilderExtensions.<>c__DisplayClass14_0.<<UseExceptionHandler>b__0>d.MoveNext()

These are run on Azure Batch so we need to confirm if long paths are already enabled on the VMs.

I have already updated LibGit2Sharp to version 0.30.0 which fixed the issue on my local PC where I have longpaths enabled, but we are still hitting the error during the batch runs.

LoopedBard3 commented 2 weeks ago

We found a temporary solution of using a custom build with the changes from https://github.com/libgit2/libgit2sharp/pull/2120, but still need to investigate a longer term solution until this change is merged.