From d5b69657f990ed4bf91e7a058426cf1cec82428f Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Wed, 20 Dec 2023 23:55:08 -0500 Subject: [PATCH] Jobs can start will `null` `IInstanceCore`s --- src/Tgstation.Server.Host/Components/Instance.cs | 2 +- .../Controllers/DreamDaemonController.cs | 6 +++--- .../Controllers/DreamMakerController.cs | 2 +- src/Tgstation.Server.Host/Controllers/EngineController.cs | 4 ++-- .../Controllers/RepositoryController.cs | 4 ++-- src/Tgstation.Server.Host/Jobs/JobEntrypoint.cs | 2 +- src/Tgstation.Server.Host/Jobs/JobService.cs | 4 +--- 7 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/Tgstation.Server.Host/Components/Instance.cs b/src/Tgstation.Server.Host/Components/Instance.cs index 10be9b18a3..8693e5cb26 100644 --- a/src/Tgstation.Server.Host/Components/Instance.cs +++ b/src/Tgstation.Server.Host/Components/Instance.cs @@ -266,7 +266,7 @@ namespace Tgstation.Server.Host.Components /// A representing the running operation. #pragma warning disable CA1502 // Cyclomatic complexity ValueTask RepositoryAutoUpdateJob( - IInstanceCore core, + IInstanceCore? core, IDatabaseContextFactory databaseContextFactory, Job job, JobProgressReporter progressReporter, diff --git a/src/Tgstation.Server.Host/Controllers/DreamDaemonController.cs b/src/Tgstation.Server.Host/Controllers/DreamDaemonController.cs index f83ec8410f..069b272959 100644 --- a/src/Tgstation.Server.Host/Controllers/DreamDaemonController.cs +++ b/src/Tgstation.Server.Host/Controllers/DreamDaemonController.cs @@ -90,7 +90,7 @@ namespace Tgstation.Server.Host.Controllers var job = Job.Create(JobCode.WatchdogLaunch, AuthenticationContext.User, Instance, DreamDaemonRights.Shutdown); await jobManager.RegisterOperation( job, - (core, databaseContextFactory, paramJob, progressHandler, innerCt) => core.Watchdog.Launch(innerCt), + (core, databaseContextFactory, paramJob, progressHandler, innerCt) => core!.Watchdog.Launch(innerCt), cancellationToken); return Accepted(job.ToApi()); }); @@ -271,7 +271,7 @@ namespace Tgstation.Server.Host.Controllers await jobManager.RegisterOperation( job, - (core, paramJob, databaseContextFactory, progressReporter, ct) => core.Watchdog.Restart(false, ct), + (core, paramJob, databaseContextFactory, progressReporter, ct) => core!.Watchdog.Restart(false, ct), cancellationToken); return Accepted(job.ToApi()); }); @@ -297,7 +297,7 @@ namespace Tgstation.Server.Host.Controllers await jobManager.RegisterOperation( job, - (core, databaseContextFactory, paramJob, progressReporter, ct) => core.Watchdog.CreateDump(ct), + (core, databaseContextFactory, paramJob, progressReporter, ct) => core!.Watchdog.CreateDump(ct), cancellationToken); return Accepted(job.ToApi()); }); diff --git a/src/Tgstation.Server.Host/Controllers/DreamMakerController.cs b/src/Tgstation.Server.Host/Controllers/DreamMakerController.cs index 680f8da731..419bc9c90d 100644 --- a/src/Tgstation.Server.Host/Controllers/DreamMakerController.cs +++ b/src/Tgstation.Server.Host/Controllers/DreamMakerController.cs @@ -151,7 +151,7 @@ namespace Tgstation.Server.Host.Controllers await jobManager.RegisterOperation( job, (core, databaseContextFactory, paramJob, progressReporter, jobCancellationToken) - => core.DreamMaker.DeploymentProcess(paramJob, databaseContextFactory, progressReporter, jobCancellationToken), + => core!.DreamMaker.DeploymentProcess(paramJob, databaseContextFactory, progressReporter, jobCancellationToken), cancellationToken); return Accepted(job.ToApi()); } diff --git a/src/Tgstation.Server.Host/Controllers/EngineController.cs b/src/Tgstation.Server.Host/Controllers/EngineController.cs index 2f83a1afd8..d5072c597f 100644 --- a/src/Tgstation.Server.Host/Controllers/EngineController.cs +++ b/src/Tgstation.Server.Host/Controllers/EngineController.cs @@ -245,7 +245,7 @@ namespace Tgstation.Server.Host.Controllers } await using (zipFileStream) - await core.EngineManager.ChangeVersion( + await core!.EngineManager.ChangeVersion( progressHandler, model.EngineVersion, zipFileStream, @@ -329,7 +329,7 @@ namespace Tgstation.Server.Host.Controllers await jobManager.RegisterOperation( job, (instanceCore, databaseContextFactory, job, progressReporter, jobCancellationToken) - => instanceCore.EngineManager.DeleteVersion(progressReporter, engineVersion, jobCancellationToken), + => instanceCore!.EngineManager.DeleteVersion(progressReporter, engineVersion, jobCancellationToken), cancellationToken); var apiResponse = job.ToApi(); diff --git a/src/Tgstation.Server.Host/Controllers/RepositoryController.cs b/src/Tgstation.Server.Host/Controllers/RepositoryController.cs index dcff26b25e..5d4d686aaf 100644 --- a/src/Tgstation.Server.Host/Controllers/RepositoryController.cs +++ b/src/Tgstation.Server.Host/Controllers/RepositoryController.cs @@ -151,7 +151,7 @@ namespace Tgstation.Server.Host.Controllers job, async (core, databaseContextFactory, paramJob, progressReporter, ct) => { - var repoManager = core.RepositoryManager; + var repoManager = core!.RepositoryManager; using var repos = await repoManager.CloneRepository( origin, cloneBranch, @@ -217,7 +217,7 @@ namespace Tgstation.Server.Host.Controllers var api = currentModel.ToApi(); await jobManager.RegisterOperation( job, - (core, databaseContextFactory, paramJob, progressReporter, ct) => core.RepositoryManager.DeleteRepository(ct), + (core, databaseContextFactory, paramJob, progressReporter, ct) => core!.RepositoryManager.DeleteRepository(ct), cancellationToken); api.ActiveJob = job.ToApi(); return Accepted(api); diff --git a/src/Tgstation.Server.Host/Jobs/JobEntrypoint.cs b/src/Tgstation.Server.Host/Jobs/JobEntrypoint.cs index 79e71b5048..82e81a647c 100644 --- a/src/Tgstation.Server.Host/Jobs/JobEntrypoint.cs +++ b/src/Tgstation.Server.Host/Jobs/JobEntrypoint.cs @@ -17,7 +17,7 @@ namespace Tgstation.Server.Host.Jobs /// The for the operation. /// A representing the running operation. public delegate ValueTask JobEntrypoint( - IInstanceCore instance, + IInstanceCore? instance, IDatabaseContextFactory databaseContextFactory, Job job, JobProgressReporter progressReporter, diff --git a/src/Tgstation.Server.Host/Jobs/JobService.cs b/src/Tgstation.Server.Host/Jobs/JobService.cs index 8db21d3068..ea2782a821 100644 --- a/src/Tgstation.Server.Host/Jobs/JobService.cs +++ b/src/Tgstation.Server.Host/Jobs/JobService.cs @@ -460,10 +460,8 @@ namespace Tgstation.Server.Host.Jobs QueueHubUpdate(job.ToApi(), false); logger.LogTrace("Starting job..."); - var instanceCore = instanceCoreProvider.GetInstance(job.Instance!) - ?? throw new JobException("Could not retrieve instance core for job!"); await operation( - instanceCore, + instanceCoreProvider.GetInstance(job.Instance!), databaseContextFactory, job, new JobProgressReporter(