DiscordSRV

DiscordSRV

86.8k Downloads

Stall at JDA build when Dynmap is on the same server

LemADEC opened this issue · 19 comments

commented

As of DiscordSRV-Build-1.16.9, plugin may lock the server at boot, just before reporting the Discord server channel.

Here's an observed failed boot

[23:05:03 INFO]: [DiscordSRV] DiscordSRV is up-to-date. (06b77741bbc622d715d3ee44158b0e2516453dac)
[23:05:03 INFO]: [Dynmap] chisel[2.9.5.11] models enabled
[23:05:03 INFO]: [Dynmap] BiblioCraft[1.11.7] models enabled
[23:05:03 INFO]: [Dynmap] BiomesOPlenty[2.1.0] models enabled
[23:05:03 INFO]: [Dynmap] Thaumcraft[4.2.3.5] textures enabled
[23:05:03 INFO]: [Dynmap] TConstruct[1.7.10-1.8.8.build991] textures enabled
[23:05:03 INFO]: [Dynmap] Botania[r1.8-249] textures enabled
[23:05:03 INFO]: [Dynmap] TwilightForest[2.3.7] textures enabled
[23:05:03 INFO]: [Dynmap] chisel[2.9.5.11] textures enabled
[23:05:03 INFO]: [Dynmap] Natura[2.2.0] textures enabled
[23:05:03 INFO]: [Dynmap] witchery[0.24.1] textures enabled
[23:05:03 INFO]: [Dynmap] AWWayofTime[v1.3.3] textures enabled
[23:05:03 INFO]: [Dynmap] CarpentersBlocks[3.3.8.1_dev_r1] textures enabled
[23:05:03 INFO]: [Dynmap] BiomesOPlenty[2.1.0] textures enabled
[23:05:03 INFO]: [Dynmap] ThaumicTinkerer[unspecified] textures enabled
[23:05:03 INFO]: [Dynmap] ThaumicExploration[0.6.0] textures enabled
[23:05:03 INFO]: [Dynmap] BiblioCraft[1.11.7] textures enabled
[23:05:03 INFO]: [Dynmap] Steamcraft[0.29.3] textures enabled
[23:05:03 INFO]: [DiscordSRV] Language initialized as English
[23:05:03 INFO]: [DiscordSRV] §8===============================================================================
[23:05:03 INFO]: [DiscordSRV] §a         Need a server host? Try PebbleHost! Plans starting at $1/GB!
[23:05:03 INFO]: [DiscordSRV] §a Use promo code "DISCORDSRV" at checkout for 15% off your first three bills!
[23:05:03 INFO]: [DiscordSRV] §8===============================================================================
[23:05:03 FATAL]: [Dynmap] Error loading configuration file for Steamcraft
Second attempt at checking for presence of the RemoteToolkit plugin for Bukkit...
Third attempt at checking for presence of the RemoteToolkit plugin for Bukkit...
RemoteToolkit plugin for Bukkit was not detected. Disabling heartbeat until next restart.
Server is being forcibly restarted...
Attempting a SIGKILL on the process.
Restarting...
[01:05:37 INFO]: Loading tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker
[01:05:37 INFO]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker

Here's the next successful boot

