GeyserMC / Floodgate

Hybrid mode plugin to allow for connections from Geyser to join online mode servers.
https://geysermc.org
MIT License
572 stars 172 forks source link

Local SQLite Linking Error #228

Closed Keeg-Turner closed 2 years ago

Keeg-Turner commented 2 years ago

I'm attempting to enable local SQLite linking in addition to global linking, and have followed these steps on your wiki to accomplish this, but keep getting the following error on startup:

[04:27:57] [Server thread/ERROR]: [floodgate] Error while loading database jar
java.lang.NullPointerException: Cannot invoke "java.nio.file.Path.resolve(String)" because "this.dataDirectory" is null
    at org.geysermc.floodgate.database.SqliteDatabase.load(SqliteDatabase.java:59) ~[?:?]
    at org.geysermc.floodgate.link.GlobalPlayerLinking.load(GlobalPlayerLinking.java:56) ~[floodgate-spigot.jar:?]
    at org.geysermc.floodgate.link.PlayerLinkLoader.load(PlayerLinkLoader.java:182) ~[floodgate-spigot.jar:?]
    at org.geysermc.floodgate.FloodgatePlatform.init(FloodgatePlatform.java:105) ~[floodgate-spigot.jar:?]
    at org.geysermc.floodgate.FloodgatePlatform$$FastClassByGuice$$6054089.GUICE$TRAMPOLINE(<generated>) ~[floodgate-spigot.jar:?]
    at org.geysermc.floodgate.FloodgatePlatform$$FastClassByGuice$$6054089.apply(<generated>) ~[floodgate-spigot.jar:?]
    at org.geysermc.floodgate.shaded.com.google.inject.internal.SingleMethodInjector$1.invoke(SingleMethodInjector.java:50) ~[floodgate-spigot.jar:?]
    at org.geysermc.floodgate.shaded.com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:87) ~[floodgate-spigot.jar:?]
    at org.geysermc.floodgate.shaded.com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:146) ~[floodgate-spigot.jar:?]
    at org.geysermc.floodgate.shaded.com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:124) ~[floodgate-spigot.jar:?]
    at org.geysermc.floodgate.shaded.com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91) ~[floodgate-spigot.jar:?]
    at org.geysermc.floodgate.shaded.com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:296) ~[floodgate-spigot.jar:?]
    at org.geysermc.floodgate.shaded.com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1100) ~[floodgate-spigot.jar:?]
    at org.geysermc.floodgate.shaded.com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1138) ~[floodgate-spigot.jar:?]
    at org.geysermc.floodgate.SpigotPlugin.onLoad(SpigotPlugin.java:53) ~[floodgate-spigot.jar:?]
    at org.bukkit.craftbukkit.v1_17_R1.CraftServer.loadPlugins(CraftServer.java:425) ~[patched_1.17.1.jar:git-Purpur-1427]
    at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:322) ~[patched_1.17.1.jar:git-Purpur-1427]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1231) ~[patched_1.17.1.jar:git-Purpur-1427]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:322) ~[patched_1.17.1.jar:git-Purpur-1427]
    at java.lang.Thread.run(Thread.java:831) ~[?:?]

Floodgate version: 2.0 Build 47 Geyser version: 1.4.3 Build 931

Sorry in advance if I've overlooked something obvious.

timas130 commented 2 years ago

This happens to me too. I just reverted to build 46 and it works perfectly.

Camotoy commented 2 years ago

I can't reproduce this - can one of you please send a Geyser dump?

Keeg-Turner commented 2 years ago

I can't reproduce this - can one of you please send a Geyser dump?

Sure thing: https://dump.geysermc.org/y0KhL0PjHgKcJ9ygCKuQ97KhpoiUwIb8

I can also confirm that outdating to Floodgate build 46 fixes the issue as @timas130 suggested.

dholl commented 2 years ago

Same issue here. Builds 47 and 48 produce the error message, but build 46 is OK.

dump for build 46: https://dump.geysermc.org/W4DCeznrQFOZMjkpcTIN74cmskkiskZe

dump for build 47: https://dump.geysermc.org/PCH8jJFxstNRQycDhqvyVsFmk8ZcwR7G

dump for build 48: https://dump.geysermc.org/xJ7XmfHU6XAJy03VBqyp3aRytSEIY2Ru

Here's the error on my waterfall proxy:

