From bbe0a845323be7c093a0b0cd84f058a55ab3e7fb Mon Sep 17 00:00:00 2001 From: Noi Date: Wed, 27 Jul 2022 22:00:10 -0700 Subject: [PATCH] Add logging for long-running task --- Services/EntityCache/EntityCacheService.cs | 2 +- Services/EntityCache/UserCachingSubservice.cs | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Services/EntityCache/EntityCacheService.cs b/Services/EntityCache/EntityCacheService.cs index ddafc27..509f7d6 100644 --- a/Services/EntityCache/EntityCacheService.cs +++ b/Services/EntityCache/EntityCacheService.cs @@ -10,7 +10,7 @@ class EntityCacheService : Service { internal EntityCacheService(RegexbotClient bot) : base(bot) { // Currently we only have UserCache. May add Channel and Server caches later. - _uc = new UserCachingSubservice(bot); + _uc = new UserCachingSubservice(bot, Log); _mc = new MessageCachingSubservice(bot, Log); } diff --git a/Services/EntityCache/UserCachingSubservice.cs b/Services/EntityCache/UserCachingSubservice.cs index e69b189..1ffb072 100644 --- a/Services/EntityCache/UserCachingSubservice.cs +++ b/Services/EntityCache/UserCachingSubservice.cs @@ -10,19 +10,23 @@ namespace RegexBot.Services.EntityCache; /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "CA1822:Mark members as static")] class UserCachingSubservice { - internal UserCachingSubservice(RegexbotClient bot) { + private readonly Action _log; + + internal UserCachingSubservice(RegexbotClient bot, Action logMethod) { + _log = logMethod; bot.DiscordClient.GuildMembersDownloaded += DiscordClient_GuildMembersDownloaded; bot.DiscordClient.GuildMemberUpdated += DiscordClient_GuildMemberUpdated; bot.DiscordClient.UserUpdated += DiscordClient_UserUpdated; } - private async Task DiscordClient_GuildMembersDownloaded(SocketGuild arg) { + _log($"{arg.Name}: Full member list obtained. Cache update in progress."); using var db = new BotDatabaseContext(); foreach (var user in arg.Users) { UpdateUser(user, db); UpdateGuildUser(user, db); } - await db.SaveChangesAsync(); + var changes = await db.SaveChangesAsync(); + _log($"{arg.Name}: Member caches updated ({changes} database writes)."); } private async Task DiscordClient_GuildMemberUpdated(Discord.Cacheable old, SocketGuildUser current) {