From d20d8a0e3877680f5b4b417db84259be255ae334 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Mon, 4 Oct 2021 12:56:40 -0400 Subject: [PATCH 1/3] Fix repository progress calculations --- src/Tgstation.Server.Host/Components/Repository/Repository.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Tgstation.Server.Host/Components/Repository/Repository.cs b/src/Tgstation.Server.Host/Components/Repository/Repository.cs index 55603a08d44..0ebddb26409 100644 --- a/src/Tgstation.Server.Host/Components/Repository/Repository.cs +++ b/src/Tgstation.Server.Host/Components/Repository/Repository.cs @@ -1020,7 +1020,7 @@ await Task.WhenAll( CheckoutProgressHandler CheckoutProgressHandler(JobProgressReporter progressReporter, string stage) => (a, completedSteps, totalSteps) => { int? percentage; - if (totalSteps > completedSteps || totalSteps == 0) + if (totalSteps < completedSteps || totalSteps == 0) percentage = null; else { @@ -1053,7 +1053,7 @@ TransferProgressHandler TransferProgressHandler(JobProgressReporter progressRepo float? percentage; var totalObjectsToProcess = transferProgress.TotalObjects * 2; var processedObjects = transferProgress.IndexedObjects + transferProgress.ReceivedObjects; - if (totalObjectsToProcess > processedObjects || totalObjectsToProcess == 0) + if (totalObjectsToProcess < processedObjects || totalObjectsToProcess == 0) percentage = null; else { From 40a6ad8d63729e8bf22171d39f6dac4bbb4142d6 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Tue, 5 Oct 2021 14:58:57 -0400 Subject: [PATCH 2/3] Version bump to 4.15.3 --- build/Version.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Version.props b/build/Version.props index f859f3720cb..d6c8e492e34 100644 --- a/build/Version.props +++ b/build/Version.props @@ -3,7 +3,7 @@ - 4.15.2 + 4.15.3 4.0.0 9.3.0 9.3.0 From 19d2d750750eada504775331c5cc1dee4c7c3c62 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Tue, 5 Oct 2021 16:16:47 -0400 Subject: [PATCH 3/3] Fix NullReferenceException on ChatManager shutdown --- src/Tgstation.Server.Host/Components/Chat/ChatManager.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Tgstation.Server.Host/Components/Chat/ChatManager.cs b/src/Tgstation.Server.Host/Components/Chat/ChatManager.cs index 3e2851e5c40..b5f105ea3e1 100644 --- a/src/Tgstation.Server.Host/Components/Chat/ChatManager.cs +++ b/src/Tgstation.Server.Host/Components/Chat/ChatManager.cs @@ -593,16 +593,20 @@ async Task ProcessMessage(IProvider provider, Message message, CancellationToken } // map the channel if it's private and we haven't seen it + var providerChannelId = message.User.Channel.RealId; KeyValuePair? mappedChannel; long providerId; lock (providers) { + // important, otherwise we could end up processing during shutdown + cancellationToken.ThrowIfCancellationRequested(); + providerId = providers .Where(x => x.Value == provider) .Select(x => x.Key) .First(); mappedChannel = mappedChannels - .Where(x => x.Value.ProviderId == providerId && x.Value.ProviderChannelId == message.User.Channel.RealId) + .Where(x => x.Value.ProviderId == providerId && x.Value.ProviderChannelId == providerChannelId) .FirstOrDefault(); } @@ -648,7 +652,8 @@ await SendMessage( return; } - var mapping = mappedChannel.Value.Value; + var mappingNonNullableKvp = mappedChannel.Value; + var mapping = mappingNonNullableKvp.Value; message.User.Channel.Id = mapping.Channel.Id; message.User.Channel.Tag = mapping.Channel.Tag;