Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Op players get stuck in infinite disconnect loop #105

Open
twiceineverymoment opened this issue Feb 3, 2025 · 2 comments
Open

Op players get stuck in infinite disconnect loop #105

twiceineverymoment opened this issue Feb 3, 2025 · 2 comments

Comments

@twiceineverymoment
Copy link

twiceineverymoment commented Feb 3, 2025

Players who have op status in the server configuration get stuck in an infinite disconnect loop. The player will connect, then immediately get kicked with Velocity throwing the below error. They then get sent to the other backends (which fail to connect because the client is modded), then back to this one causing an infinite loop which requires closing the client with Alt+F4 to get out of. The backend server doesn't log any error and just shows "Disconnected" as though the player had logged out normally.

Ubuntu 20.04 LTS
OpenJDK 21 x64
Fabric 0.16.10
MC 1.21.1
FabricProxy-Lite 2.9.0

io.netty.handler.codec.CorruptedFrameException: Error decoding class com.velocitypowered.proxy.protocol.packet.AvailableCommandsPacket Direction CLIENTBOUND Protocol 1.21 State PLAY ID 11
	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.handleDecodeFailure(MinecraftDecoder.java:130) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:85) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.channelRead(MinecraftDecoder.java:60) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:289) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:333) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:455) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:799) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:501) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:399) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at java.base/java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.IllegalArgumentException: Argument type identifier null unknown.
	at com.velocitypowered.proxy.protocol.packet.brigadier.ArgumentPropertyRegistry.deserialize(ArgumentPropertyRegistry.java:89) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at com.velocitypowered.proxy.protocol.packet.AvailableCommandsPacket.deserializeNode(AvailableCommandsPacket.java:210) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at com.velocitypowered.proxy.protocol.packet.AvailableCommandsPacket.decode(AvailableCommandsPacket.java:88) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at com.velocitypowered.proxy.protocol.netty.MinecraftDecoder.tryDecode(MinecraftDecoder.java:83) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	... 30 more
[13:25:09] [Netty epoll Worker #14/INFO] [com.velocitypowered.proxy.connection.MinecraftConnection]: [server connection] TwiceInAMoment -> cobblemon has disconnected
[13:25:09] [Netty epoll Worker #14/INFO] [com.velocitypowered.proxy.connection.MinecraftConnection]: [server connection] TwiceInAMoment -> lobby has connected
[13:25:09] [Netty epoll Worker #14/INFO] [com.velocitypowered.proxy.connection.MinecraftConnection]: [server connection] TwiceInAMoment -> lobby has disconnected
[13:25:09] [Netty epoll Worker #14/ERROR] [com.velocitypowered.proxy.connection.client.ConnectedPlayer]: [connected player] TwiceInAMoment (/10.0.0.76:52459): disconnected while connecting to lobby: Outdated client! Please use 1.21.4
[13:25:09] [Netty epoll Worker #14/ERROR] [com.velocitypowered.proxy.connection.client.ConnectedPlayer]: [connected player] TwiceInAMoment (/10.0.0.76:52459): unable to connect to server survival1
io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: Connection refused: newerarpg-p3.local/10.0.0.33:26001
Caused by: java.net.ConnectException: finishConnect(..) failed: Connection refused
	at io.netty.channel.unix.Errors.newConnectException0(Errors.java:166) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.unix.Errors.handleConnectErrno(Errors.java:131) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.unix.Socket.finishConnect(Socket.java:359) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.doFinishConnect(AbstractEpollChannel.java:715) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:692) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:567) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:491) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:399) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[velocity.jar:3.4.0-SNAPSHOT (git-876b9c36-b465)]
	at java.base/java.lang.Thread.run(Thread.java:833) [?:?]
@twiceineverymoment twiceineverymoment changed the title Infinite disconnect loop when using LuckPerms with mySQL storage provider Op players get stuck in infinite disconnect loop Feb 3, 2025
@twiceineverymoment
Copy link
Author

Edited to reflect more investigation into the issue. The root cause is not LuckPerms after all, but having op status. LuckPerms's auto-op feature was making it seem to be the culprit but the same thing happens to players opped manually via console with LuckPerms not even installed.

@james58899
Copy link
Member

Have you installed CrossStitch?
A certain mod uses a custom command, causing incompatibility with the proxy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants