diff --git a/build/Version.props b/build/Version.props
index 61d13ad89d..a165f87f99 100644
--- a/build/Version.props
+++ b/build/Version.props
@@ -3,7 +3,7 @@
- 5.3.2
+ 5.3.3
4.4.0
9.8.1
10.2.0
diff --git a/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs b/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs
index e8464b0d89..1838dceeb7 100644
--- a/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs
+++ b/src/Tgstation.Server.Host/Components/Deployment/DreamMaker.cs
@@ -719,18 +719,40 @@ namespace Tgstation.Server.Host.Components.Deployment
{
var noEstimate = !estimatedDuration.HasValue;
progressReporter.StageName = currentStage;
- progressReporter.ReportProgress(noEstimate ? null : 0);
+ double? lastReport = noEstimate ? null : 0;
+ progressReporter.ReportProgress(lastReport);
- var sleepInterval = estimatedDuration.HasValue ? estimatedDuration.Value / 100 : TimeSpan.FromMilliseconds(250);
+ var minimumSleepInterval = TimeSpan.FromMilliseconds(250);
+ var sleepInterval = estimatedDuration.HasValue ? estimatedDuration.Value / 100 : minimumSleepInterval;
+
+ if (estimatedDuration.HasValue)
+ {
+ logger.LogDebug("Compile is expected to take: {0}", estimatedDuration);
+ }
+ else
+ {
+ logger.LogTrace("No metric to estimate compile time.");
+ }
- logger.LogDebug("Compile is expected to take: {0}", estimatedDuration);
try
{
for (var iteration = 0; iteration < (estimatedDuration.HasValue ? 99 : Int32.MaxValue); ++iteration)
{
- await Task.Delay(sleepInterval, cancellationToken);
+ var nextInterval = DateTimeOffset.Now + sleepInterval;
+ do
+ {
+ var remainingSleepThisInterval = nextInterval - DateTimeOffset.Now;
+ var nextSleepSpan = remainingSleepThisInterval < minimumSleepInterval ? remainingSleepThisInterval : minimumSleepInterval;
+
+ await Task.Delay(nextSleepSpan, cancellationToken);
+ progressReporter.StageName = currentStage;
+ progressReporter.ReportProgress(lastReport);
+ }
+ while (DateTimeOffset.Now < nextInterval);
+
progressReporter.StageName = currentStage;
- progressReporter.ReportProgress(noEstimate ? null : sleepInterval * (iteration + 1) / estimatedDuration.Value);
+ lastReport = noEstimate ? null : sleepInterval * (iteration + 1) / estimatedDuration.Value;
+ progressReporter.ReportProgress(lastReport);
}
}
catch (OperationCanceledException)
diff --git a/src/Tgstation.Server.Host/Components/Deployment/Remote/GitHubRemoteDeploymentManager.cs b/src/Tgstation.Server.Host/Components/Deployment/Remote/GitHubRemoteDeploymentManager.cs
index a76434e9a1..5731c82b2a 100644
--- a/src/Tgstation.Server.Host/Components/Deployment/Remote/GitHubRemoteDeploymentManager.cs
+++ b/src/Tgstation.Server.Host/Components/Deployment/Remote/GitHubRemoteDeploymentManager.cs
@@ -305,7 +305,7 @@ namespace Tgstation.Server.Host.Components.Deployment.Remote
compileJob.RevisionInformation.OriginCommitSha,
compileJob.RevisionInformation.CommitSha,
compileJob.GitHubDeploymentId.HasValue
- ? $"{Environment.NewLine}[GitHub Deployments](https://github.com/{remoteRepositoryOwner}/{remoteRepositoryName}/deployments/activity_log?environment=TGS%3A%20{Metadata.Name})"
+ ? $"{Environment.NewLine}[GitHub Deployments](https://github.com/{remoteRepositoryOwner}/{remoteRepositoryName}/deployments/activity_log?environment=TGS%3A+{Metadata.Name.Replace(" ", "+", StringComparison.Ordinal)})"
: String.Empty);
///
diff --git a/src/Tgstation.Server.Host/Controllers/InstanceController.cs b/src/Tgstation.Server.Host/Controllers/InstanceController.cs
index f357240410..b10390820b 100644
--- a/src/Tgstation.Server.Host/Controllers/InstanceController.cs
+++ b/src/Tgstation.Server.Host/Controllers/InstanceController.cs
@@ -303,7 +303,8 @@ namespace Tgstation.Server.Host.Controllers
var attachFileName = ioManager.ConcatPath(originalModel.Path, InstanceAttachFileName);
try
{
- await ioManager.WriteAllBytes(attachFileName, Array.Empty(), cancellationToken);
+ if (await ioManager.DirectoryExists(originalModel.Path, cancellationToken))
+ await ioManager.WriteAllBytes(attachFileName, Array.Empty(), cancellationToken);
}
catch (OperationCanceledException)
{