Watchdog ValueTask conversions

This commit is contained in:
Jordan Dominion
2023-10-07 15:19:10 -04:00
parent 1db8ce737d
commit fc52eae7ca
4 changed files with 36 additions and 36 deletions
@@ -104,7 +104,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
=> Server?.InstanceRenamed(newInstanceName, cancellationToken) ?? ValueTask.CompletedTask;
/// <inheritdoc />
protected override async Task<MonitorAction> HandleMonitorWakeup(MonitorActivationReason reason, CancellationToken cancellationToken)
protected override async ValueTask<MonitorAction> HandleMonitorWakeup(MonitorActivationReason reason, CancellationToken cancellationToken)
{
switch (reason)
{
@@ -187,7 +187,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
}
/// <inheritdoc />
protected override async Task DisposeAndNullControllersImpl()
protected override async ValueTask DisposeAndNullControllersImpl()
{
var disposeTask = Server?.DisposeAsync();
gracefulRebootRequired = false;
@@ -286,20 +286,20 @@ namespace Tgstation.Server.Host.Components.Watchdog
/// Handler for <see cref="MonitorActivationReason.ActiveServerRebooted"/> when the <see cref="RebootState"/> is <see cref="RebootState.Normal"/>.
/// </summary>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation.</param>
/// <returns>A <see cref="Task{TResult}"/> resulting in the <see cref="MonitorAction"/> to take.</returns>
protected virtual Task<MonitorAction> HandleNormalReboot(CancellationToken cancellationToken)
/// <returns>A <see cref="ValueTask{TResult}"/> resulting in the <see cref="MonitorAction"/> to take.</returns>
protected virtual ValueTask<MonitorAction> HandleNormalReboot(CancellationToken cancellationToken)
{
var settingsUpdatePending = ActiveLaunchParameters != LastLaunchParameters;
var result = settingsUpdatePending ? MonitorAction.Restart : MonitorAction.Continue;
return Task.FromResult(result);
return ValueTask.FromResult(result);
}
/// <summary>
/// Handler for <see cref="MonitorActivationReason.NewDmbAvailable"/>.
/// </summary>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation.</param>
/// <returns>A <see cref="Task"/> representing the running operation.</returns>
protected virtual async Task HandleNewDmbAvailable(CancellationToken cancellationToken)
/// <returns>A <see cref="ValueTask"/> representing the running operation.</returns>
protected virtual async ValueTask HandleNewDmbAvailable(CancellationToken cancellationToken)
{
gracefulRebootRequired = true;
if (Server.CompileJob.DMApiVersion == null)
@@ -317,7 +317,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
/// </summary>
/// <param name="dmbToUse">The <see cref="IDmbProvider"/> to be launched. Will not be disposed by this function.</param>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation.</param>
/// <returns>A <see cref="Task{TResult}"/> resulting in the modified <see cref="IDmbProvider"/> to be used.</returns>
protected virtual Task<IDmbProvider> PrepServerForLaunch(IDmbProvider dmbToUse, CancellationToken cancellationToken) => Task.FromResult(dmbToUse);
/// <returns>A <see cref="ValueTask{TResult}"/> resulting in the modified <see cref="IDmbProvider"/> to be used.</returns>
protected virtual ValueTask<IDmbProvider> PrepServerForLaunch(IDmbProvider dmbToUse, CancellationToken cancellationToken) => ValueTask.FromResult(dmbToUse);
}
}
@@ -78,10 +78,10 @@ namespace Tgstation.Server.Host.Components.Watchdog
}
/// <inheritdoc />
protected override Task ApplyInitialDmb(CancellationToken cancellationToken)
protected override ValueTask ApplyInitialDmb(CancellationToken cancellationToken)
{
// not necessary to hold initial .dmb on Linux because of based inode deletes
return Task.CompletedTask;
return ValueTask.CompletedTask;
}
}
}
@@ -568,8 +568,8 @@ namespace Tgstation.Server.Host.Components.Watchdog
/// <summary>
/// Stops <see cref="MonitorLifetimes(CancellationToken)"/>. Doesn't kill the servers.
/// </summary>
/// <returns><see langword="true"/> if the monitor was running, <see langword="false"/> otherwise.</returns>
protected async Task<bool> StopMonitor()
/// <returns>A <see cref="ValueTask{TResult}"/> resulting in <see langword="true"/> if the monitor was running, <see langword="false"/> otherwise.</returns>
protected async ValueTask<bool> StopMonitor()
{
Logger.LogTrace("StopMonitor");
if (monitorTask == null)
@@ -590,8 +590,8 @@ namespace Tgstation.Server.Host.Components.Watchdog
/// <param name="controller">The <see cref="ISessionController"/> to checkou.</param>
/// <param name="serverName">The name of the server being checked.</param>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation.</param>
/// <returns>A <see cref="Task"/> representing the running operation.</returns>
protected async Task CheckLaunchResult(ISessionController controller, string serverName, CancellationToken cancellationToken)
/// <returns>A <see cref="ValueTask"/> representing the running operation.</returns>
protected async ValueTask CheckLaunchResult(ISessionController controller, string serverName, CancellationToken cancellationToken)
{
var launchResult = await controller.LaunchResult.WaitAsync(cancellationToken);
@@ -610,7 +610,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
/// Call from <see cref="InitController(ValueTask, ReattachInformation, CancellationToken)"/> when a reattach operation fails to attempt a fresh start.
/// </summary>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation.</param>
/// <returns>A <see cref="Task"/> representing the running operation.</returns>
/// <returns>A <see cref="ValueTask"/> representing the running operation.</returns>
protected async ValueTask ReattachFailure(CancellationToken cancellationToken)
{
// we lost the server, just restart entirely
@@ -626,15 +626,15 @@ namespace Tgstation.Server.Host.Components.Watchdog
/// <summary>
/// Call <see cref="IDisposable.Dispose"/> and null the fields for all <see cref="ISessionController"/>s.
/// </summary>
/// <returns>A <see cref="Task"/> representing the running operation.</returns>
protected abstract Task DisposeAndNullControllersImpl();
/// <returns>A <see cref="ValueTask"/> representing the running operation.</returns>
protected abstract ValueTask DisposeAndNullControllersImpl();
/// <summary>
/// Wrapper for <see cref="DisposeAndNullControllersImpl"/> under a locked context.
/// </summary>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation.</param>
/// <returns>A <see cref="Task"/> representing the running operation.</returns>
protected async Task DisposeAndNullControllers(CancellationToken cancellationToken)
/// <returns>A <see cref="ValueTask"/> representing the running operation.</returns>
protected async ValueTask DisposeAndNullControllers(CancellationToken cancellationToken)
{
Logger.LogTrace("DisposeAndNullControllers");
using (await SemaphoreSlimContext.Lock(controllerDisposeSemaphore, cancellationToken))
@@ -656,8 +656,8 @@ namespace Tgstation.Server.Host.Components.Watchdog
/// </summary>
/// <param name="activationReason">The <see cref="MonitorActivationReason"/> that caused the invocation. Will never be <see cref="MonitorActivationReason.HealthCheck"/>.</param>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation.</param>
/// <returns>A <see cref="Task{TResult}"/> resulting in the <see cref="MonitorAction"/> to take.</returns>
protected abstract Task<MonitorAction> HandleMonitorWakeup(
/// <returns>A <see cref="ValueTask{TResult}"/> resulting in the <see cref="MonitorAction"/> to take.</returns>
protected abstract ValueTask<MonitorAction> HandleMonitorWakeup(
MonitorActivationReason activationReason,
CancellationToken cancellationToken);
@@ -666,8 +666,8 @@ namespace Tgstation.Server.Host.Components.Watchdog
/// </summary>
/// <param name="newCompileJob">The new <see cref="Models.CompileJob"/> being applied.</param>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation.</param>
/// <returns>A <see cref="Task"/> representing the running operation.</returns>
protected async Task BeforeApplyDmb(Models.CompileJob newCompileJob, CancellationToken cancellationToken)
/// <returns>A <see cref="ValueTask"/> representing the running operation.</returns>
protected async ValueTask BeforeApplyDmb(Models.CompileJob newCompileJob, CancellationToken cancellationToken)
{
if (newCompileJob.Id == ActiveCompileJob?.Id)
{
@@ -696,7 +696,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
/// <param name="parameters">An <see cref="IEnumerable{T}"/> of <see cref="string"/> parameters for <paramref name="eventType"/>.</param>
/// <param name="relayToSession">If the event should be sent to DreamDaemon.</param>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation.</param>
/// <returns>A <see cref="Task"/> representing the running operation.</returns>
/// <returns>A <see cref="ValueTask"/> representing the running operation.</returns>
protected async ValueTask HandleEventImpl(EventType eventType, IEnumerable<string> parameters, bool relayToSession, CancellationToken cancellationToken)
{
try
@@ -716,8 +716,8 @@ namespace Tgstation.Server.Host.Components.Watchdog
/// Attempt to restart the monitor from scratch.
/// </summary>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation.</param>
/// <returns>A <see cref="Task"/> representing the running operation.</returns>
async Task MonitorRestart(CancellationToken cancellationToken)
/// <returns>A <see cref="ValueTask"/> representing the running operation.</returns>
async ValueTask MonitorRestart(CancellationToken cancellationToken)
{
Logger.LogTrace("Monitor restart!");
@@ -784,7 +784,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
/// The main loop of the watchdog. Ayschronously waits for events to occur and then responds to them.
/// </summary>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation.</param>
/// <returns>A <see cref="Task"/> representing the running operation.</returns>
/// <returns>A <see cref="ValueTask"/> representing the running operation.</returns>
#pragma warning disable CA1502
async Task MonitorLifetimes(CancellationToken cancellationToken)
{
@@ -1043,8 +1043,8 @@ namespace Tgstation.Server.Host.Components.Watchdog
/// Handles a watchdog health check.
/// </summary>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation.</param>
/// <returns>A <see cref="Task{TResult}"/> resulting in the next <see cref="MonitorAction"/> to take.</returns>
async Task<MonitorAction> HandleHealthCheck(CancellationToken cancellationToken)
/// <returns>A <see cref="ValueTask{TResult}"/> resulting in the next <see cref="MonitorAction"/> to take.</returns>
async ValueTask<MonitorAction> HandleHealthCheck(CancellationToken cancellationToken)
{
Logger.LogTrace("Sending health check to active server...");
var activeServer = GetActiveController();
@@ -125,7 +125,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
}
/// <inheritdoc />
protected override async Task DisposeAndNullControllersImpl()
protected override async ValueTask DisposeAndNullControllersImpl()
{
await base.DisposeAndNullControllersImpl();
@@ -138,7 +138,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
}
/// <inheritdoc />
protected override async Task<MonitorAction> HandleNormalReboot(CancellationToken cancellationToken)
protected override async ValueTask<MonitorAction> HandleNormalReboot(CancellationToken cancellationToken)
{
if (pendingSwappable != null)
{
@@ -219,7 +219,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
}
/// <inheritdoc />
protected override async Task HandleNewDmbAvailable(CancellationToken cancellationToken)
protected override async ValueTask HandleNewDmbAvailable(CancellationToken cancellationToken)
{
IDmbProvider compileJobProvider = DmbFactory.LockNextDmb(1);
bool canSeamlesslySwap = true;
@@ -275,7 +275,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
}
/// <inheritdoc />
protected sealed override async Task<IDmbProvider> PrepServerForLaunch(IDmbProvider dmbToUse, CancellationToken cancellationToken)
protected sealed override async ValueTask<IDmbProvider> PrepServerForLaunch(IDmbProvider dmbToUse, CancellationToken cancellationToken)
{
if (ActiveSwappable != null)
throw new InvalidOperationException("Expected activeSwappable to be null!");
@@ -305,7 +305,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
/// </summary>
/// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation.</param>
/// <returns>A <see cref="Task"/> representing the running operation.</returns>
protected virtual async Task ApplyInitialDmb(CancellationToken cancellationToken)
protected virtual async ValueTask ApplyInitialDmb(CancellationToken cancellationToken)
{
Server.ReattachInformation.InitialDmb = await DmbFactory.FromCompileJob(Server.CompileJob, cancellationToken);
}
@@ -318,7 +318,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
}
/// <inheritdoc />
protected override async Task<MonitorAction> HandleMonitorWakeup(MonitorActivationReason reason, CancellationToken cancellationToken)
protected override async ValueTask<MonitorAction> HandleMonitorWakeup(MonitorActivationReason reason, CancellationToken cancellationToken)
{
var result = await base.HandleMonitorWakeup(reason, cancellationToken);
if (reason == MonitorActivationReason.ActiveServerStartup)