Skip to content

Commit

Permalink
Merge pull request #1338 from tgstation/ASJFHKSJADH [TGSDeploy]
Browse files Browse the repository at this point in the history
v4.15.2
  • Loading branch information
Cyberboss authored Oct 1, 2021
2 parents b7b7d28 + 5cc083a commit c52d587
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 35 deletions.
2 changes: 1 addition & 1 deletion build/Version.props
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<!-- Integration tests will ensure they match across the board -->
<Import Project="ControlPanelVersion.props" />
<PropertyGroup>
<TgsCoreVersion>4.15.1</TgsCoreVersion>
<TgsCoreVersion>4.15.2</TgsCoreVersion>
<TgsConfigVersion>4.0.0</TgsConfigVersion>
<TgsApiVersion>9.3.0</TgsApiVersion>
<TgsApiLibraryVersion>9.3.0</TgsApiLibraryVersion>
Expand Down
91 changes: 58 additions & 33 deletions src/Tgstation.Server.Host/Components/Chat/ChatManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -593,41 +593,66 @@ async Task ProcessMessage(IProvider provider, Message message, CancellationToken
}

// map the channel if it's private and we haven't seen it
KeyValuePair<ulong, ChannelMapping>? mappedChannel;
long providerId;
lock (providers)
{
var providerId = providers.Where(x => x.Value == provider).Select(x => x.Key).First();
var enumerable = mappedChannels.Where(x => x.Value.ProviderId == providerId && x.Value.ProviderChannelId == message.User.Channel.RealId);
if (message.User.Channel.IsPrivateChannel)
lock (mappedChannels)
if (!enumerable.Any())
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)
.FirstOrDefault();
}

if (message.User.Channel.IsPrivateChannel)
lock (mappedChannels)
if (!mappedChannel.HasValue)
{
ulong newId;
lock (synchronizationLock)
newId = channelIdCounter++;
logger.LogTrace(
"Mapping private channel {0}:{1} as {2}",
message.User.Channel.ConnectionName,
message.User.FriendlyName,
newId);
mappedChannels.Add(newId, new ChannelMapping
{
ulong newId;
lock (synchronizationLock)
newId = channelIdCounter++;
logger.LogTrace(
"Mapping private channel {0}:{1} as {2}",
message.User.Channel.ConnectionName,
message.User.FriendlyName,
newId);
mappedChannels.Add(newId, new ChannelMapping
{
IsWatchdogChannel = false,
ProviderChannelId = message.User.Channel.RealId,
ProviderId = providerId,
Channel = message.User.Channel,
});
message.User.Channel.RealId = newId;
}
else
message.User.Channel.RealId = enumerable.First().Key;
else
IsWatchdogChannel = false,
ProviderChannelId = message.User.Channel.RealId,
ProviderId = providerId,
Channel = message.User.Channel,
});
message.User.Channel.RealId = newId;
}
else
message.User.Channel.RealId = mappedChannel.Value.Key;
else
{
if (!mappedChannel.HasValue)
{
// need to add tag and isAdminChannel
var mapping = enumerable.First().Value;
message.User.Channel.Id = mapping.Channel.Id;
message.User.Channel.Tag = mapping.Channel.Tag;
message.User.Channel.IsAdminChannel = mapping.Channel.IsAdminChannel;
logger.LogError(
"Error mapping message: Provider ID: {providerId}, Channel Real ID: {realId}",
providerId,
message.User.Channel.RealId);
await SendMessage(
"Processing error, check logs!",
new List<ulong>
{
message.User.Channel.RealId,
},
cancellationToken)
.ConfigureAwait(false);
return;
}

var mapping = mappedChannel.Value.Value;

message.User.Channel.Id = mapping.Channel.Id;
message.User.Channel.Tag = mapping.Channel.Tag;
message.User.Channel.IsAdminChannel = mapping.Channel.IsAdminChannel;
}

var splits = new List<string>(message.Content.Trim().Split(' '));
Expand Down Expand Up @@ -795,12 +820,12 @@ async Task MonitorMessages(CancellationToken cancellationToken)
async Task WrapProcessMessage()
{
var localActiveProcessingTask = activeProcessingTask;
await ProcessMessage(completedMessageTaskKvp.Key, message, cancellationToken).ConfigureAwait(false);
using (LogContext.PushProperty("ChatMessage", messageNumber))
await ProcessMessage(completedMessageTaskKvp.Key, message, cancellationToken).ConfigureAwait(false);
await localActiveProcessingTask.ConfigureAwait(false);
}

using (LogContext.PushProperty("ChatMessage", messageNumber))
activeProcessingTask = WrapProcessMessage();
activeProcessingTask = WrapProcessMessage();

messageTasks.Remove(completedMessageTaskKvp.Key);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -489,6 +489,9 @@ async Task CreateUpdatedMessage()
/// <inheritdoc />
public async Task<Result> RespondAsync(IMessageCreate messageCreateEvent, CancellationToken cancellationToken)
{
if (messageCreateEvent == null)
throw new ArgumentNullException(nameof(messageCreateEvent));

if ((messageCreateEvent.Type != MessageType.Default
&& messageCreateEvent.Type != MessageType.InlineReply)
|| messageCreateEvent.Author.ID == currentUserId)
Expand Down Expand Up @@ -582,6 +585,10 @@ await SendMessage(
/// <inheritdoc />
public Task<Result> RespondAsync(IReady readyEvent, CancellationToken cancellationToken)
{
if (readyEvent == null)
throw new ArgumentNullException(nameof(readyEvent));

Logger.LogTrace("Gatway ready. Version: {version}", readyEvent.Version);
gatewayReadyTcs?.TrySetResult(null);
return Task.FromResult(Result.FromSuccess());
}
Expand Down
7 changes: 6 additions & 1 deletion src/Tgstation.Server.Host/Jobs/JobManager.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
Expand Down Expand Up @@ -298,7 +299,11 @@ void UpdateProgress(string stage, int? progress)
{
if (progress.HasValue
&& (progress.Value < 0 || progress.Value > 100))
throw new ArgumentOutOfRangeException(nameof(progress), progress, "Progress must be a value from 0-100!");
{
Debug.Assert(false, "Invalid progress value!");
var exception = new ArgumentOutOfRangeException(nameof(progress), progress, "Progress must be a value from 0-100!");
logger.LogError(exception, "Invalid progress value!");
}

lock (synchronizationLock)
if (jobs.TryGetValue(oldJob.Id.Value, out var handler))
Expand Down

0 comments on commit c52d587

Please sign in to comment.