Describe the bug
When creating many forms, and when using /forms reload, thread dumps occur as the server cannot keep up with registering both permissions 'use' and 'commands'.
To Reproduce
- Write a bunch of forms
- use 'forms reload' in console
- watch thread dumps.
Expected behaviour
The /forms reload command should reload the plugin, while not causing thread dumps.
Screenshots / Videos
15:07:10 ERROR: Current Thread: Server thread
15:07:10 ERROR: PID: 23 | Suspended: false | Native: false | State: RUNNABLE
15:07:10 ERROR: Stack:
15:07:10 ERROR: [email protected]/java.lang.StringLatin1.toLowerCase(StringLatin1.java:441)
15:07:10 ERROR: [email protected]/java.lang.String.toLowerCase(String.java:3388)
15:07:10 ERROR: org.bukkit.plugin.SimplePluginManager.unsubscribeFromPermission(SimplePluginManager.java:869)
15:07:10 ERROR: org.bukkit.permissions.PermissibleBase.clearPermissions(PermissibleBase.java:185)
15:07:10 ERROR: org.bukkit.permissions.PermissibleBase.recalculatePermissions(PermissibleBase.java:165)
15:07:10 ERROR: org.bukkit.craftbukkit.v1_19_R1.entity.CraftHumanEntity.recalculatePermissions(CraftHumanEntity.java:257)
15:07:10 ERROR: org.bukkit.plugin.SimplePluginManager.dirtyPermissibles(SimplePluginManager.java:850)
15:07:10 ERROR: org.bukkit.plugin.SimplePluginManager.calculatePermissionDefault(SimplePluginManager.java:835)
15:07:10 ERROR: org.bukkit.plugin.SimplePluginManager.addPermission(SimplePluginManager.java:796)
15:07:10 ERROR: org.bukkit.plugin.SimplePluginManager.addPermission(SimplePluginManager.java:784)
15:07:10 ERROR: CrossplatForms-Spigot.jar//dev.kejona.crossplatforms.spigot.common.handler.SpigotHandler.registerPermission(SpigotHandler.java:117)
15:07:10 ERROR: CrossplatForms-Spigot.jar//dev.kejona.crossplatforms.handler.ServerHandler.registerPermission(ServerHandler.java:61)
15:07:10 ERROR: CrossplatForms-Spigot.jar//dev.kejona.crossplatforms.interfacing.bedrock.BedrockFormRegistry.load(BedrockFormRegistry.java:53)
15:07:10 ERROR: CrossplatForms-Spigot.jar//dev.kejona.crossplatforms.interfacing.bedrock.BedrockFormRegistry.reload(BedrockFormRegistry.java:71)
15:07:10 ERROR: CrossplatForms-Spigot.jar//dev.kejona.crossplatforms.reloadable.ReloadableRegistry.reloadAll(ReloadableRegistry.java:46)
15:07:10 ERROR: CrossplatForms-Spigot.jar//dev.kejona.crossplatforms.command.defaults.ReloadCommand.lambda$register$0(ReloadCommand.java:26)
15:07:10 ERROR: CrossplatForms-Spigot.jar//dev.kejona.crossplatforms.command.defaults.ReloadCommand$$Lambda$9463/0x0000000802a361e8.execute(Unknown Source)
15:07:10 ERROR: CrossplatForms-Spigot.jar//dev.kejona.crossplatforms.shaded.cloud.execution.CommandExecutionHandler.executeFuture(CommandExecutionHandler.java:95)
15:07:10 ERROR: CrossplatForms-Spigot.jar//dev.kejona.crossplatforms.shaded.cloud.execution.CommandExecutionCoordinator$SimpleCoordinator.coordinateExecution(CommandExecutionCoordinator.java:123)
15:07:10 ERROR: CrossplatForms-Spigot.jar//dev.kejona.crossplatforms.shaded.cloud.CommandManager.executeCommand(CommandManager.java:188)
15:07:10 ERROR: CrossplatForms-Spigot.jar//dev.kejona.crossplatforms.shaded.cloud.bukkit.BukkitCommand.execute(BukkitCommand.java:116)
15:07:10 ERROR: org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:155)
15:07:10 ERROR: org.bukkit.craftbukkit.v1_19_R1.CraftServer.dispatchCommand(CraftServer.java:911)
15:07:10 ERROR: org.bukkit.craftbukkit.v1_19_R1.command.BukkitCommandWrapper.run(BukkitCommandWrapper.java:64)
15:07:10 ERROR: com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:264)
15:07:10 ERROR: net.minecraft.commands.Commands.performCommand(Commands.java:305)
15:07:10 ERROR: net.minecraft.commands.Commands.performCommand(Commands.java:289)
15:07:10 ERROR: net.minecraft.server.network.ServerGamePacketListenerImpl.performChatCommand(ServerGamePacketListenerImpl.java:2292)
15:07:10 ERROR: net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleChatCommand$20(ServerGamePacketListenerImpl.java:2246)
15:07:10 ERROR: net.minecraft.server.network.PlayerConnection$$Lambda$13500/0x0000000803b2bd90.run(Unknown Source)
15:07:10 ERROR: net.minecraft.util.thread.BlockableEventLoop.lambda$submitAsync$0(BlockableEventLoop.java:59)
15:07:10 ERROR: net.minecraft.util.thread.IAsyncTaskHandler$$Lambda$13501/0x0000000803b2e000.get(Unknown Source)
15:07:10 ERROR: [email protected]/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
15:07:10 ERROR: net.minecraft.server.TickTask.run(TickTask.java:18)
15:07:10 ERROR: net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153)
15:07:10 ERROR: net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24)
15:07:10 ERROR: net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1361)
15:07:10 ERROR: net.minecraft.server.MinecraftServer.d(MinecraftServer.java:185)
15:07:10 ERROR: net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126)
15:07:10 ERROR: net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1338)
15:07:10 ERROR: net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1331)
15:07:10 ERROR: net.minecraft.util.thread.BlockableEventLoop.runAllTasks(BlockableEventLoop.java:114)
15:07:10 ERROR: net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1465)
15:07:10 ERROR: net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1193)
15:07:10 ERROR: net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:305)
15:07:10 ERROR: net.minecraft.server.MinecraftServer$$Lambda$4309/0x00000008014d5618.run(Unknown Source)
15:07:10 ERROR: [email protected]/java.lang.Thread.run(Thread.java:833)
15:07:10 ERROR: ------------------------------
15:07:10 ERROR: --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH ---
15:07:10 ERROR: ------------------------------
s
Server Version and Plugins
No response
Geyser Dump
No response
CrossplatForms Version
CForms Version: 1.4.0, Branch: main, Build: 28, Commit: 9b2ad7c
Additional Context
Suggestion:
allow on config setup to decide which permissions need to be registered, instead of them doing so automatically for each form/command.
bug