PaperMC / PaperMC/Waterfall

Proxy does not handle duplicate scoreboard teams across connections

Open
#318 21 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Shell
Stars
752
Forks
307
Avg merge
15h 48m
Merged PRs (30d)
7

Description

[23:25:54] [Netty Worker IO Thread #23/ERROR]: [/1.156.19.57:50127|Uber_Elite] <-> DownstreamBridge <-> [LegendBender] - encountered exception
java.lang.IllegalArgumentException: Team §7§0§l[§9§lP_Mc already exists in this scoreboard
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:191) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at net.md_5.bungee.api.score.Scoreboard.addTeam(Scoreboard.java:73) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at net.md_5.bungee.connection.DownstreamBridge.handle(DownstreamBridge.java:208) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at net.md_5.bungee.protocol.packet.Team.handle(Team.java:122) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at net.md_5.bungee.netty.HandlerBoss.channelRead(HandlerBoss.java:103) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:799) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:421) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:321) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897) ~[Waterfall.jar:git:Waterfall-Bootstrap:1.13-SNAPSHOT:a4b5eaf:238]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with net.md_5.bungee.connection.DownstreamBridge.handle, then trace Team.handle and net.md_5.bungee.api.score.Scoreboard.addTeam, which the stack trace identifies as the failure path. Reproduce duplicate team updates across connections and determine how the proxy should handle an already-existing team without raising this exception; done means the connection continues without the reported error.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.