diff --git a/src/Tgstation.Server.Host/Components/Deployment/DmbFactory.cs b/src/Tgstation.Server.Host/Components/Deployment/DmbFactory.cs index 775c8ce270..ebec279d77 100644 --- a/src/Tgstation.Server.Host/Components/Deployment/DmbFactory.cs +++ b/src/Tgstation.Server.Host/Components/Deployment/DmbFactory.cs @@ -75,7 +75,7 @@ namespace Tgstation.Server.Host.Components.Deployment readonly IDictionary jobLockCounts; /// - /// representing calls to . + /// representing calls to . /// Task cleanupTask; @@ -254,7 +254,7 @@ namespace Tgstation.Server.Host.Components.Deployment void CleanupAction() { if (providerSubmitted) - CleanJob(compileJob); + CleanRegisteredCompileJob(compileJob); } var newProvider = new DmbProvider(compileJob, ioManager, CleanupAction); @@ -367,8 +367,7 @@ namespace Tgstation.Server.Host.Components.Deployment try { ++deleting; - await eventConsumer.HandleEvent(EventType.DeploymentCleanup, new List { x }, cancellationToken); - await ioManager.DeleteDirectory(x, cancellationToken); + await DeleteCompileJobContent(x, cancellationToken); } catch (OperationCanceledException) { @@ -396,21 +395,19 @@ namespace Tgstation.Server.Host.Components.Deployment /// Delete the of . /// /// The to clean. - void CleanJob(CompileJob job) + void CleanRegisteredCompileJob(CompileJob job) { async Task HandleCleanup() { - // This needs to happen first - await eventConsumer.HandleEvent(EventType.DeploymentCleanup, new List { job.DirectoryName.ToString() }, cleanupCts.Token); - var deleteJob = ioManager.DeleteDirectory(job.DirectoryName.ToString(), cleanupCts.Token); - var remoteDeploymentManager = remoteDeploymentManagerFactory.CreateRemoteDeploymentManager( - metadata, - job); + // First kill the GitHub deployment + var remoteDeploymentManager = remoteDeploymentManagerFactory.CreateRemoteDeploymentManager(metadata, job); // DCT: None available var deploymentJob = remoteDeploymentManager.MarkInactive(job, default); + + var deleteTask = DeleteCompileJobContent(job.DirectoryName.ToString(), cleanupCts.Token); var otherTask = cleanupTask; - await Task.WhenAll(otherTask, deleteJob, deploymentJob); + await Task.WhenAll(otherTask, deleteTask, deploymentJob); } lock (jobLockCounts) @@ -426,5 +423,18 @@ namespace Tgstation.Server.Host.Components.Deployment logger.LogTrace("Compile job {0} lock count now: {1}", job.Id, decremented); } } + + /// + /// Handles cleaning the resources of a . + /// + /// The directory to cleanup. + /// The for this . + /// The deletion task + async Task DeleteCompileJobContent(string directory, CancellationToken cancellationToken) + { + // Then call the cleanup event, waiting here first + await eventConsumer.HandleEvent(EventType.DeploymentCleanup, new List { directory }, cancellationToken); + await ioManager.DeleteDirectory(directory, cancellationToken); + } } }