Arclight icon indicating copy to clipboard operation
Arclight copied to clipboard

Plugins fail to load if JMX is enabled

Open ChipWolf opened this issue 2 years ago • 2 comments

I have confirmed that ...

  • [X] Arclight is up to date
  • [X] all dependencies are installed
  • [X] all plugins and mods are up to date
  • [X] unable to reproduce in Spigot
  • [X] unable to reproduce in Forge

Arclight version

arclight-forge-1.16.5-1.0.24-SNAPSHOT

OS & Java versions

$ uname -a
Linux e7a980bb-6ea9-4ec0-b6d6-53b353670b89 4.19.0-18-amd64 #1 SMP Debian 4.19.208-1 (2021-09-29) x86_64 GNU/Linux`
$ java -version
openjdk version "11.0.13" 2021-10-19 OpenJDK Runtime Environment 18.9 (build 11.0.13+8) OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8, mixed mode, sharing)

Plugins and Mods

Any combination of mods/plugins
However, we're using Pixelmon (hence Java 11)

Description

If Java Management Extensions (JMX) are enabled, all plugins fail to load with a null pointer.

Step to reproduce

  1. java -Xms8G -Xmx8G -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -jar arclight-forge-1.16.5-1.0.24-SNAPSHOT.jar
  2. Observe plugins fail to load
  3. Remove the two jmxremote arguments.
  4. Observe plugins load successfully

Logs

Jul 18, 2022 11:37:11 AM org.bukkit.craftbukkit.v1_16_R3.CraftServer loadPlugins
SEVERE: null initializing <Plugin> (Is it up to date?)
java.lang.NullPointerException
        at io.izzel.arclight.common.mod.util.log.ArclightPluginLogger.log(ArclightPluginLogger.java:22)
        at java.logging/java.util.logging.Logger.doLog(Logger.java:1006)
        at java.logging/java.util.logging.Logger.log(Logger.java:1029)
        at java.logging/java.util.logging.Logger.info(Logger.java:1802)
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.loadPlugins(CraftServerMixin.java:385)
        at net.minecraft.server.dedicated.DedicatedServer.handler$zpp000$arclight$loadPlugins(DedicatedServerMixin.java:637)
        at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServerMixin.java:160)
        at net.minecraft.server.MinecraftServer.func_240802_v_(MinecraftServerMixin.java:1861)
        at net.minecraft.server.MinecraftServer.func_240783_a_(MinecraftServerMixin.java:232)
        at java.base/java.lang.Thread.run(Thread.java:829)

Server pack link (Optional)

No response

ChipWolf avatar Jul 18 '22 15:07 ChipWolf

have you tried disabling pixelmon then going to java 8 or a different java version?

Arownic avatar Jul 18 '22 15:07 Arownic

have you tried disabling pixelmon then going to java 8 or a different java version?

Even with the mods folder removed altogether, I observe the same behavior in Java 11 and Java 8.

If I update to Java 17, the plugins still do not load, but the error is slightly more verbose:

SEVERE: Error occurred (in the plugin loader) while enabling <Plugin> (Is it up to date?)
java.lang.NullPointerException: Cannot invoke "java.util.logging.Logger.log(java.util.logging.LogRecord)" because "this.logger" is null
        at io.izzel.arclight.common.mod.util.log.ArclightPluginLogger.log(ArclightPluginLogger.java:22)
        at java.logging/java.util.logging.Logger.doLog(Logger.java:1007)
        at java.logging/java.util.logging.Logger.log(Logger.java:1030)
        at java.logging/java.util.logging.Logger.info(Logger.java:1803)
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoaderMixin.java:330)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:480)
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServerMixin.java:492)
        at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServerMixin.java:406)
        at net.minecraft.server.MinecraftServer.handler$zpo000$arclight$enablePlugins(MinecraftServerMixin.java:1977)
        at net.minecraft.server.MinecraftServer.func_240787_a_(MinecraftServerMixin.java:382)
        at net.minecraft.server.MinecraftServer.func_240800_l__(MinecraftServerMixin.java:308)
        at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServerMixin.java:168)
        at net.minecraft.server.MinecraftServer.func_240802_v_(MinecraftServerMixin.java:1861)
        at net.minecraft.server.MinecraftServer.func_240783_a_(MinecraftServerMixin.java:232)
        at java.base/java.lang.Thread.run(Thread.java:833)

I believe JMX interferes with the logger and likely needs some additional handling in Arclight.

ChipWolf avatar Jul 18 '22 15:07 ChipWolf

This is fixed in 1.18+, there's no plan now to backport these changes.

IzzelAliz avatar Sep 04 '22 07:09 IzzelAliz