From afcdafa564f1bcf3d002c518f45ea926be71ac2b Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Thu, 14 Jan 2021 13:35:47 -0500 Subject: [PATCH] Add a seperate event for unexpected DreamDaemon exits --- src/DMAPI/tgs.dm | 7 ++++--- src/Tgstation.Server.Host/Components/Events/EventType.cs | 6 ++++++ .../Components/Watchdog/BasicWatchdog.cs | 8 +++++--- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/DMAPI/tgs.dm b/src/DMAPI/tgs.dm index f54d519b9e..c08b5d1ae2 100644 --- a/src/DMAPI/tgs.dm +++ b/src/DMAPI/tgs.dm @@ -97,10 +97,11 @@ #define TGS_EVENT_WATCHDOG_DETACH 16 // We don't actually implement these 3 events as the DMAPI can never receive them. // #define TGS_EVENT_WATCHDOG_LAUNCH 17 -// #define TGS_EVENT_WORLD_END_PROCESS 18 -// #define TGS_EVENT_WORLD_DEL 19 +// #define TGS_EVENT_WATCHDOG_CRASH 18 +// #define TGS_EVENT_WORLD_END_PROCESS 19 +// #define TGS_EVENT_WORLD_DEL 20 /// Watchdog event when TgsInitializationComplete() is called. No parameters. - #define TGS_EVENT_WORLD_PRIME 20 + #define TGS_EVENT_WORLD_PRIME 21 // OTHER ENUMS diff --git a/src/Tgstation.Server.Host/Components/Events/EventType.cs b/src/Tgstation.Server.Host/Components/Events/EventType.cs index 38aed033d9..d0a6b2b4be 100644 --- a/src/Tgstation.Server.Host/Components/Events/EventType.cs +++ b/src/Tgstation.Server.Host/Components/Events/EventType.cs @@ -113,6 +113,12 @@ namespace Tgstation.Server.Host.Components.Events [EventScript("WatchdogLaunch")] WatchdogLaunch, + /// + /// Watchdog event when DreamDaemon exits unexpectedly. No parameters. + /// + [EventScript("WatchdogLaunch")] + WatchdogCrash, + /// /// In between watchdog DreamDaemon restarts if the process has been force-ended by the DMAPI (TgsEndProcess()). No parameters. /// diff --git a/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs b/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs index 176ed5b106..e334bdc63b 100644 --- a/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs +++ b/src/Tgstation.Server.Host/Components/Watchdog/BasicWatchdog.cs @@ -92,10 +92,12 @@ namespace Tgstation.Server.Host.Components.Watchdog switch (reason) { case MonitorActivationReason.ActiveServerCrashed: - if (Server.TerminationWasRequested) - await EventConsumer.HandleEvent(EventType.WorldEndProcess, Enumerable.Empty(), cancellationToken).ConfigureAwait(false); + var eventType = Server.TerminationWasRequested + ? EventType.WorldEndProcess + : EventType.WatchdogCrash; + await EventConsumer.HandleEvent(eventType, Enumerable.Empty(), cancellationToken).ConfigureAwait(false); - string exitWord = Server.TerminationWasRequested ? "exited" : "crashed"; + var exitWord = Server.TerminationWasRequested ? "exited" : "crashed"; if (Server.RebootState == Session.RebootState.Shutdown) { // the time for graceful shutdown is now