From 30e7a68f3ce11c2feb7812ec787c36fda4a6bb18 Mon Sep 17 00:00:00 2001 From: Shea4 Date: Sat, 24 Jul 2021 14:20:27 +0100 Subject: [PATCH] Use cached thread pool for queue handling in logger --- Sx4/src/main/java/com/sx4/bot/core/Sx4.java | 3 ++- .../main/java/com/sx4/bot/handlers/LoggerHandler.java | 9 ++++++--- .../main/java/com/sx4/bot/managers/LoggerManager.java | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Sx4/src/main/java/com/sx4/bot/core/Sx4.java b/Sx4/src/main/java/com/sx4/bot/core/Sx4.java index a826eda9..273fd939 100644 --- a/Sx4/src/main/java/com/sx4/bot/core/Sx4.java +++ b/Sx4/src/main/java/com/sx4/bot/core/Sx4.java @@ -22,6 +22,7 @@ import com.jockie.bot.core.option.factory.impl.OptionFactoryImpl; import com.jockie.bot.core.parser.IParser; import com.jockie.bot.core.parser.ParsedResult; +import com.jockie.jda.memory.MemoryOptimizations; import com.mongodb.client.model.Projections; import com.sx4.api.Sx4Server; import com.sx4.bot.annotations.argument.*; @@ -1535,7 +1536,7 @@ public static void main(String[] args) throws Exception { Sx4 bot = new Sx4(); Sx4Server.initiateWebserver(bot); - //MemoryOptimizations.installAll(); + MemoryOptimizations.installOptimizations(); Thread.setDefaultUncaughtExceptionHandler((thread, exception) -> { System.err.println("[Uncaught]"); diff --git a/Sx4/src/main/java/com/sx4/bot/handlers/LoggerHandler.java b/Sx4/src/main/java/com/sx4/bot/handlers/LoggerHandler.java index 1910ac94..d2f00206 100644 --- a/Sx4/src/main/java/com/sx4/bot/handlers/LoggerHandler.java +++ b/Sx4/src/main/java/com/sx4/bot/handlers/LoggerHandler.java @@ -76,6 +76,7 @@ import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.util.*; +import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -88,8 +89,10 @@ public class LoggerHandler implements EventListener { private final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); private final Map managers; - private final ScheduledExecutorService managerExecutor = Executors.newScheduledThreadPool(20); - private final OkHttpClient managerClient = new OkHttpClient.Builder() + + private final ExecutorService managerExecutor = Executors.newCachedThreadPool(); + private final ScheduledExecutorService webhookExecutor = Executors.newScheduledThreadPool(20); + private final OkHttpClient webhookClient = new OkHttpClient.Builder() .callTimeout(3, TimeUnit.SECONDS) .build(); @@ -108,7 +111,7 @@ private LoggerManager getManager(long channelId) { return this.managers.get(channelId); } - LoggerManager manager = new LoggerManager(this.bot, this.managerClient, this.managerExecutor); + LoggerManager manager = new LoggerManager(this.bot, this.managerExecutor, this.webhookClient, this.webhookExecutor); this.managers.put(channelId, manager); return manager; diff --git a/Sx4/src/main/java/com/sx4/bot/managers/LoggerManager.java b/Sx4/src/main/java/com/sx4/bot/managers/LoggerManager.java index 86a98c6f..2dbfcb71 100644 --- a/Sx4/src/main/java/com/sx4/bot/managers/LoggerManager.java +++ b/Sx4/src/main/java/com/sx4/bot/managers/LoggerManager.java @@ -22,7 +22,6 @@ import okhttp3.OkHttpClient; import org.bson.Document; import org.bson.conversions.Bson; -import org.glassfish.jersey.internal.guava.ThreadFactoryBuilder; import java.util.ArrayList; import java.util.List; @@ -101,13 +100,14 @@ public Document getLogger() { private final OkHttpClient webhookClient; private final ScheduledExecutorService webhookExecutor; - private final ExecutorService executor = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder().setNameFormat("logger-executor-%d").build()); + private final ExecutorService executor; private final Sx4 bot; - public LoggerManager(Sx4 bot, OkHttpClient webhookClient, ScheduledExecutorService webhookExecutor) { + public LoggerManager(Sx4 bot, ExecutorService executor, OkHttpClient webhookClient, ScheduledExecutorService webhookExecutor) { this.queue = new LinkedBlockingDeque<>(); this.bot = bot; + this.executor = executor; this.webhookExecutor = webhookExecutor; this.webhookClient = webhookClient; }