[2021-11-26T19:52:21,111] [main/ERROR]: Error while loading database jar
java.lang.NullPointerException: Cannot invoke "java.nio.file.Path.resolve(String)" because "this.dataDirectory" is null
        at org.geysermc.floodgate.database.SqliteDatabase.load(SqliteDatabase.java:59) ~[?:?]
        at org.geysermc.floodgate.link.PlayerLinkLoader.load(PlayerLinkLoader.java:185) ~[?:?]
        at org.geysermc.floodgate.FloodgatePlatform.init(FloodgatePlatform.java:105) ~[?:?]
        at org.geysermc.floodgate.FloodgatePlatform$$FastClassByGuice$$6288601.GUICE$TRAMPOLINE(<generated>) ~[?:?]
        at org.geysermc.floodgate.FloodgatePlatform$$FastClassByGuice$$6288601.apply(<generated>) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.SingleMethodInjector$1.invoke(SingleMethodInjector.java:50) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:87) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:146) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:124) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:296) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1100) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1138) ~[?:?]
        at org.geysermc.floodgate.BungeePlugin.onLoad(BungeePlugin.java:55) ~[?:?]
        at net.md_5.bungee.api.plugin.PluginManager.enablePlugin(PluginManager.java:398) ~[papermc-waterfall-1.18-458.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:f3d6941:458]
        at net.md_5.bungee.api.plugin.PluginManager.loadPlugins(PluginManager.java:300) ~[papermc-waterfall-1.18-458.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:f3d6941:458]
        at net.md_5.bungee.BungeeCord.start(BungeeCord.java:278) ~[papermc-waterfall-1.18-458.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:f3d6941:458]
        at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:67) ~[papermc-waterfall-1.18-458.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:f3d6941:458]
        at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15) ~[papermc-waterfall-1.18-458.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:f3d6941:458]
[2021-11-26T19:52:21,118] [main/INFO]: Took 288ms to boot Floodgate
[2021-11-26T19:52:21,118] [main/INFO]: Loaded plugin floodgate version 2.0-SNAPSHOT by GeyserMC

And the same error from one of the backend paper servers:

[2021-11-26T19:52:54,317] [Server thread/INFO]: Loading floodgate v2.0-SNAPSHOT
[2021-11-26T19:52:55,438] [Server thread/ERROR]: Error while loading database jar
java.lang.NullPointerException: Cannot invoke "java.nio.file.Path.resolve(String)" because "this.dataDirectory" is null
        at org.geysermc.floodgate.database.SqliteDatabase.load(SqliteDatabase.java:59) ~[?:?]
        at org.geysermc.floodgate.link.PlayerLinkLoader.load(PlayerLinkLoader.java:185) ~[?:?]
        at org.geysermc.floodgate.FloodgatePlatform.init(FloodgatePlatform.java:105) ~[?:?]
        at org.geysermc.floodgate.FloodgatePlatform$$FastClassByGuice$$6187366.GUICE$TRAMPOLINE(<generated>) ~[?:?]
        at org.geysermc.floodgate.FloodgatePlatform$$FastClassByGuice$$6187366.apply(<generated>) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.SingleMethodInjector$1.invoke(SingleMethodInjector.java:50) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:87) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:146) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:124) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:296) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1100) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1138) ~[?:?]
        at org.geysermc.floodgate.SpigotPlugin.onLoad(SpigotPlugin.java:53) ~[?:?]
        at org.bukkit.craftbukkit.v1_17_R1.CraftServer.loadPlugins(CraftServer.java:425) ~[patched_1.17.1.jar:git-Paper-388]
        at net.minecraft.server.dedicated.DedicatedServer.init(DedicatedServer.java:287) ~[patched_1.17.1.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1220) ~[patched_1.17.1.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[patched_1.17.1.jar:git-Paper-388]
        at java.lang.Thread.run(Thread.java:831) [?:?]
[2021-11-26T19:52:55,525] [Server thread/INFO]: Took 1,204ms to boot Floodgate
sctigercat1 commented 2 years ago

Just want to add that I am also experiencing this error when attempting to initialize the local linking mechanism. Specifically, I am using sqlite for my database and the spigot (PaperMC) plugin for floodgate and GeyserMC.

The commit causing issues is a57bd24216ddbaef1f5ef29d7eef01531678f4b3. When I locally revered this commit (keeping the changes of 315efb9e50b50810fddf739c923dd2f6753f4d26) and recompiled floodgate using Maven, I was able to load the plug-in without errors. Not sure what about this commit specifically is causing so much grief, but this is what I have noticed.

DrPepplies commented 2 years ago

+1, also experiencing this error since updating to 1.18 with the latest Geyser bungee and Floodgate bungee builds.

Also players who are both globally and locally linked aren't getting linked at all, temporarily turning local linking off has fixed it and they've started linking again via global.

njanke96 commented 2 years ago

+1, latest geyser bungee and floodgate at time of writing, Ubuntu 18.04 with java 17

Camotoy commented 2 years ago

Can you provide a Geyser dump? I attempted to (somewhat) replicate dholl's setup but was unsuccessful.

njanke96 commented 2 years ago

Did not know it was a thing, here we go: https://dump.geysermc.org/DlRPOGx1FrH1kPXVW96KxBU7Yg0XwA5b

Editing to add my error as well, no other errors on startup:

[12:11:24 ERROR] [floodgate]: Error while loading database jar
java.lang.NullPointerException: Cannot invoke "java.nio.file.Path.resolve(String)" because "this.dataDirectory" is null
        at org.geysermc.floodgate.database.SqliteDatabase.load(SqliteDatabase.java:59) ~[?:?]
        at org.geysermc.floodgate.link.PlayerLinkLoader.load(PlayerLinkLoader.java:185) ~[?:?]
        at org.geysermc.floodgate.FloodgatePlatform.init(FloodgatePlatform.java:104) ~[?:?]
        at org.geysermc.floodgate.FloodgatePlatform$$FastClassByGuice$$5493346.GUICE$TRAMPOLINE(<generated>) ~[?:?]
        at org.geysermc.floodgate.FloodgatePlatform$$FastClassByGuice$$5493346.apply(<generated>) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.SingleMethodInjector$1.invoke(SingleMethodInjector.java:50) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:87) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:146) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:124) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:296) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1100) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1138) ~[?:?]
        at org.geysermc.floodgate.BungeePlugin.onLoad(BungeePlugin.java:55) ~[?:?]
        at net.md_5.bungee.api.plugin.PluginManager.enablePlugin(PluginManager.java:398) ~[waterfall-current.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:3e0a6ae:461]
        at net.md_5.bungee.api.plugin.PluginManager.loadPlugins(PluginManager.java:300) ~[waterfall-current.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:3e0a6ae:461]
        at net.md_5.bungee.BungeeCord.start(BungeeCord.java:278) ~[waterfall-current.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:3e0a6ae:461]
        at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:67) ~[waterfall-current.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:3e0a6ae:461]
        at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15) ~[waterfall-current.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:3e0a6ae:461]
