From c66af0247709b7c1451c1a4c817de99e6410cafc Mon Sep 17 00:00:00 2001 From: Risto Lahtela <24460436+Rsl1122@users.noreply.github.com> Date: Fri, 19 Jun 2020 16:48:15 +0300 Subject: [PATCH] Fixed several commands running database queries on server thread --- .../subcommands/ListPlayersCommand.java | 8 +++- .../commands/subcommands/NetworkCommand.java | 8 +++- .../commands/subcommands/RegisterCommand.java | 16 ++++--- .../manage/ManageRawDataCommand.java | 44 +++++++++++-------- 4 files changed, 46 insertions(+), 30 deletions(-) diff --git a/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/ListPlayersCommand.java b/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/ListPlayersCommand.java index 204d9a0c6..41eebed13 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/ListPlayersCommand.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/ListPlayersCommand.java @@ -17,6 +17,7 @@ package com.djrapitops.plan.commands.subcommands; import com.djrapitops.plan.delivery.webserver.Addresses; +import com.djrapitops.plan.processing.Processing; import com.djrapitops.plan.settings.Permissions; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.lang.CmdHelpLang; @@ -38,16 +39,19 @@ public class ListPlayersCommand extends CommandNode { private final Locale locale; private final Addresses addresses; + private final Processing processing; @Inject public ListPlayersCommand( Locale locale, - Addresses addresses + Addresses addresses, + Processing processing ) { super("players|pl|playerlist|list", Permissions.INSPECT_OTHER.getPermission(), CommandType.CONSOLE); this.locale = locale; this.addresses = addresses; + this.processing = processing; setShortHelp(locale.getString(CmdHelpLang.PLAYERS)); setInDepthHelp(locale.getArray(DeepHelpLang.PLAYERS)); @@ -55,7 +59,7 @@ public class ListPlayersCommand extends CommandNode { @Override public void onCommand(Sender sender, String commandLabel, String[] args) { - sendListMsg(sender); + processing.submitNonCritical(() -> sendListMsg(sender)); } private void sendListMsg(Sender sender) { diff --git a/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/NetworkCommand.java b/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/NetworkCommand.java index cb588d908..0cde2a67a 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/NetworkCommand.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/NetworkCommand.java @@ -17,6 +17,7 @@ package com.djrapitops.plan.commands.subcommands; import com.djrapitops.plan.delivery.webserver.Addresses; +import com.djrapitops.plan.processing.Processing; import com.djrapitops.plan.settings.Permissions; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.lang.CmdHelpLang; @@ -38,16 +39,19 @@ public class NetworkCommand extends CommandNode { private final Locale locale; private final Addresses addresses; + private final Processing processing; @Inject public NetworkCommand( Locale locale, - Addresses addresses + Addresses addresses, + Processing processing ) { super("network|n|netw", Permissions.ANALYZE.getPermission(), CommandType.CONSOLE); this.locale = locale; this.addresses = addresses; + this.processing = processing; setShortHelp(locale.getString(CmdHelpLang.NETWORK)); setInDepthHelp(locale.getArray(DeepHelpLang.NETWORK)); @@ -55,7 +59,7 @@ public class NetworkCommand extends CommandNode { @Override public void onCommand(Sender sender, String commandLabel, String[] args) { - sendNetworkMsg(sender); + processing.submitNonCritical(() -> sendNetworkMsg(sender)); } private void sendNetworkMsg(Sender sender) { diff --git a/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/RegisterCommand.java b/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/RegisterCommand.java index 708e2da2b..fb78f2f94 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/RegisterCommand.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/RegisterCommand.java @@ -110,13 +110,15 @@ public class RegisterCommand extends CommandNode { } if (args.length == 0) { - String url = addresses.getMainAddress().orElseGet(() -> { - sender.sendMessage(locale.getString(CommandLang.NO_ADDRESS_NOTIFY)); - return addresses.getFallbackLocalhostAddress(); - }) + "/register"; - String linkPrefix = locale.getString(CommandLang.LINK_PREFIX); - sender.sendMessage(linkPrefix); - sender.sendLink(" ", locale.getString(CommandLang.LINK_CLICK_ME), url); + processing.submitNonCritical(() -> { + String url = addresses.getMainAddress().orElseGet(() -> { + sender.sendMessage(locale.getString(CommandLang.NO_ADDRESS_NOTIFY)); + return addresses.getFallbackLocalhostAddress(); + }) + "/register"; + String linkPrefix = locale.getString(CommandLang.LINK_PREFIX); + sender.sendMessage(linkPrefix); + sender.sendLink(" ", locale.getString(CommandLang.LINK_CLICK_ME), url); + }); return; } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/manage/ManageRawDataCommand.java b/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/manage/ManageRawDataCommand.java index f19f1a674..baef1323a 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/manage/ManageRawDataCommand.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/commands/subcommands/manage/ManageRawDataCommand.java @@ -18,6 +18,7 @@ package com.djrapitops.plan.commands.subcommands.manage; import com.djrapitops.plan.delivery.rendering.html.Html; import com.djrapitops.plan.delivery.webserver.Addresses; +import com.djrapitops.plan.processing.Processing; import com.djrapitops.plan.settings.Permissions; import com.djrapitops.plan.settings.locale.Locale; import com.djrapitops.plan.settings.locale.lang.CmdHelpLang; @@ -42,17 +43,20 @@ import java.util.Arrays; public class ManageRawDataCommand extends CommandNode { private final Locale locale; - private Addresses addresses; + private final Addresses addresses; + private final Processing processing; @Inject public ManageRawDataCommand( Locale locale, - Addresses addresses + Addresses addresses, + Processing processing ) { super("raw", Permissions.MANAGE.getPermission(), CommandType.PLAYER_OR_ARGS); this.locale = locale; this.addresses = addresses; + this.processing = processing; setArguments(""); setShortHelp(locale.getString(CmdHelpLang.MANAGE_RAW_DATA)); @@ -64,24 +68,26 @@ public class ManageRawDataCommand extends CommandNode { Verify.isTrue(args.length >= 1, () -> new IllegalArgumentException(locale.getString(CommandLang.FAIL_REQ_ONE_ARG, Arrays.toString(this.getArguments())))); - String playerName = MiscUtils.getPlayerName(args, sender, Permissions.MANAGE); + processing.submitNonCritical(() -> { + String playerName = MiscUtils.getPlayerName(args, sender, Permissions.MANAGE); - sender.sendMessage(locale.getString(CommandLang.HEADER_INSPECT, playerName)); - // Link - String address = addresses.getMainAddress().orElseGet(() -> { - sender.sendMessage(locale.getString(CommandLang.NO_ADDRESS_NOTIFY)); - return addresses.getFallbackLocalhostAddress(); + sender.sendMessage(locale.getString(CommandLang.HEADER_INSPECT, playerName)); + // Link + String address = addresses.getMainAddress().orElseGet(() -> { + sender.sendMessage(locale.getString(CommandLang.NO_ADDRESS_NOTIFY)); + return addresses.getFallbackLocalhostAddress(); + }); + String url = address + "/player/" + Html.encodeToURL(playerName) + "/raw"; + String linkPrefix = locale.getString(CommandLang.LINK_PREFIX); + boolean console = !CommandUtils.isPlayer(sender); + if (console) { + sender.sendMessage(linkPrefix + url); + } else { + sender.sendMessage(linkPrefix); + sender.sendLink(" ", locale.getString(CommandLang.LINK_CLICK_ME), url); + } + + sender.sendMessage(">"); }); - String url = address + "/player/" + Html.encodeToURL(playerName) + "/raw"; - String linkPrefix = locale.getString(CommandLang.LINK_PREFIX); - boolean console = !CommandUtils.isPlayer(sender); - if (console) { - sender.sendMessage(linkPrefix + url); - } else { - sender.sendMessage(linkPrefix); - sender.sendLink(" ", locale.getString(CommandLang.LINK_CLICK_ME), url); - } - - sender.sendMessage(">"); } }