PaperMC / Waterfall

BungeeCord fork that aims to improve performance and stability.
https://papermc.io
MIT License
743 stars 297 forks source link

Kicked with: server_went_down #737

Closed andreasdc closed 2 years ago

andreasdc commented 2 years ago

I'm often getting kicked after connecting to the server with server_went_down message, but there are no errors on spigot or bungee.

electronicboy commented 2 years ago

You'd need to work out why the connection disappeared, there is nothing here to suggest that this is a waterfall issue, and this is not the place for support

andreasdc commented 2 years ago

You'd need to work out why the connection disappeared, there is nothing here to suggest that this is a waterfall issue, and this is not the place for support

Kick reason is from proxy, so how to analyze it?

electronicboy commented 2 years ago

Kick reason is from the proxy because the server lost connection and thus, the proxy no longer having somewhere to connect you to, kicked you from the proxy

There is often logs when this stuff happens, but, not always, you'll have to try to deduce what caused it

andreasdc commented 2 years ago

Kick reason is from the proxy because the server lost connection and thus, the proxy no longer having somewhere to connect you to, kicked you from the proxy

There is often logs when this stuff happens, but, not always, you'll have to try to deduce what caused it

I only have 'disconnected' as reason in the logs, no errors or anything.

andreasdc commented 2 years ago

Kick reason is from the proxy because the server lost connection and thus, the proxy no longer having somewhere to connect you to, kicked you from the proxy

There is often logs when this stuff happens, but, not always, you'll have to try to deduce what caused it

I have the error: java.lang.IllegalArgumentException: Objective sbUsername already exists in this scoreboard

andreasdc commented 2 years ago

Full error: java.lang.IllegalArgumentException: Objective sbUsername already exists in this scoreboard at com.google.common.base.Preconditions.checkArgument(Preconditions.java:220) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at net.md_5.bungee.api.score.Scoreboard.addObjective(Scoreboard.java:55) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at net.md_5.bungee.connection.DownstreamBridge.handle(DownstreamBridge.java:189) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at net.md_5.bungee.protocol.packet.ScoreboardObjective.handle(ScoreboardObjective.java:87) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at net.md_5.bungee.netty.HandlerBoss.channelRead(HandlerBoss.java:132) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:314) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:435) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:279) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:480) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[FlameCord.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:8e37934:unknown] at java.lang.Thread.run(Thread.java:833) [?:?]

electronicboy commented 2 years ago

318

andreasdc commented 2 years ago

318

What's the fix?

electronicboy commented 2 years ago

There is no fix atm, don't have duplicate team names across servers, basically

andreasdc commented 2 years ago

There is no fix atm, don't have duplicate team names across servers, basically

Isn't it creating memory leak for clients?

andreasdc commented 2 years ago

There is no fix atm, don't have duplicate team names across servers, basically

Also shouldn't it just be overriden, as you can't do much with scoreboards from another server?

electronicboy commented 2 years ago

It's not creating a leak, there is generally a race condition within the logic due to how server switches occur which makes it much harder to solve than just "overriding", please read the linked issue

andreasdc commented 2 years ago

It's not creating a leak, there is generally a race condition within the logic due to how server switches occur which makes it much harder to solve than just "overriding", please read the linked issue

1st server didn't have any scoreboards, should it happen in that way?

andreasdc commented 2 years ago

@electronicboy no way that this would happen again, something is more messed up than that.

electronicboy commented 2 years ago

This is not the place for a back and forth discussion, no need to spam peoples emails; You clearly have something using scoreboards, and the name doesn't look unique, so, likely some plugin on both is causing duplicate names across server instances

andreasdc commented 2 years ago

This is not the place for a back and forth discussion, no need to spam peoples emails; You clearly have something using scoreboards, and the name doesn't look unique, so, likely some plugin on both is causing duplicate names across server instances

Shouldn't it clear scoreboard objectives when switching the server?

electronicboy commented 2 years ago

https://github.com/PaperMC/Waterfall/issues/737#issuecomment-1109077313

andreasdc commented 2 years ago

#737 (comment)

So If I create objective with name I can't use it anymore on any server during the same proxy connection?

electronicboy commented 2 years ago

Yes.

andreasdc commented 2 years ago

Yes.

Well that's a litte bit problematic, right? 🚀 I had the same names on every server and I didn't have this problem earlier.

Janmm14 commented 2 years ago

Yes.

Doesn't your "yes" mean that vanilla scoreboards will cause this problem once you enter the same server for the 2nd time in your proxy connection?

electronicboy commented 2 years ago

Yes, you can't have duplicate team names across servers without it breaking, this is a long standing bungeecord issue, hence the already opened issue for this; resolving this however is a PITA because aspects of this fall into the API, of which any fix for this is potentially going to introduce race conditions or inconsistencies with the API

ColorsASD commented 2 years ago

I had a similar problem on 1.19.1 and 1.19.2. The connection with the server was continuously disconnected with the message "server went down". Although I did not experience an error line.

BungeePackFix update solved the problem, I hope I can help someone with this as well.

Arobcher commented 1 year ago

这是来自QQ邮箱的假期自动回复邮件。   您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。