Using online-mode=true, when executing the /whitelist add, /whitelist remove, /ban, /pardon, /op or /deop command then this causes the server to stop responding for some seconds while it is looking up a profile for a not loaded player. This lag sometimes can take even 10 seconds. The player must not be fetched nor cached by the server for lag to happen.
The reason
This bug happens because that request to Mojang API happens on the main server thread which locks it.
Notes:
- This might be invalid as the commands return feedback on whether or not they ran successful
Original description:
The bug
Using the /op, /whitelist or /ban command causes the server to stop responding for some seconds while it is looking up a profile for a not loaded player.
The reason
The following is based on decompiled version of Minecraft 1.9 using MCP 9.24 beta. All method and class names are the names used in the decompiled version.
The reason why this happens is because the method net.minecraft.server.management.PlayerProfileCache.getGameProfileForUsername(String) is called which tries to get the information from the Mojang servers.
Notes:
- This might be invalid as the commands return feedback on whether or not they ran successful
- This affects the following situations as well
- Saving villages
- Loading wolves, ocelots or horses
Video:
https://clips.twitch.tv/CharmingAgitatedLEDSpicyBoy-T1rdY38Enm6WHAgr