From 44157b5234ec76b5d43b243ee05ea4f21a9b2693 Mon Sep 17 00:00:00 2001 From: Ferenc Hammerl Date: Mon, 7 Feb 2022 13:56:27 +0100 Subject: [PATCH] Use list again instead of concurrent --- src/Runner.Listener/SelfUpdater.cs | 57 ++++++++++++++---------------- 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/src/Runner.Listener/SelfUpdater.cs b/src/Runner.Listener/SelfUpdater.cs index e2f0b2b58..219eeb305 100644 --- a/src/Runner.Listener/SelfUpdater.cs +++ b/src/Runner.Listener/SelfUpdater.cs @@ -38,7 +38,7 @@ namespace GitHub.Runner.Listener private IRunnerServer _runnerServer; private int _poolId; private int _agentId; - private readonly ConcurrentQueue _updateTrace = new ConcurrentQueue(); + private readonly List _updateTrace = new List(); private Task _cloneAndCalculateContentHashTask; private string _dotnetRuntimeCloneDirectory; private string _externalsCloneDirectory; @@ -80,7 +80,7 @@ namespace GitHub.Runner.Listener } Trace.Info($"An update is available."); - _updateTrace.Enqueue($"RunnerPlatform: {_targetPackage.Platform}"); + _updateTrace.Add($"RunnerPlatform: {_targetPackage.Platform}"); // Print console line that warn user not shutdown runner. await UpdateRunnerUpdateStateAsync("Runner update in progress, do not shutdown runner."); @@ -120,7 +120,7 @@ namespace GitHub.Runner.Listener Trace.Info($"Delete old version runner backup."); stopWatch.Stop(); // generate update script from template - _updateTrace.Enqueue($"DeleteRunnerBackupTime: {stopWatch.ElapsedMilliseconds}ms"); + _updateTrace.Add($"DeleteRunnerBackupTime: {stopWatch.ElapsedMilliseconds}ms"); await UpdateRunnerUpdateStateAsync("Generate and execute update script."); string updateScript = GenerateUpdateScript(restartInteractiveRunner); @@ -145,14 +145,14 @@ namespace GitHub.Runner.Listener totalUpdateTime.Stop(); - _updateTrace.Enqueue($"TotalUpdateTime: {totalUpdateTime.ElapsedMilliseconds}ms"); + _updateTrace.Add($"TotalUpdateTime: {totalUpdateTime.ElapsedMilliseconds}ms"); await UpdateRunnerUpdateStateAsync("Runner will exit shortly for update, should be back online within 10 seconds."); return true; } catch (Exception ex) { - _updateTrace.Enqueue(ex.ToString()); + _updateTrace.Add(ex.ToString()); throw; } finally @@ -260,9 +260,9 @@ namespace GitHub.Runner.Listener } } - _updateTrace.Enqueue($"DownloadUrl: {packageDownloadUrl}"); - _updateTrace.Enqueue($"RuntimeTrimmed: {runtimeTrimmed}"); - _updateTrace.Enqueue($"ExternalsTrimmed: {externalsTrimmed}"); + _updateTrace.Add($"DownloadUrl: {packageDownloadUrl}"); + _updateTrace.Add($"RuntimeTrimmed: {runtimeTrimmed}"); + _updateTrace.Add($"ExternalsTrimmed: {externalsTrimmed}"); try { @@ -328,14 +328,14 @@ namespace GitHub.Runner.Listener if (fallbackToFullPackage) { Trace.Error("Something wrong with the trimmed runner package, failback to use the full package for runner updates."); - _updateTrace.Enqueue($"FallbackToFullPackage: {fallbackToFullPackage}"); + _updateTrace.Add($"FallbackToFullPackage: {fallbackToFullPackage}"); IOUtil.DeleteDirectory(latestRunnerDirectory, token); Directory.CreateDirectory(latestRunnerDirectory); packageDownloadUrl = _targetPackage.DownloadUrl; packageHashValue = _targetPackage.HashValue; - _updateTrace.Enqueue($"DownloadUrl: {packageDownloadUrl}"); + _updateTrace.Add($"DownloadUrl: {packageDownloadUrl}"); try { @@ -453,9 +453,9 @@ namespace GitHub.Runner.Listener Trace.Info($"Download runner: finished download"); downloadSucceeded = true; stopWatch.Stop(); - _updateTrace.Enqueue($"PackageDownloadTime: {stopWatch.ElapsedMilliseconds}ms"); - _updateTrace.Enqueue($"Attempts: {attempt}"); - _updateTrace.Enqueue($"PackageSize: {downloadSize / 1024 / 1024}MB"); + _updateTrace.Add($"PackageDownloadTime: {stopWatch.ElapsedMilliseconds}ms"); + _updateTrace.Add($"Attempts: {attempt}"); + _updateTrace.Add($"PackageSize: {downloadSize / 1024 / 1024}MB"); break; } catch (OperationCanceledException) when (token.IsCancellationRequested) @@ -505,7 +505,7 @@ namespace GitHub.Runner.Listener stopWatch.Stop(); Trace.Info($"Validated Runner Hash matches {archiveFile} : {packageHashValue}"); - _updateTrace.Enqueue($"ValidateHashTime: {stopWatch.ElapsedMilliseconds}ms"); + _updateTrace.Add($"ValidateHashTime: {stopWatch.ElapsedMilliseconds}ms"); } } } @@ -561,7 +561,7 @@ namespace GitHub.Runner.Listener stopWatch.Stop(); Trace.Info($"Finished getting latest runner package at: {extractDirectory}."); - _updateTrace.Enqueue($"PackageExtractTime: {stopWatch.ElapsedMilliseconds}ms"); + _updateTrace.Add($"PackageExtractTime: {stopWatch.ElapsedMilliseconds}ms"); } private Task CopyLatestRunnerToRoot(string latestRunnerDirectory, CancellationToken token) @@ -594,7 +594,7 @@ namespace GitHub.Runner.Listener } stopWatch.Stop(); - _updateTrace.Enqueue($"CopyRunnerToRootTime: {stopWatch.ElapsedMilliseconds}ms"); + _updateTrace.Add($"CopyRunnerToRootTime: {stopWatch.ElapsedMilliseconds}ms"); return Task.CompletedTask; } @@ -720,14 +720,9 @@ namespace GitHub.Runner.Listener _terminal.WriteLine(currentState); var traces = new List(); - while (_updateTrace.TryDequeue(out var trace)) + if (_updateTrace.Count > 0) { - traces.Add(trace); - } - - if (traces.Count > 0) - { - foreach (var trace in traces) + foreach (var trace in _updateTrace) { Trace.Info(trace); } @@ -735,7 +730,7 @@ namespace GitHub.Runner.Listener try { - await _runnerServer.UpdateAgentUpdateStateAsync(_poolId, _agentId, currentState, string.Join(Environment.NewLine, traces)); + await _runnerServer.UpdateAgentUpdateStateAsync(_poolId, _agentId, currentState, string.Join(Environment.NewLine, _updateTrace)); _updateTrace.Clear(); } catch (VssResourceNotFoundException) @@ -811,7 +806,7 @@ namespace GitHub.Runner.Listener finally { stopWatch.Stop(); - _updateTrace.Enqueue($"{nameof(RestoreTrimmedExternals)}Time: {stopWatch.ElapsedMilliseconds}ms"); + _updateTrace.Add($"{nameof(RestoreTrimmedExternals)}Time: {stopWatch.ElapsedMilliseconds}ms"); } } @@ -863,7 +858,7 @@ namespace GitHub.Runner.Listener finally { stopWatch.Stop(); - _updateTrace.Enqueue($"{nameof(RestoreTrimmedDotnetRuntime)}Time: {stopWatch.ElapsedMilliseconds}ms"); + _updateTrace.Add($"{nameof(RestoreTrimmedDotnetRuntime)}Time: {stopWatch.ElapsedMilliseconds}ms"); } } @@ -894,7 +889,7 @@ namespace GitHub.Runner.Listener var externalsHash = await HashFiles(externalsCloneDirectory, token); Trace.Info($"Externals content hash: {externalsHash}"); _contentHashes[_externals] = externalsHash; - _updateTrace.Enqueue($"ExternalsHash: {_contentHashes[_externals]}"); + _updateTrace.Add($"ExternalsHash: {_contentHashes[_externals]}"); } else { @@ -918,7 +913,7 @@ namespace GitHub.Runner.Listener var runtimeHash = await HashFiles(dotnetRuntimeCloneDirectory, token); Trace.Info($"Runtime content hash: {runtimeHash}"); _contentHashes[_dotnetRuntime] = runtimeHash; - _updateTrace.Enqueue($"DotnetRuntimeHash: {_contentHashes[_dotnetRuntime]}"); + _updateTrace.Add($"DotnetRuntimeHash: {_contentHashes[_dotnetRuntime]}"); } else { @@ -988,7 +983,7 @@ namespace GitHub.Runner.Listener finally { stopWatch.Stop(); - _updateTrace.Enqueue($"{nameof(CloneDotnetRuntime)}Time: {stopWatch.ElapsedMilliseconds}ms"); + _updateTrace.Add($"{nameof(CloneDotnetRuntime)}Time: {stopWatch.ElapsedMilliseconds}ms"); } return false; @@ -1014,7 +1009,7 @@ namespace GitHub.Runner.Listener finally { stopWatch.Stop(); - _updateTrace.Enqueue($"{nameof(CloneExternals)}Time: {stopWatch.ElapsedMilliseconds}ms"); + _updateTrace.Add($"{nameof(CloneExternals)}Time: {stopWatch.ElapsedMilliseconds}ms"); } return Task.FromResult(false); @@ -1068,7 +1063,7 @@ namespace GitHub.Runner.Listener } stopWatch.Stop(); - _updateTrace.Enqueue($"{nameof(HashFiles)}{Path.GetFileName(fileFolder)}Time: {stopWatch.ElapsedMilliseconds}ms"); + _updateTrace.Add($"{nameof(HashFiles)}{Path.GetFileName(fileFolder)}Time: {stopWatch.ElapsedMilliseconds}ms"); return hashResult; } }