LuckPerms

LuckPerms

41.4k Downloads

Bug with Sponge miscalculation player leaves/joins

inklit opened this issue ยท 2 comments

commented

Sometimes, my auto-rejoin script that sends players from the lobby "hangs" and will attempt a connection but fail. Sponge fires a player disconnect event whenever the hung connection times out. If you relog before it times out, you will be logged in but Sponge will fire a disconnect event for you which causes this bug. Everything breaks.

[20:04:29] [Server thread/ERROR] [Sponge]: Could not pass MoveEntityEvent$Impl to Plugin{id=griefprevention, name=GriefPrevention, version=2.2.0, description=This plugin is designed to
prevent all forms of grief., source=/opt/mcf/mods/griefprevention-1.10.2-2.2.0-DEBUG2.jar}
com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Recursive load of: me.lucko.luckperms.sponge.model.SpongeUser$UserSubject@604ad371
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) ~[minecraft_server.1.10.2.jar:?]
        at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[minecraft_server.1.10.2.jar:?]
        at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[minecraft_server.1.10.2.jar:?]
        at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[minecraft_server.1.10.2.jar:?]
        at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[minecraft_server.1.10.2.jar:?]
        at me.lucko.luckperms.common.contexts.ContextManager.getApplicableContext(ContextManager.java:60) ~[ContextManager.class:?]
        at me.lucko.luckperms.sponge.model.SpongeUser$UserSubject.getActiveContextSet(SpongeUser.java:182) ~[SpongeUser$UserSubject.class:?]
        at me.lucko.luckperms.sponge.service.LuckPermsSubject.getOption(LuckPermsSubject.java:95) ~[LuckPermsSubject.class:?]
        at me.ryanhamshire.griefprevention.util.PlayerUtils.getOptionDoubleValue(PlayerUtils.java:136) ~[PlayerUtils.class:?]
        at me.ryanhamshire.griefprevention.PlayerData.refreshPlayerOptions(PlayerData.java:200) ~[PlayerData.class:?]
        at me.ryanhamshire.griefprevention.PlayerData.<init>(PlayerData.java:192) ~[PlayerData.class:?]
        at me.ryanhamshire.griefprevention.claim.ClaimWorldManager.createPlayerData(ClaimWorldManager.java:117) ~[ClaimWorldManager.class:?]
        at me.ryanhamshire.griefprevention.claim.ClaimWorldManager.getOrCreatePlayerData(ClaimWorldManager.java:88) ~[ClaimWorldManager.class:?]
        at me.ryanhamshire.griefprevention.DataStore.getOrCreatePlayerData(DataStore.java:1470) ~[DataStore.class:?]
        at me.ryanhamshire.griefprevention.DataStore.getPlayerData(DataStore.java:1465) ~[DataStore.class:?]
        at me.ryanhamshire.griefprevention.event.EntityEventHandler.onEntityMove(EntityEventHandler.java:593) ~[EntityEventHandler.class:?]
        at org.spongepowered.common.event.listener.MoveEntityEventListener_EntityEventHandler_onEntityMove100.handle(Unknown Source) ~[?:?]
        at org.spongepowered.common.event.RegisteredListener.handle(RegisteredListener.java:95) ~[RegisteredListener.class:1.10.2-2123-5.1.0-BETA-1923]
        at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:357) [SpongeModEventManager.class:1.10.2-2123-5.1.0-BETA-1923]
        at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:398) [SpongeModEventManager.class:1.10.2-2123-5.1.0-BETA-1923]
        at org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:370) [SpongeModEventManager.class:1.10.2-2123-5.1.0-BETA-1923]
        at org.spongepowered.common.SpongeImpl.postEvent(SpongeImpl.java:141) [SpongeImpl.class:1.10.2-2123-5.1.0-BETA-1923]
        at net.minecraft.network.NetHandlerPlayServer.redirect$throwMoveEvent$zgp000(NetHandlerPlayServer.java:463) [me.class:?]
        at net.minecraft.network.NetHandlerPlayServer.func_147347_a(NetHandlerPlayServer.java:406) [me.class:?]
        at net.minecraft.network.play.client.CPacketPlayer.func_148833_a(SourceFile:126) [iw.class:?]
        at net.minecraft.network.play.client.CPacketPlayer$Position.func_148833_a(SourceFile:57) [iw$a.class:?]
        at org.spongepowered.common.network.PacketUtil.onProcessPacket(PacketUtil.java:136) [PacketUtil.class:1.10.2-2123-5.1.0-BETA-1923]
        at net.minecraft.network.PacketThreadUtil$1.redirect$onProcessPacket$zjc000(SourceFile:39) [fl$1.class:?]
        at net.minecraft.network.PacketThreadUtil$1.run(SourceFile:13) [fl$1.class:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_91]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_91]
        at net.minecraft.util.Util.func_181617_a(SourceFile:45) [h.class:?]
        at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:668) [MinecraftServer.class:?]
        at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:387) [ld.class:?]
        at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:613) [MinecraftServer.class:?]
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:471) [MinecraftServer.class:?]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_91]
Caused by: java.lang.IllegalStateException: Recursive load of: me.lucko.luckperms.sponge.model.SpongeUser$UserSubject@604ad371
        at com.google.common.base.Preconditions.checkState(Preconditions.java:200) ~[minecraft_server.1.10.2.jar:?]
        at com.google.common.cache.LocalCache$Segment.waitForLoadingValue(LocalCache.java:2297) ~[minecraft_server.1.10.2.jar:?]
        at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2287) ~[minecraft_server.1.10.2.jar:?]
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[minecraft_server.1.10.2.jar:?]
        at com.google.common.cache.LocalCache.get(LocalCache.java:3934) ~[minecraft_server.1.10.2.jar:?]
        at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) ~[minecraft_server.1.10.2.jar:?]
        at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) ~[minecraft_server.1.10.2.jar:?]
        at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) ~[minecraft_server.1.10.2.jar:?]
        at me.lucko.luckperms.common.contexts.ContextManager.getApplicableContext(ContextManager.java:60) ~[ContextManager.class:?]
        at me.lucko.luckperms.sponge.model.SpongeUser$UserSubject.getActiveContextSet(SpongeUser.java:182) ~[SpongeUser$UserSubject.class:?]
        at me.lucko.luckperms.sponge.service.LuckPermsSubject.getOption(LuckPermsSubject.java:95) ~[LuckPermsSubject.class:?]
        at me.ryanhamshire.griefprevention.util.PlayerUtils.getOptionDoubleValue(PlayerUtils.java:136) ~[PlayerUtils.class:?]
        at me.ryanhamshire.griefprevention.PlayerData.refreshPlayerOptions(PlayerData.java:200) ~[PlayerData.class:?]
        at me.ryanhamshire.griefprevention.PlayerData.<init>(PlayerData.java:192) ~[PlayerData.class:?]
        at me.ryanhamshire.griefprevention.claim.ClaimWorldManager.createPlayerData(ClaimWorldManager.java:117) ~[ClaimWorldManager.class:?]
        at me.ryanhamshire.griefprevention.claim.ClaimWorldManager.getOrCreatePlayerData(ClaimWorldManager.java:88) ~[ClaimWorldManager.class:?]
        at me.ryanhamshire.griefprevention.DataStore.getOrCreatePlayerData(DataStore.java:1470) ~[DataStore.class:?]
        at me.ryanhamshire.griefprevention.DataStore.getPlayerData(DataStore.java:1465) ~[DataStore.class:?]
        at me.ryanhamshire.griefprevention.DataStore.getClaimAtPlayer(DataStore.java:386) ~[DataStore.class:?]
        at me.ryanhamshire.griefprevention.claim.ClaimContextCalculator.accumulateContexts(ClaimContextCalculator.java:43) ~[ClaimContextCalculator.class:?]
        at me.ryanhamshire.griefprevention.claim.ClaimContextCalculator.accumulateContexts(ClaimContextCalculator.java:37) ~[ClaimContextCalculator.class:?]
        at me.lucko.luckperms.sponge.contexts.SpongeCalculatorLink.giveApplicableContext(SpongeCalculatorLink.java:42) ~[SpongeCalculatorLink.class:?]
        at me.lucko.luckperms.sponge.contexts.SpongeCalculatorLink.giveApplicableContext(SpongeCalculatorLink.java:35) ~[SpongeCalculatorLink.class:?]
        at me.lucko.luckperms.common.contexts.ContextManager.calculateApplicableContext(ContextManager.java:54) ~[ContextManager.class:?]
        at me.lucko.luckperms.common.contexts.ContextManager.access$000(ContextManager.java:37) ~[ContextManager.class:?]
        at me.lucko.luckperms.common.contexts.ContextManager$1.load(ContextManager.java:48) ~[ContextManager$1.class:?]
        at me.lucko.luckperms.common.contexts.ContextManager$1.load(ContextManager.java:45) ~[ContextManager$1.class:?]
        at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) ~[minecraft_server.1.10.2.jar:?]
        at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) ~[minecraft_server.1.10.2.jar:?]
        at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) ~[minecraft_server.1.10.2.jar:?]
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ~[minecraft_server.1.10.2.jar:?]
        ... 36 more
commented

@bloodmc I'll close the issue then, thanks.

commented

@luck this was a bug on my end with my calculator. It is fixed in latest GP builds.