[03:07:26 INFO]: [DiscordSRV] DiscordSRV is up-to-date. (06b77741bbc622d715d3ee44158b0e2516453dac)
[03:07:26 INFO]: [Dynmap] ThaumicTinkerer[unspecified] textures enabled
[03:07:26 INFO]: [Dynmap] ThaumicExploration[0.6.0] textures enabled
[03:07:26 INFO]: [Dynmap] BiblioCraft[1.11.7] textures enabled
[03:07:26 INFO]: [Dynmap] Steamcraft[0.29.3] textures enabled
[03:07:26 FATAL]: [Dynmap] Error loading configuration file for Steamcraft
[03:07:26 INFO]: [DiscordSRV] Language initialized as English
[03:07:26 INFO]: [DiscordSRV] §8===============================================================================
[03:07:26 INFO]: [DiscordSRV] §a         Need a server host? Try PebbleHost! Plans starting at $1/GB!
[03:07:26 INFO]: [DiscordSRV] §a Use promo code "DISCORDSRV" at checkout for 15% off your first three bills!
[03:07:26 INFO]: [DiscordSRV] §8===============================================================================
[03:07:26 INFO]: [Dynmap] Loaded 23 shaders.
[03:07:27 INFO]: [Dynmap] Loaded 82 perspectives.
[03:07:27 INFO]: [Dynmap] Loaded 14 lightings.
[03:07:27 WARN]: =============================================================
[03:07:27 WARN]: MOD HAS DIRECT REFERENCE System.exit() THIS IS NOT ALLOWED REROUTING TO FML!
[03:07:27 WARN]: Offendor: org/dynmap/jetty/server/ShutdownMonitor$ShutdownMonitorThread.run()V
[03:07:27 WARN]: Use FMLCommonHandler.exitJava instead
[03:07:27 WARN]: =============================================================
[03:07:27 INFO]: [Dynmap] Web server started on address xxx
[03:07:27 INFO]: [Dynmap] version 2.2-143 is enabled - core version 2.2-2058
[03:07:27 INFO]: [Dynmap] Loaded 2 maps of world 'Aclealor'.
... (skipping Dynmap here)
[03:07:27 INFO]: [Dynmap] Register commands
[03:07:27 INFO]: [Dynmap] Enabled
[03:07:27 INFO]: WorldData loading
[03:07:28 INFO]: WorldData retrieved
[03:07:28 INFO]: Removed 0 old recipes
[03:07:28 INFO]: Starting recipe profiler for Arc Recycling, using 12 Threads
[03:07:30 INFO]: [DiscordSRV] Found server G:FunSquareGames(xxx)
[03:07:30 INFO]: [DiscordSRV] - TC:announcements(xxx)
...
commented

