From 56728d1fbad0cbb03f8950a3b301bb28e24db76d Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Tue, 13 Sep 2022 12:18:02 +0200 Subject: [PATCH] more redis fixes --- .../MareSynchronosServer/Startup.cs | 2 +- .../Discord/DiscordBot.cs | 4 +++- .../MareSynchronosServices/Startup.cs | 2 +- .../DistributedClientIdentificationService.cs | 21 ++++++++++++++----- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/MareSynchronosServer/MareSynchronosServer/Startup.cs b/MareSynchronosServer/MareSynchronosServer/Startup.cs index 8e41306..de7a6f9 100644 --- a/MareSynchronosServer/MareSynchronosServer/Startup.cs +++ b/MareSynchronosServer/MareSynchronosServer/Startup.cs @@ -137,7 +137,7 @@ namespace MareSynchronosServer services.AddStackExchangeRedisCache(opt => { opt.Configuration = redis; - opt.InstanceName = "MareSynchronos"; + opt.InstanceName = "MareSynchronosCache:"; }); services.AddSingleton(); services.AddHostedService(p => p.GetService()); diff --git a/MareSynchronosServer/MareSynchronosServices/Discord/DiscordBot.cs b/MareSynchronosServer/MareSynchronosServices/Discord/DiscordBot.cs index 9a2ce51..dabb1b5 100644 --- a/MareSynchronosServer/MareSynchronosServices/Discord/DiscordBot.cs +++ b/MareSynchronosServer/MareSynchronosServices/Discord/DiscordBot.cs @@ -690,7 +690,9 @@ public class DiscordBot : IHostedService updateStatusCts = new(); while (!updateStatusCts.IsCancellationRequested) { - await discordClient.SetActivityAsync(new Game("Mare for " + clientService.GetOnlineUsers() + " Users")).ConfigureAwait(false); + var onlineUsers = clientService.GetOnlineUsers(); + logger.LogInformation("Users online: " + onlineUsers); + await discordClient.SetActivityAsync(new Game("Mare for " + onlineUsers + " Users")).ConfigureAwait(false); await Task.Delay(TimeSpan.FromSeconds(15)).ConfigureAwait(false); } } diff --git a/MareSynchronosServer/MareSynchronosServices/Startup.cs b/MareSynchronosServer/MareSynchronosServices/Startup.cs index bb3eb81..a8aa0ae 100644 --- a/MareSynchronosServer/MareSynchronosServices/Startup.cs +++ b/MareSynchronosServer/MareSynchronosServices/Startup.cs @@ -58,7 +58,7 @@ public class Startup services.AddStackExchangeRedisCache(opt => { opt.Configuration = redis; - opt.InstanceName = "MareSynchronos"; + opt.InstanceName = "MareSynchronosCache:"; }); services.AddSingleton(); services.AddHostedService(p => p.GetService()); diff --git a/MareSynchronosServer/MareSynchronosShared/Services/DistributedClientIdentificationService.cs b/MareSynchronosServer/MareSynchronosShared/Services/DistributedClientIdentificationService.cs index a8ca046..89ff6a7 100644 --- a/MareSynchronosServer/MareSynchronosShared/Services/DistributedClientIdentificationService.cs +++ b/MareSynchronosServer/MareSynchronosShared/Services/DistributedClientIdentificationService.cs @@ -2,6 +2,7 @@ using MareSynchronosShared.Metrics; using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; using StackExchange.Redis; namespace MareSynchronosShared.Services; @@ -9,21 +10,31 @@ namespace MareSynchronosShared.Services; public class DistributedClientIdentificationService : BaseClientIdentificationService { private readonly IDistributedCache distributedCache; + private readonly ILogger logger; private readonly IConfiguration configuration; private const string RedisPrefix = "uidcache:"; - public DistributedClientIdentificationService(MareMetrics metrics, IDistributedCache distributedCache, IConfiguration configuration) : base(metrics) + public DistributedClientIdentificationService(MareMetrics metrics, IDistributedCache distributedCache, IConfiguration configuration, ILogger logger) : base(metrics) { this.distributedCache = distributedCache; + this.logger = logger; this.configuration = configuration.GetSection("MareSynchronos"); } public override int GetOnlineUsers() { - var redis = configuration.GetValue("RedisConnectionString"); - var conn = ConnectionMultiplexer.Connect(redis); - var endpoint = conn.GetEndPoints().First(); - return conn.GetServer(endpoint).Keys(pattern: RedisPrefix + "*").Count(); + try + { + var redis = configuration.GetValue("RedisConnectionString"); + var conn = ConnectionMultiplexer.Connect(redis); + var endpoint = conn.GetEndPoints().First(); + return conn.GetServer(endpoint).Keys(pattern: "*" + RedisPrefix + "*").Count(); + } + catch (Exception ex) + { + logger.LogError(ex, "Error during GetOnlineUsers"); + return 0; + } } public override string? GetCharacterIdentForUid(string uid)