Fix swarm updates initiated from the controller failing

This commit is contained in:
Jordan Brown
2021-01-25 20:08:07 -05:00
parent e2a26e96b2
commit 9014e4f7cc
2 changed files with 30 additions and 0 deletions
@@ -535,6 +535,11 @@ namespace Tgstation.Server.Host.Swarm
return false;
}
}
else
{
logger.LogTrace("No need to re-initiate update as it originated here on the swarm controller");
updateCommitTcs = new TaskCompletionSource<bool>();
}
logger.LogDebug("Prepared for update to version {0}", version);
}
@@ -276,11 +276,36 @@ namespace Tgstation.Server.Tests
var updatedAssemblyVersion = FileVersionInfo.GetVersionInfo(updatedAssemblyPath);
Assert.AreEqual(testUpdateVersion, Version.Parse(updatedAssemblyVersion.FileVersion).Semver());
Directory.Delete(server.UpdatePath, true);
}
CheckServerUpdated(controller);
CheckServerUpdated(node1);
CheckServerUpdated(node2);
// regression: test it also works from the controller
serverTask = Task.WhenAll(
node1.Run(cancellationToken),
node2.Run(cancellationToken),
controller.Run(cancellationToken));
using var controllerClient2 = await CreateAdminClient(controller.Url, cancellationToken);
using var node1Client2 = await CreateAdminClient(node1.Url, cancellationToken);
using var node2Client2 = await CreateAdminClient(node2.Url, cancellationToken);
await controllerClient2.Administration.Update(
new Administration
{
NewVersion = testUpdateVersion
},
cancellationToken);
await Task.WhenAny(Task.Delay(TimeSpan.FromMinutes(2)), serverTask);
Assert.IsTrue(serverTask.IsCompleted);
CheckServerUpdated(controller);
CheckServerUpdated(node1);
CheckServerUpdated(node2);
}
finally
{