May I ask what the actual reason is behind using a blocking method (JDABuilder#build().awaitReady()) over just using things like a ReadyListener to declare DiscordSRV as "ready"?

commented

Because there are certain parts of DiscordSRV that require DiscordSRV to be ready, and blocking it is ok because it is on it's own thread. What could have been happening here is a deadlock (some how)

commented

Issue has gone stale, and there have been many updates that might effect this. Will be reopened if the issue can still be reproduced by someone

commented

This has nothing to do with DiscordSRV.

This is an error from Dynmap.

[23:05:03 FATAL]: [Dynmap] Error loading configuration file for Steamcraft
Second attempt at checking for presence of the RemoteToolkit plugin for Bukkit...
Third attempt at checking for presence of the RemoteToolkit plugin for Bukkit...
RemoteToolkit plugin for Bukkit was not detected. Disabling heartbeat until next restart.
Server is being forcibly restarted...
Attempting a SIGKILL on the process.
Restarting...
commented

No, it's not an error from Dynmap, look again the next successful boot.
Dynmap is running in a separate thread anyway.

commented

I know what my plugin looks like when it starts, thanks.

I’m not going to look into this unless you can produce another log that has only DiscordSRV’s output and you’ve given DiscordSRV sufficient time to connect.

commented

As seen in the second log, the "Error loading configuration file for Steamcraft" log is a 'normal' error during a successful boot, as such it's not representative of the issue in failed boot.

As seen in the first log, the server was down for almost 2h, seems fairly sufficient time to connect.

From a quick check in DiscordSRV, we can see a blocking wait in the JDA Builder:


As per JDA documentation, the API has timeout that defaults to 0, which means infinite wait. Early in version 3.0.x, they added ways to define actual timeout values. Latest version seems to provide this through setWebsocketFactory(), setHttpClientBuilder() and setHttpClient().
However, since both Dynmap and DiscordSRV are unresponsive when issue happens, both being in different threads, we would need to consider other possibilities of bad multi-threading, notably in log4j (seems unlikely), SSLContext.setDefault() (weird, but still possible). By extension, it seems unlikely that we can reproduce the issue with just DiscordSRV here.

Long story short, adding finer logs during DiscordSRV initialization may help narrow down where the collision is happening, possibly use this opportunity to add actual timeouts to JDA would make a nice improvement.

commented

People use DiscordSRV with Dynmap all the time... This is likely an issue with an old/newer version of Dynmap that the general public isn't using

Maybe try putting DiscordSRV/Dynmap to load before each other?

commented

Any other plugins that might have similar dependencies? Like something with a web server or maybe even votifier?

commented

Today a different server got stuck with similar symptoms. Interestingly, that server doesn't have Dynmap.

[00:37:40 INFO]: Registered command dumpOredict with permission node iguanaman.iguanatweakstconstruct.commands.CommandDumpOredict
[00:37:40 WARN]: [00:37:40][FINE][noppes.npcs.controllers.DialogController:32] Loading Dialogs
>
[00:37:40 WARN]: [00:37:40][FINE][noppes.npcs.controllers.DialogController:34] Done loading Dialogs
>
[00:37:40 INFO]: /home/wwm/_beta/./SonicBoum/customnpcs/clones/../clonednpcs.dat
[00:37:40 INFO]: false
[00:37:40 INFO]: World ID: 356b35a7-6df6-461b-8750-dbae893c6378
[00:37:40 INFO]: [Thermos] Refusing to lock affinity, disabled in cauldron.yml
[00:37:40 INFO]: [DiscordSRV] DiscordSRV is up-to-date. (06b77741bbc622d715d3ee44158b0e2516453dac)
[00:37:40 INFO]: [DiscordSRV] Language initialized as English
[00:37:40 INFO]: [DiscordSRV] §8===============================================================================
[00:37:40 INFO]: [DiscordSRV] §a         Need a server host? Try PebbleHost! Plans starting at $1/GB!
[00:37:40 INFO]: [DiscordSRV] §a Use promo code "DISCORDSRV" at checkout for 15% off your first three bills!
[00:37:40 INFO]: [DiscordSRV] §8===============================================================================
First attempt at checking for presence of the RemoteToolkit plugin for Bukkit...
Second attempt at checking for presence of the RemoteToolkit plugin for Bukkit...
Third attempt at checking for presence of the RemoteToolkit plugin for Bukkit...
RemoteToolkit plugin for Bukkit was not detected. Disabling heartbeat until next restart.
>forge tps
>ping
>.restart
Forcing a save... (Shutdown delayed)
>.forcerestart
Attempting a SIGKILL on the process.
Restarting...
[03:08:48 INFO]: Loading tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker
[03:08:48 INFO]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker
[03:08:48 INFO]: Calling tweak class cpw.mods.fml.common.launcher.FMLServerTweaker
[03:08:48 INFO]: Forge Mod Loader version 7.99.4.1614 for Minecraft 1.7.10 loading
[03:08:48 INFO]: Java is OpenJDK 64-Bit Server VM, version 1.8.0_212, running on Linux:amd64:3.14.32-xxxx-grs-ipv6-64, installed at /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre
...
[03:10:21 INFO]: Registered command dumpOredict with permission node iguanaman.iguanatweakstconstruct.commands.CommandDumpOredict
[03:10:21 INFO]: [DiscordSRV] Language initialized as English
[03:10:21 INFO]: [DiscordSRV] §8===============================================================================
[03:10:21 INFO]: [DiscordSRV] §a         Need a server host? Try PebbleHost! Plans starting at $1/GB!
[03:10:21 INFO]: [DiscordSRV] §a Use promo code "DISCORDSRV" at checkout for 15% off your first three bills!
[03:10:21 INFO]: [DiscordSRV] §8===============================================================================
[03:10:21 WARN]: [03:10:21][FINE][noppes.npcs.controllers.DialogController:32] Loading Dialogs
>
[03:10:21 WARN]: [03:10:21][FINE][noppes.npcs.controllers.DialogController:34] Done loading Dialogs
>
[03:10:21 INFO]: /home/wwm/_beta/./SonicBoum/customnpcs/clones/../clonednpcs.dat
[03:10:21 INFO]: false
[03:10:21 INFO]: World ID: 356b35a7-6df6-461b-8750-dbae893c6378
[03:10:21 INFO]: [Thermos] Refusing to lock affinity, disabled in cauldron.yml
[03:10:22 INFO]: [NTheEndAgain] Counting existing EDs in DIM1...
[03:10:23 INFO]: [NTheEndAgain] Done, 2 EnderDragon(s) found.
[03:10:23 INFO]: Dimension initialized -30/Hyperspace2: seaLevel:1 cloudH:256 skyH:256 haze:false aurora:false weather:false
...
[03:10:23 INFO]: Dimension initialized 0/Overworld: seaLevel:64 cloudH:128 skyH:256 haze:true aurora:true weather:true
[03:10:24 WARN]: =============================================================
[03:10:24 WARN]: MOD HAS DIRECT REFERENCE System.exit() THIS IS NOT ALLOWED REROUTING TO FML!
[03:10:24 WARN]: Offendor: org/luaj/vm2/lib/OsLib.exit(I)V
[03:10:24 WARN]: Use FMLCommonHandler.exitJava instead
[03:10:24 WARN]: =============================================================
[03:10:25 INFO]: [DiscordSRV] Found server G:FunSquareGames(xxx)
[03:10:25 INFO]: [DiscordSRV] - TC:announcements(xxx)
commented

On that second server, when the issue was reproduced, Votifier had finished enabling 5 seconds before.
In fact, DiscordSRV is almost the latest to enable, right before EssentialsChat, EssentialsSpawn and SimpleClans:

[00:37:21] [Server thread/INFO]: [Gringotts] Enabling Gringotts v2.7-SNAPSHOT
[00:37:21] [Server thread/INFO]: [ProtocolLib] Enabling ProtocolLib v3.7.0
[00:37:21] [Server thread/INFO]: [AutoSaveWorld] Enabling AutoSaveWorld v4.14.1
[00:37:21] [Server thread/INFO]: [NCore] Enabling NCore v0.6.9
[00:37:22] [Server thread/INFO]: [Vault] Enabling Vault v1.4.1-b436
[00:37:27] [Server thread/INFO]: [ColorCodes] Enabling ColorCodes v1.1
[00:37:27] [Server thread/INFO]: [LinksOnSigns] Enabling LinksOnSigns v1.9
[00:37:27] [Server thread/INFO]: [PlayerHeads] Enabling PlayerHeads v3.10-SNAPSHOT-jenkins-PlayerHeads-1-61-g39b94b4
[00:37:27] [Server thread/INFO]: [dynmap] Enabling dynmap v2.1-SNAPSHOT-94
[00:37:27] [Server thread/INFO]: [WorldEdit] Enabling WorldEdit v6.1.1-SNAPSHOT;3386-025591e6
[00:37:28] [Server thread/INFO]: [VoteRoulette] Enabling VoteRoulette v3.1
[00:37:29] [Server thread/INFO]: [OpenInv] Enabling OpenInv v2.2.9
[00:37:29] [Server thread/INFO]: [RemoteToolkitPlugin] Enabling RemoteToolkitPlugin vR10_A15.3
[00:37:29] [Server thread/INFO]: [LoginSecurity] Enabling LoginSecurity v2.0.10
[00:37:29] [Server thread/INFO]: [BetterChunkLoader] Enabling BetterChunkLoader v2.5
[00:37:30] [Server thread/INFO]: [ClearLag] Enabling ClearLag v2.7.7
[00:37:30] [Server thread/INFO]: [ScheduledAnnouncer2] Enabling ScheduledAnnouncer2 v2.8.5 - For version 1.7.9
[00:37:30] [Server thread/INFO]: [WorldBorder] Enabling WorldBorder v1.8.1
[00:37:30] [Server thread/INFO]: [PlaceNearBlocksRestrictor] Enabling PlaceNearBlocksRestrictor v1.0
[00:37:30] [Server thread/INFO]: [Votifier] Enabling Votifier v1.9
[00:37:30] [Server thread/INFO]: [VoteParty] Enabling VoteParty v1.4.1
[00:37:30] [Server thread/INFO]: [BetterPvP] Enabling BetterPvP v1.0.7
[00:37:30] [Server thread/INFO]: [WorldGuard] Enabling WorldGuard v6.1.1-SNAPSHOT.1616-c9eaec0
[00:37:32] [Server thread/INFO]: [SignEdit] Enabling SignEdit v3.3.10
[00:37:32] [Server thread/INFO]: [PermissionsEx] Enabling PermissionsEx v1.22.9
[00:37:32] [Server thread/INFO]: [Prism] Enabling Prism v2.0.4-18
[00:37:33] [Server thread/INFO]: [boosCooldowns] Enabling boosCooldowns v3.8.5
[00:37:34] [Server thread/INFO]: [Essentials] Enabling Essentials v2.0.1-b468
[00:37:34] [Server thread/INFO]: [FSGcore] Enabling FSGcore v1.4
[00:37:34] [Server thread/INFO]: [NTheEndAgain] Enabling NTheEndAgain v0.6.9
[00:37:34] [Server thread/INFO]: [VanishNoPacket] Enabling VanishNoPacket v3.19.1
[00:37:35] [Server thread/INFO]: [DiscordSRV] Enabling DiscordSRV v1.16.9
[00:37:35] [Server thread/INFO]: [EssentialsChat] Enabling EssentialsChat v2.0.1-b468
[00:37:35] [Server thread/INFO]: [EssentialsSpawn] Enabling EssentialsSpawn v2.0.1-b468
[00:37:35] [Server thread/INFO]: [SimpleClans] Enabling SimpleClans v2.5.5
commented

I was unable to reproduce this on:
DiscordSRV v1.17.0 (dev build)
craftbukkit 1.8.8
dynmap 2.1-alpha-1
votifier 1.9

Could you try testing on a non-forge server (spigot/craftbukkit) 1.7.10 with the same plugins and see if the issue persists?

If that still doesn't work, please provide a full list of your plugins

commented

Issue is very intermittent in nature, we can't reproduce on command, we can only wait for the next occurrence. As such, adding more logs during boot may help understand the problem next time we catch it.

The full list of plugins from the second server is right above your post @Vankka . There's no Dynmap mod on that server, just the DynmapCBBridge which I forgot to remove.

The full list of plugins from the first server is hereafter:

[14:31:10] [Server thread/INFO] [ProtocolLib] Enabling ProtocolLib v3.7.0
[14:31:11] [Server thread/INFO] [AutoSaveWorld] Enabling AutoSaveWorld v4.14.1
[14:31:11] [Server thread/INFO] [NCore] Enabling NCore v0.6.9
[14:31:11] [Server thread/INFO] [Vault] Enabling Vault v1.4.1-b436
[14:31:17] [Server thread/INFO] [ColorCodes] Enabling ColorCodes v1.1
[14:31:17] [Server thread/INFO] [PlayerHeads] Enabling PlayerHeads v3.10-SNAPSHOT-jenkins-PlayerHeads-1-61-g39b94b4
[14:31:17] [Server thread/INFO] [dynmap] Enabling dynmap v2.1-SNAPSHOT-94
[14:31:17] [Server thread/INFO] [PermissionsEx] Enabling PermissionsEx v1.22.9
[14:31:17] [Server thread/INFO] [KaisCommons] Enabling KaisCommons v0.9.4
[14:31:17] [Server thread/INFO] [UUIDProvider] Enabling UUIDProvider v2.5.1
[14:31:18] [Server thread/INFO] [WorldEdit] Enabling WorldEdit v6.1.1-SNAPSHOT;3386-025591e6
[14:31:19] [Server thread/INFO] [VoteRoulette] Enabling VoteRoulette v3.1
[14:31:20] [Server thread/INFO] [OpenInv] Enabling OpenInv v2.2.9
[14:31:20] [Server thread/INFO] [Essentials] Enabling Essentials v2.13.1
[14:31:21] [Server thread/INFO] [RemoteToolkitPlugin] Enabling RemoteToolkitPlugin vR10_A15.3
[14:31:21] [Server thread/INFO] [LoginSecurity] Enabling LoginSecurity v2.0.10
[14:31:21] [Server thread/INFO] [ClearLag] Enabling ClearLag v2.7.7
[14:31:22] [Server thread/INFO] [ScheduledAnnouncer2] Enabling ScheduledAnnouncer2 v2.8.5 - For version 1.7.9
[14:31:22] [Server thread/INFO] [WorldBorder] Enabling WorldBorder v1.8.1
[14:31:22] [Server thread/INFO] [PlaceNearBlocksRestrictor] Enabling PlaceNearBlocksRestrictor v1.0
[14:31:22] [Server thread/INFO] [Votifier] Enabling Votifier v1.9
[14:31:22] [Server thread/INFO] [VoteParty] Enabling VoteParty v1.4.1
[14:31:22] [Server thread/INFO] [WorldGuard] Enabling WorldGuard v6.1.1-SNAPSHOT.1616-c9eaec0
[14:31:23] [Server thread/INFO] [SignEdit] Enabling SignEdit v3.3.10
[14:31:23] [Server thread/INFO] [EssentialsChat] Enabling EssentialsChat v2.13.1
[14:31:23] [Server thread/INFO] [Televator] Enabling Televator v1.4
[14:31:23] [Server thread/INFO] [EssentialsSpawn] Enabling EssentialsSpawn v2.13.1
[14:31:23] [Server thread/INFO] [Prism] Enabling Prism v2.0.4-18
[14:31:24] [Server thread/INFO] [boosCooldowns] Enabling boosCooldowns v3.8.5
[14:31:24] [Server thread/INFO] [CasinoSlots] Enabling CasinoSlots v2.5.7-b11
[14:31:24] [Server thread/INFO] [GriefPreventionPlus] Enabling GriefPreventionPlus v13.3
[14:31:27] [Server thread/INFO] [FSGcore] Enabling FSGcore v1.4
[14:31:27] [Server thread/INFO] [Dynmap-GriefPreventionPlus] Enabling Dynmap-GriefPreventionPlus v0.81
[14:31:27] [Server thread/INFO] [VanishNoPacket] Enabling VanishNoPacket v3.19.1
[14:31:27] [Server thread/INFO] [DiscordSRV] Enabling DiscordSRV v1.16.9
[14:31:27] [Server thread/INFO] [GlobalMarket] Enabling GlobalMarket v1.0-SNAPSHOT
[14:31:28] [Server thread/INFO] [EnjinMinecraftPlugin] Enabling EnjinMinecraftPlugin v2.7.0

The Dynmap version reported is from the CBBridge, the actual Dynmap mod is 2.6-beta-1-forge-1.7.10.

commented

How often does it happen? or is it just random?

The output with DebugJDA set to true (during startup) would probably the most helpful atm (needs to be on latest dev build)

commented

it's about once a month, with 3 servers rebooting every 4 hours.
Is there an environment variable to enable DebugJDA or do I need a new compilation of the plugin?

commented

Config option, some stuff was changed related to it in dev builds,

Latest dev build download link: https://ci.scarsz.me/guestAuth/app/rest/builds/id:102/artifacts/content/DiscordSRV-Build-1.17.0-SNAPSHOT-120.jar

(though since it's so hard to reproduce, and debug logs a ton of log messages, you probably should not have it on all the time)

commented

I didn't see much added logs during boot with just DebugJDA: true.
Should I just set DebugJDA: true, or also set DebugLevel: 1?

commented

Are you on dev builds? any warnings/errors about logging stuff?

commented

I'm on the build you've linked.
DebugJDA has no visible effect during boot.
DebugLevel: 2 adds some callstacks:

[16:45:52] [DiscordSRV - Channel Topic Updater/INFO] [github.scarsz.discordsrv.DiscordSRV/]: [DiscordSRV] [DEBUG] Attempted to set status of null channel
Stack trace @ debug call (THIS IS NOT AN ERROR)
        at github.scarsz.discordsrv.DiscordSRV.debug(DiscordSRV.java:195)
        at github.scarsz.discordsrv.util.DiscordUtil.setTextChannelTopic(DiscordUtil.java:422)
        at github.scarsz.discordsrv.objects.threads.ChannelTopicUpdater.run(ChannelTopicUpdater.java:61)
...
[16:48:17] [Server thread/INFO] [github.scarsz.discordsrv.DiscordSRV/]: [DiscordSRV] [DEBUG] Not handling possible unban for player LegendaryTrainer (abf04508-5b35-4124-aa0c-692eb99a7044) because doing so is disabled $
Stack trace @ debug call (THIS IS NOT AN ERROR)
        at github.scarsz.discordsrv.DiscordSRV.debug(DiscordSRV.java:195)
        at github.scarsz.discordsrv.listeners.PlayerBanListener.onPlayerJoin(PlayerBanListener.java:59)
[16:48:17] [Server thread/INFO] [github.scarsz.discordsrv.DiscordSRV/]: [DiscordSRV] [DEBUG] Synchronizing player LegendaryTrainer
Stack trace @ debug call (THIS IS NOT AN ERROR)
        at github.scarsz.discordsrv.DiscordSRV.debug(DiscordSRV.java:195)
        at github.scarsz.discordsrv.util.GroupSynchronizationUtil.reSyncGroups(GroupSynchronizationUtil.java:48)
        at github.scarsz.discordsrv.util.GroupSynchronizationUtil.reSyncGroups(GroupSynchronizationUtil.java:42)
        at github.scarsz.discordsrv.listeners.PlayerJoinLeaveListener.PlayerJoinEvent(PlayerJoinLeaveListener.java:47)
[16:48:17] [Server thread/INFO] [github.scarsz.discordsrv.DiscordSRV/]: [DiscordSRV] [DEBUG] Tried to sync groups for player LegendaryTrainer but their MC account is not linked to a Discord account
Stack trace @ debug call (THIS IS NOT AN ERROR)
        at github.scarsz.discordsrv.DiscordSRV.debug(DiscordSRV.java:195)
        at github.scarsz.discordsrv.util.GroupSynchronizationUtil.reSyncGroups(GroupSynchronizationUtil.java:52)
        at github.scarsz.discordsrv.util.GroupSynchronizationUtil.reSyncGroups(GroupSynchronizationUtil.java:42)
        at github.scarsz.discordsrv.listeners.PlayerJoinLeaveListener.PlayerJoinEvent(PlayerJoinLeaveListener.java:47)