diff --git a/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs b/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs
index 13c96f350a..e3e8968fd8 100644
--- a/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs
+++ b/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs
@@ -192,7 +192,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
};
///
- protected override void DisposeAndNullControllers()
+ protected override void DisposeAndNullControllersImpl()
{
Server?.Dispose();
Server = null;
diff --git a/src/Tgstation.Server.Host/Components/Watchdog/ExperimentalWatchdog.cs b/src/Tgstation.Server.Host/Components/Watchdog/ExperimentalWatchdog.cs
index 02daf7d157..6547ef6d62 100644
--- a/src/Tgstation.Server.Host/Components/Watchdog/ExperimentalWatchdog.cs
+++ b/src/Tgstation.Server.Host/Components/Watchdog/ExperimentalWatchdog.cs
@@ -392,10 +392,8 @@ namespace Tgstation.Server.Host.Components.Watchdog
}
#pragma warning restore CA1502
- ///
- /// Call on and and set them to
- ///
- protected override void DisposeAndNullControllers()
+ ///
+ protected override void DisposeAndNullControllersImpl()
{
alphaServer?.Dispose();
alphaServer = null;
diff --git a/src/Tgstation.Server.Host/Components/Watchdog/WatchdogBase.cs b/src/Tgstation.Server.Host/Components/Watchdog/WatchdogBase.cs
index 74b3e06371..66837c302a 100644
--- a/src/Tgstation.Server.Host/Components/Watchdog/WatchdogBase.cs
+++ b/src/Tgstation.Server.Host/Components/Watchdog/WatchdogBase.cs
@@ -112,6 +112,11 @@ namespace Tgstation.Server.Host.Components.Watchdog
///
readonly IRestartRegistration restartRegistration;
+ ///
+ /// used for .
+ ///
+ readonly object controllerDisposeLock;
+
///
/// If the should in
///
@@ -201,6 +206,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
ActiveLaunchParameters = initialLaunchParameters;
releaseServers = false;
ActiveParametersUpdated = new TaskCompletionSource