Add missing Dispose guard

This commit is contained in:
Jordan Dominion
2025-07-29 18:20:06 -04:00
parent 35a069e7d1
commit 384cdf27ce
@@ -315,102 +315,109 @@ namespace Tgstation.Server.Host.Components
eventConsumer,
dmbFactory,
loggerFactory.CreateLogger<EngineManager>());
var commandFactory = new CommandFactory(assemblyInformationProvider, engineManager, repoManager, databaseContextFactory, dmbFactory, metadata);
var chatManager = chatFactory.CreateChatManager(commandFactory, metadata.ChatSettings);
try
{
var reattachInfoHandler = new SessionPersistor(
databaseContextFactory,
dmbFactory,
processExecutor,
loggerFactory.CreateLogger<SessionPersistor>(),
metadata);
var commandFactory = new CommandFactory(assemblyInformationProvider, engineManager, repoManager, databaseContextFactory, dmbFactory, metadata);
var sessionControllerFactory = new SessionControllerFactory(
processExecutor,
engineManager,
topicClientFactory,
cryptographySuite,
assemblyInformationProvider,
gameIoManager,
diagnosticsIOManager,
chatManager,
networkPromptReaper,
platformIdentifier,
bridgeRegistrar,
serverPortProvider,
eventConsumer,
asyncDelayer,
dotnetDumpService,
metricFactory,
loggerFactory,
loggerFactory.CreateLogger<SessionControllerFactory>(),
sessionConfiguration,
metadata);
var watchdog = watchdogFactory.CreateWatchdog(
chatManager,
dmbFactory,
reattachInfoHandler,
sessionControllerFactory,
gameIoManager,
diagnosticsIOManager,
configuration, // watchdog doesn't need itself as an event consumer
remoteDeploymentManagerFactory,
metricFactory,
metadata,
metadata.DreamDaemonSettings!);
var chatManager = chatFactory.CreateChatManager(commandFactory, metadata.ChatSettings);
try
{
eventConsumer.SetWatchdog(watchdog);
commandFactory.SetWatchdog(watchdog);
Instance? instance = null;
var dreamMaker = new DreamMaker(
engineManager,
gameIoManager,
configuration,
sessionControllerFactory,
eventConsumer,
chatManager,
processExecutor,
var reattachInfoHandler = new SessionPersistor(
databaseContextFactory,
dmbFactory,
repoManager,
remoteDeploymentManagerFactory,
processExecutor,
loggerFactory.CreateLogger<SessionPersistor>(),
metadata);
var sessionControllerFactory = new SessionControllerFactory(
processExecutor,
engineManager,
topicClientFactory,
cryptographySuite,
assemblyInformationProvider,
gameIoManager,
diagnosticsIOManager,
chatManager,
networkPromptReaper,
platformIdentifier,
bridgeRegistrar,
serverPortProvider,
eventConsumer,
asyncDelayer,
dotnetDumpService,
metricFactory,
loggerFactory.CreateLogger<DreamMaker>(),
loggerFactory,
loggerFactory.CreateLogger<SessionControllerFactory>(),
sessionConfiguration,
metadata);
instance = new Instance(
metadata,
repoManager,
engineManager,
dreamMaker,
watchdog,
var watchdog = watchdogFactory.CreateWatchdog(
chatManager,
configuration,
dmbFactory,
jobManager,
eventConsumer,
reattachInfoHandler,
sessionControllerFactory,
gameIoManager,
diagnosticsIOManager,
configuration, // watchdog doesn't need itself as an event consumer
remoteDeploymentManagerFactory,
asyncDelayer,
loggerFactory.CreateLogger<Instance>());
metricFactory,
metadata,
metadata.DreamDaemonSettings!);
try
{
eventConsumer.SetWatchdog(watchdog);
commandFactory.SetWatchdog(watchdog);
return instance;
Instance? instance = null;
var dreamMaker = new DreamMaker(
engineManager,
gameIoManager,
configuration,
sessionControllerFactory,
eventConsumer,
chatManager,
processExecutor,
dmbFactory,
repoManager,
remoteDeploymentManagerFactory,
asyncDelayer,
metricFactory,
loggerFactory.CreateLogger<DreamMaker>(),
sessionConfiguration,
metadata);
instance = new Instance(
metadata,
repoManager,
engineManager,
dreamMaker,
watchdog,
chatManager,
configuration,
dmbFactory,
jobManager,
eventConsumer,
remoteDeploymentManagerFactory,
asyncDelayer,
loggerFactory.CreateLogger<Instance>());
return instance;
}
catch
{
await watchdog.DisposeAsync();
throw;
}
}
catch
{
await watchdog.DisposeAsync();
await chatManager.DisposeAsync();
throw;
}
}
catch
{
await chatManager.DisposeAsync();
engineManager.Dispose();
throw;
}
}