[12:11:24 INFO] [floodgate]: Took 293ms to boot Floodgate
dholl commented 2 years ago

So to document for other reporters, the dump command is just /geyser dump

Here's my latest dump, after auto-updating up to the latest Paper (1.18-20) + Waterfall (1.18-461) + Geyser (build 939) + floodgate (build 52). (Still not working) https://dump.geysermc.org/PwwZYfBgn6UxXWmkPENGQh8lyg8mNwI2

And if it helps, here's the entire beginning of the logs/latest.log up until the error:

[2021-12-01T16:42:35,858] [ServerMain/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[2021-12-01T16:42:36,493] [ServerMain/INFO]: Reloading ResourceManager: Default, dave_pack, bukkit
[2021-12-01T16:42:37,179] [Worker-Main-5/INFO]: Loaded 7 recipes
[2021-12-01T16:42:39,028] [Server thread/INFO]: Starting minecraft server version 1.18
[2021-12-01T16:42:39,034] [Server thread/INFO]: Loading properties
[2021-12-01T16:42:39,111] [Server thread/INFO]: This server is running Paper version git-Paper-20 (MC: 1.18) (Implementing API version 1.18-R0.1-SNAPSHOT) (Git: 0cd411e)
[2021-12-01T16:42:39,261] [Server thread/INFO]: Using 4 threads for Netty based IO
[2021-12-01T16:42:39,261] [Server thread/INFO]: Server Ping Player Sample Count: 12
[2021-12-01T16:42:39,460] [Server thread/INFO]: Default game type: CREATIVE
[2021-12-01T16:42:39,460] [Server thread/INFO]: Generating keypair
[2021-12-01T16:42:39,602] [Server thread/INFO]: Starting Minecraft server on [::1]:25567
[2021-12-01T16:42:39,626] [Server thread/INFO]: Using epoll channel type
[2021-12-01T16:42:39,639] [Server thread/INFO]: Paper: Using libdeflate (Linux x86_64) compression from Velocity.
[2021-12-01T16:42:39,640] [Server thread/INFO]: Paper: Using OpenSSL 1.1.x (Linux x86_64) cipher from Velocity.
[2021-12-01T16:42:40,796] [Server thread/INFO]: Loading CoreProtect v20.1
[2021-12-01T16:42:40,797] [Server thread/INFO]: Loading Chunky v1.2.153
[2021-12-01T16:42:40,797] [Server thread/INFO]: Loading BlocksHub v3.2.0
[2021-12-01T16:42:40,798] [Server thread/INFO]: Loading ViaVersion v4.1.0
[2021-12-01T16:42:40,829] [Server thread/INFO]: ViaVersion 4.1.0 is now loaded, injecting!
[2021-12-01T16:42:41,172] [Via-Mappingloader-0/INFO]: Loading 1.12 -> 1.13 mappings...
[2021-12-01T16:42:41,278] [Via-Mappingloader-1/INFO]: Loading 1.13 -> 1.13.2 mappings...
[2021-12-01T16:42:41,456] [Via-Mappingloader-2/INFO]: Loading 1.13.2 -> 1.14 mappings...
[2021-12-01T16:42:41,524] [Via-Mappingloader-3/INFO]: Loading 1.14 -> 1.15 mappings...
[2021-12-01T16:42:41,624] [Via-Mappingloader-4/INFO]: Loading 1.15 -> 1.16 mappings...
[2021-12-01T16:42:41,676] [Via-Mappingloader-1/INFO]: Loading 1.16 -> 1.16.2 mappings...
[2021-12-01T16:42:41,720] [Via-Mappingloader-2/INFO]: Loading 1.16.2 -> 1.17 mappings...
[2021-12-01T16:42:41,751] [Via-Mappingloader-0/INFO]: Loading block connection mappings ...
[2021-12-01T16:42:41,760] [Server thread/INFO]: Loading floodgate v2.1.0-SNAPSHOT
[2021-12-01T16:42:41,766] [Via-Mappingloader-5/INFO]: Loading 1.17 -> 1.18 mappings...
[2021-12-01T16:42:42,748] [Server thread/ERROR]: Error while loading database jar
java.lang.NullPointerException: Cannot invoke "java.nio.file.Path.resolve(String)" because "this.dataDirectory" is null
        at org.geysermc.floodgate.database.SqliteDatabase.load(SqliteDatabase.java:59) ~[?:?]
        at org.geysermc.floodgate.link.PlayerLinkLoader.load(PlayerLinkLoader.java:185) ~[?:?]
        at org.geysermc.floodgate.FloodgatePlatform.init(FloodgatePlatform.java:104) ~[?:?]
        at org.geysermc.floodgate.FloodgatePlatform$$FastClassByGuice$$6117800.GUICE$TRAMPOLINE(<generated>) ~[?:?]
        at org.geysermc.floodgate.FloodgatePlatform$$FastClassByGuice$$6117800.apply(<generated>) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.SingleMethodInjector$1.invoke(SingleMethodInjector.java:50) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:87) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:146) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:124) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:296) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1100) ~[?:?]
        at org.geysermc.floodgate.shaded.com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1138) ~[?:?]
        at org.geysermc.floodgate.SpigotPlugin.onLoad(SpigotPlugin.java:53) ~[?:?]
        at org.bukkit.craftbukkit.v1_18_R1.CraftServer.loadPlugins(CraftServer.java:429) ~[paper-1.18.jar:git-Paper-20]
        at net.minecraft.server.dedicated.DedicatedServer.e(DedicatedServer.java:285) ~[paper-1.18.jar:git-Paper-20]
        at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1201) ~[paper-1.18.jar:git-Paper-20]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:316) ~[paper-1.18.jar:git-Paper-20]
        at java.lang.Thread.run(Thread.java:833) [?:?]
[2021-12-01T16:42:42,828] [Server thread/INFO]: Took 1,065ms to boot Floodgate
...

Hmm, thinking outside of the box: Would you like to make a special debug release of the floodgate-sqlite-database.jar with a few extra log messages peppered around wherever you'd like to help collect extra clues? I'd be happy to load it.

Camotoy commented 2 years ago

Turns out I forgot to enable the config option to enable own linking. I've uncommented that out and set it to false as default so future people do not have the same issue. Could you try the latest database jar (build 53) and see if the issue is resolved? The Floodgate plugin should not need an update.

dholl commented 2 years ago

Build 53 works for me! Woo Hoo! Thank you very much!

njanke96 commented 2 years ago

Me too, thank you!

Camotoy commented 2 years ago

Thank you all for your patience!