diff --git a/src/Tgstation.Server.Host/Components/Deployment/DmbFactory.cs b/src/Tgstation.Server.Host/Components/Deployment/DmbFactory.cs index ccf40188f8..fbeb7d3f92 100644 --- a/src/Tgstation.Server.Host/Components/Deployment/DmbFactory.cs +++ b/src/Tgstation.Server.Host/Components/Deployment/DmbFactory.cs @@ -1,8 +1,9 @@ -using System; +using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; +using System.Text; using System.Threading; using System.Threading.Tasks; @@ -178,7 +179,8 @@ namespace Tgstation.Server.Host.Components.Deployment { var jobId = nextDmbProvider.CompileJob.Require(x => x.Id); var incremented = jobLockCounts[jobId] += lockCount; - logger.LogTrace("Compile job {jobId} lock count now: {lockCount}", jobId, incremented); + logger.LogTrace("Compile job {jobId} lock increased by: {increment}", jobId, lockCount); + LogLockCounts(); return nextDmbProvider; } } @@ -336,6 +338,7 @@ namespace Tgstation.Server.Host.Components.Deployment providerSubmitted = true; + LogLockCounts(); return newProvider; } } @@ -434,14 +437,14 @@ namespace Tgstation.Server.Host.Components.Deployment // First kill the GitHub deployment var remoteDeploymentManager = remoteDeploymentManagerFactory.CreateRemoteDeploymentManager(metadata, job); - // DCT: None available - var deploymentJob = remoteDeploymentManager.MarkInactive(job, CancellationToken.None); + var cancellationToken = cleanupCts.Token; + var deploymentJob = remoteDeploymentManager.MarkInactive(job, cancellationToken); - var deleteTask = DeleteCompileJobContent(job.DirectoryName!.Value.ToString(), cleanupCts.Token); + var deleteTask = DeleteCompileJobContent(job.DirectoryName!.Value.ToString(), cancellationToken); await ValueTaskExtensions.WhenAll(deleteTask, deploymentJob); } - catch (Exception ex) + catch (Exception ex) when (ex is not OperationCanceledException) { logger.LogWarning(ex, "Error cleaning up compile job {jobGuid}!", job.DirectoryName); } @@ -467,6 +470,8 @@ namespace Tgstation.Server.Host.Components.Deployment } else logger.LogError("Extra Dispose of DmbProvider for CompileJob {compileJobId}!", jobId); + + LogLockCounts(); } } @@ -482,5 +487,30 @@ namespace Tgstation.Server.Host.Components.Deployment await eventConsumer.HandleEvent(EventType.DeploymentCleanup, new List { ioManager.ResolvePath(directory) }, true, cancellationToken); await ioManager.DeleteDirectory(directory, cancellationToken); } + + /// + /// Log out the current lock counts to Trace. + /// + /// must be locked before calling this function. + void LogLockCounts() + { + if (jobLockCounts.Count == 0) + { + logger.LogWarning("No compile jobs registered!"); + return; + } + + var builder = new StringBuilder(); + foreach (var jobId in jobLockCounts.Keys) + { + builder.AppendLine(); + builder.Append("\t- "); + builder.Append(jobId); + builder.Append(": "); + builder.Append(jobLockCounts[jobId]); + } + + logger.LogTrace("Compile Job Lock Counts:{details}", builder.ToString()); + } } }