diff --git a/build-number.txt b/build-number.txt index 4171fcfc..9b68bb3e 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -1856 \ No newline at end of file +1857 \ No newline at end of file diff --git a/src/main/java/me/chayapak1/chomens_bot/commands/FindAltsCommand.java b/src/main/java/me/chayapak1/chomens_bot/commands/FindAltsCommand.java index 5d8274a6..a1c4f26d 100644 --- a/src/main/java/me/chayapak1/chomens_bot/commands/FindAltsCommand.java +++ b/src/main/java/me/chayapak1/chomens_bot/commands/FindAltsCommand.java @@ -33,6 +33,8 @@ public class FindAltsCommand extends Command { if (bot.database == null) throw new CommandException(Component.text("Database is not enabled in the bot's config")); + bot.database.checkOverloaded(); + final String flag = context.getString(false, true); final boolean allServer = flag.equals("-allserver"); diff --git a/src/main/java/me/chayapak1/chomens_bot/commands/MailCommand.java b/src/main/java/me/chayapak1/chomens_bot/commands/MailCommand.java index f296c0b1..e46a539c 100644 --- a/src/main/java/me/chayapak1/chomens_bot/commands/MailCommand.java +++ b/src/main/java/me/chayapak1/chomens_bot/commands/MailCommand.java @@ -40,6 +40,8 @@ public class MailCommand extends Command { if (bot.database == null) throw new CommandException(Component.text("Database is not enabled in the bot's config")); + bot.database.checkOverloaded(); + final PlayerEntry sender = context.sender; // kinda messy ngl diff --git a/src/main/java/me/chayapak1/chomens_bot/commands/SeenCommand.java b/src/main/java/me/chayapak1/chomens_bot/commands/SeenCommand.java index cbefcb0d..5084827b 100644 --- a/src/main/java/me/chayapak1/chomens_bot/commands/SeenCommand.java +++ b/src/main/java/me/chayapak1/chomens_bot/commands/SeenCommand.java @@ -38,6 +38,8 @@ public class SeenCommand extends Command { if (bot.database == null) throw new CommandException(Component.text("Database is not enabled in the bot's config")); + bot.database.checkOverloaded(); + final String player = context.getString(true, true); boolean online = false; diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/DatabasePlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/DatabasePlugin.java index 6d4ecac9..cb5f1a3d 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/DatabasePlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/DatabasePlugin.java @@ -4,11 +4,14 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder; import me.chayapak1.chomens_bot.Bot; import me.chayapak1.chomens_bot.Configuration; import me.chayapak1.chomens_bot.Main; +import me.chayapak1.chomens_bot.command.CommandException; import me.chayapak1.chomens_bot.util.LoggerUtilities; +import net.kyori.adventure.text.Component; import java.sql.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadPoolExecutor; public class DatabasePlugin { public static final ExecutorService executorService = Executors.newFixedThreadPool( @@ -33,6 +36,14 @@ public class DatabasePlugin { for (Bot bot : Main.bots) bot.database = this; } + public void checkOverloaded () throws CommandException { + final ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) executorService; + + if (threadPoolExecutor.getQueue().size() > 20) throw new CommandException( + Component.text("The executor service is filled with requests!") + ); + } + public boolean execute (String query) throws SQLException { final Statement statement = connection.createStatement();