diff --git a/src/Tgstation.Server.Host/Components/Instance.cs b/src/Tgstation.Server.Host/Components/Instance.cs index 2db114c54f..b676c9f94f 100644 --- a/src/Tgstation.Server.Host/Components/Instance.cs +++ b/src/Tgstation.Server.Host/Components/Instance.cs @@ -185,7 +185,7 @@ namespace Tgstation.Server.Host.Components try { await Task.Delay(TimeSpan.FromMinutes(minutes > Int32.MaxValue ? Int32.MaxValue : (int)minutes), cancellationToken).ConfigureAwait(false); - + logger.LogDebug("Beginning auto update..."); try { Models.User user = null; @@ -202,7 +202,7 @@ namespace Tgstation.Server.Host.Components StartedBy = user }; - var noRepo = false; + var repositoryUpdateSuccess = false; await jobManager.RegisterOperation(repositoryUpdateJob, async (paramJob, databaseContext, progressReporter, jobCancellationToken) => { var repositorySettingsTask = databaseContext.RepositorySettings.Where(x => x.InstanceId == metadata.Id).FirstAsync(jobCancellationToken); @@ -226,8 +226,7 @@ namespace Tgstation.Server.Host.Components { if (repo == null) { - //no repo, no auto updates - noRepo = true; + logger.LogTrace("Aborting repo update, no repository!"); return; } @@ -242,13 +241,15 @@ namespace Tgstation.Server.Host.Components bool shouldSyncTracked; if (repositorySettings.AutoUpdatesKeepTestMerges.Value) { + logger.LogTrace("Preserving test merges..."); var result = await repo.MergeOrigin(repositorySettings.CommitterName, repositorySettings.CommitterEmail, NextProgressReporter(), jobCancellationToken).ConfigureAwait(false); if (!result.HasValue) - return; + throw new JobException("Merge conflict while preserving test merges!"); shouldSyncTracked = result.Value; } else { + logger.LogTrace("Not preserving test merges..."); await repo.ResetToOrigin(NextProgressReporter(), jobCancellationToken).ConfigureAwait(false); shouldSyncTracked = true; } @@ -259,12 +260,16 @@ namespace Tgstation.Server.Host.Components progressReporter(5 * ProgressStep); } + repositoryUpdateSuccess = true; }, cancellationToken).ConfigureAwait(false); await jobManager.WaitForJobCompletion(repositoryUpdateJob, user, cancellationToken, default).ConfigureAwait(false); - if (noRepo) + if (!repositoryUpdateSuccess) + { + logger.LogTrace("Aborting auto update, repository error!"); continue; + } //finally set up the job var compileProcessJob = new Job