From b4a32e1aaf047cf647ac3ddad188d2675a6505d0 Mon Sep 17 00:00:00 2001 From: Dominion Date: Sun, 2 Apr 2023 12:50:07 -0400 Subject: [PATCH] Fix Directory deletion not working --- src/Tgstation.Server.Host/IO/DefaultIOManager.cs | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/Tgstation.Server.Host/IO/DefaultIOManager.cs b/src/Tgstation.Server.Host/IO/DefaultIOManager.cs index ec1dc01c05..485865877b 100644 --- a/src/Tgstation.Server.Host/IO/DefaultIOManager.cs +++ b/src/Tgstation.Server.Host/IO/DefaultIOManager.cs @@ -41,9 +41,10 @@ namespace Tgstation.Server.Host.IO /// /// of the directory to empty. /// The for the operation. - /// A representing the running operation. - static async Task NormalizeAndDelete(DirectoryInfo dir, CancellationToken cancellationToken) + static void NormalizeAndDelete(DirectoryInfo dir, CancellationToken cancellationToken) { + cancellationToken.ThrowIfCancellationRequested(); + // check if we are a symbolic link if (!dir.Attributes.HasFlag(FileAttributes.Directory) || dir.Attributes.HasFlag(FileAttributes.ReparsePoint)) { @@ -51,14 +52,8 @@ namespace Tgstation.Server.Host.IO return; } - await Task.Yield(); - - var tasks = new List(); foreach (var subDir in dir.EnumerateDirectories()) - { - cancellationToken.ThrowIfCancellationRequested(); - tasks.Add(NormalizeAndDelete(subDir, cancellationToken)); - } + NormalizeAndDelete(subDir, cancellationToken); foreach (var file in dir.EnumerateFiles()) { @@ -67,7 +62,6 @@ namespace Tgstation.Server.Host.IO file.Delete(); } - await Task.WhenAll(tasks); cancellationToken.ThrowIfCancellationRequested(); dir.Delete(true); } @@ -158,7 +152,7 @@ namespace Tgstation.Server.Host.IO return Task.Factory.StartNew( () => NormalizeAndDelete(di, cancellationToken), cancellationToken, - BlockingTaskCreationOptions, + TaskCreationOptions.LongRunning, TaskScheduler.Current); }