From 2f4aaab0abb863bced0c84b2ee238baaef28c15e Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Sat, 14 Oct 2023 13:41:27 -0400 Subject: [PATCH] Additional logging around engine deletion --- .../Components/Engine/EngineManager.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Tgstation.Server.Host/Components/Engine/EngineManager.cs b/src/Tgstation.Server.Host/Components/Engine/EngineManager.cs index edd5be0deb..9ed63b0e26 100644 --- a/src/Tgstation.Server.Host/Components/Engine/EngineManager.cs +++ b/src/Tgstation.Server.Host/Components/Engine/EngineManager.cs @@ -204,13 +204,18 @@ namespace Tgstation.Server.Host.Components.Engine throw new JobException(ErrorCode.EngineCannotDeleteActiveVersion); ReferenceCountingContainer container; + logger.LogTrace("Waiting to acquire installedVersions lock..."); lock (installedVersions) + { if (!installedVersions.TryGetValue(version, out container)) { logger.LogTrace("Version {version} already deleted.", version); return; } + logger.LogTrace("Installation container acquired for deletion"); + } + logger.LogInformation("Deleting version {version}...", version); progressReporter.StageName = "Waiting for version to not be in use..."; while (true) @@ -222,6 +227,7 @@ namespace Tgstation.Server.Host.Components.Engine using (await SemaphoreSlimContext.Lock(changeDeleteSemaphore, cancellationToken)) activeVersionUpdate = activeVersionChanged.Task; + logger.LogTrace("Waiting for container.OnZeroReferences or switch of active version..."); await Task.WhenAny( containerTask, activeVersionUpdate) @@ -229,6 +235,8 @@ namespace Tgstation.Server.Host.Components.Engine if (containerTask.IsCompleted) logger.LogTrace("All locks for version {version} are gone", version); + else + logger.LogTrace("activeVersion changed, we'll likely have to wait again. Acquiring semaphore..."); using (await SemaphoreSlimContext.Lock(changeDeleteSemaphore, cancellationToken)) { @@ -237,6 +245,7 @@ namespace Tgstation.Server.Host.Components.Engine throw new JobException(ErrorCode.EngineCannotDeleteActiveVersion); bool proceed; + logger.LogTrace("Locking installedVersions..."); lock (installedVersions) { proceed = container.OnZeroReferences.IsCompleted; @@ -256,7 +265,10 @@ namespace Tgstation.Server.Host.Components.Engine } if (proceed) + { + logger.LogTrace("Proceeding with installation deletion..."); installedVersions.Remove(version); + } } } @@ -277,6 +289,8 @@ namespace Tgstation.Server.Host.Components.Engine logger.LogDebug( "Another lock was acquired before we could remove version {version} from the list. We will have to wait again.", version); + else + logger.LogTrace("Not proceeding for some reason or another"); } } }