Giter VIP home page Giter VIP logo

waterfall's Introduction

Waterfall

Caution

This project has reached end of life and is no longer maintained.
We recommend you transition to Velocity. For more information, see the announcement.

Waterfall is a fork of the well-known BungeeCord server teleportation suite.

Waterfall focuses on three main areas:

  • Stability: Waterfall aims to be stable. We will achieve this through making the code base testable and discouraging practices that lead to proxy lag.
  • Features: Waterfall aims to include more features than canonical BungeeCord.
  • Scalability: Waterfall should be able to handle a large number of concurrent players, given a reasonably modern CPU, memory, and good network connection.

Why fork BungeeCord?

Think of Waterfall as a principles fork.

Waterfall was forked because of the fact that upstream does not accept many contributions that are intended to better the ecosystem. Simply put, Waterfall aims to better the ecosystem by allowing changes to be exposed to a wider audience more quickly.

Waterfall will still track upstream BungeeCord and merge changes as needed.

How To (Server Admins)

Download a copy of Waterfall.jar from our homepage here: Waterfall

Waterfall requires Java 8 or above.

How To (Plugin Developers)


<repository>
    <id>papermc</id>
    <url>https://repo.papermc.io/repository/maven-public/</url>
</repository>
  • Artifact information:
<dependency>
    <groupId>io.github.waterfallmc</groupId>
    <artifactId>waterfall-api</artifactId>
    <version>1.20-R0.3-SNAPSHOT</version>
    <scope>provided</scope>
</dependency>

Or alternatively, with Gradle:

  • Repository:
repositories {
    maven {
        url 'https://repo.papermc.io/repository/maven-public/'
    }
}
  • Artifact:
dependencies {
    compileOnly 'io.github.waterfallmc:waterfall-api:1.20-R0.3-SNAPSHOT'
}

How To (Compiling From Source)

To compile Waterfall, you need JDK8, git, bash, maven, and an internet connection.

Clone this repo, run ./waterfall b from bash, get jar from Waterfall-Proxy/bootstrap/target/

Join us

Special Thanks To

YourKit-Logo

YourKit, makers of the outstanding Java profiler, supports open source projects of all kinds with their full-featured Java and .NET application profilers. We thank them for granting Waterfall an OSS license so that we can make our software the best it can be.

waterfall's People

Contributors

aaron1011 avatar andre601 avatar artuto avatar astei avatar aurorasmiles avatar black-hole avatar byteflux avatar chew avatar colinrgodsey avatar electronicboy avatar fuzzybot avatar jamierocks avatar janmm14 avatar jroy avatar kamcio96 avatar kennytv avatar lemoncaramel avatar linsaftw avatar luccboy avatar mariaum avatar mikroskeem avatar minecrafter avatar noahvdaa avatar notmyfault avatar spottedleaf avatar stephan-gh avatar techcable avatar theminecoder avatar tomcraft avatar xernium avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

waterfall's Issues

[Question/Issue]

So in the Waterfall configuration file, the follow 2 options don't seem to generate, and when a server goes down for its scheduled restart, players get kicked out of the server altogether instead of getting moved to the Lobby/HUB server.

  default_server: Lobby
  fallback_server: Lobby

Am I doing something wrong that is causing these options not to show up? Any help at all would be greatly appreciated.

On-the-fly Plugin Loading and Unloading (Bounty offered)

I have been really wanting a stable and smart version of plugin loading and unloading on the fly for a while and it's come to the point that I'm actually willing to offer a bounty for this. I'm willing to offer any of the Waterfall devs $50 (and will pay any fees by processor like PayPal's) for this to be addressed.

There's a few conditions to the way I want it done though:

  1. It has to be more sane than the system that Bukkit/Spigot/Paper uses - IE you can't do it to all plugins.
  2. I want a warning to clearly be displayed that some plugins may fully break with this. (And would really like it if you had to confirm before it work load/unload).
  3. This has to be done in the core - I don't want it in a plugin as I really fear that it will be more of a problem that way than not. Bungee Plugin Manager is a great concept.. but is flawed. The problem with it is that it doesn't always allow all plugins to try initialize and they don't throw errors as it doesn't try to load them for some reason.
  4. This needs to be actively maintained and I am willing to "sponsor" this feature on an ongoing basis.

More CPU usage than origin bungeecord while >600 online

Hardware: DELL r730 E5-2699v3 dual
OS: ubuntu-14.04lts
A cluster, upto >5000 online, under 5-10 bungeecord balance with LVS. Waterfall have definite less CPU usage while <600 online, but more CPU usage while >600 online.
How can I help you?:-)

NPE and crash on startup

Just downloaded the latest build from Waterfall and tried to start it, causing a NPE to be thrown. (Build 27), also tried ealier builds (22 - 27), same result.
Also disabled all plugins to make sure it is not a plugin causing this error.

01:03:32 [INFORMATION] Using OpenSSL based native cipher.
01:03:32 [INFORMATION] Using native code compressor
01:03:32 [INFORMATION] Enabled Waterfall version git:Waterfall-Bootstrap:1.10-SNAPSHOT:4131999:unknown
01:03:32 [INFORMATION] Not on Windows, attempting to use enhanced EpollEventLoop
01:03:32 [INFORMATION] Epoll is working, utilising it!
01:03:32 [INFORMATION] Couldn't detect bungee version. Custom build?
01:03:32 [INFORMATION] Loaded plugin reconnect_yaml version git:reconnect_yaml:1.10-SNAPSHOT:1250088:1167 by SpigotMC
01:03:32 [SCHWERWIEGEND] Exception in thread "main"
01:03:32 [SCHWERWIEGEND] java.lang.NullPointerException
01:03:32 [SCHWERWIEGEND] at net.md_5.bungee.conf.Configuration.load(Configuration.java:66)
01:03:32 [SCHWERWIEGEND] at io.github.waterfallmc.waterfall.conf.WaterfallConfiguration.load(WaterfallConfiguration.java:42)
01:03:32 [SCHWERWIEGEND] at net.md_5.bungee.BungeeCord.start(BungeeCord.java:261)
01:03:32 [SCHWERWIEGEND] at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:61)
01:03:32 [SCHWERWIEGEND] at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15)

@fuzzybot keeps force pushing

Force pushing is bad and it messes other people up.

Example:

@fuzzybot merges his PR (without squashing)
about an hour later he force pushes over his old merge to try and squash it
@Zbob750 goes ._. to protest the force pushing
@fuzzybot merges another PR (without squashing)
@fuzzybot 8 minutes later he force pushes over his old merge
@jamierocks [complains about him abusing force push](Techcable: why give fuzzy write access if they're going to force push -_-)

Please don't force push unless absolutely needed! It makes every body mad and messes up workflows.
You should either merge PRs by hand or use github's squash and merge button.
Force pushing is bad and messes stuff up, please don't use it unless absolutely needed!

CI Servers are not consistent / not working

Appears that https://ci.aquifermc.org/job/Waterfall/ is the ci server we want to use, however the git config has an issue. Could I have access to fix this server?

Module downloads still reference "https://tc.demonwav.com/guestAuth/repository/download/Waterfall_Build/"

The readme still references https://ci.getwaterfall.xyz/project.html?projectId=Waterfall

The forums still reference https://ci.getwaterfall.xyz/viewLog.html?guest&buildTypeId=Waterfall_Build&buildId=lastSuccessful&buildBranch=master&tab=artifacts

Console spam with LVS

LVS will open a alive check connection every 6s, in BungeeCord It print one-line error msg, but spam full stack-trace in waterfall.

    at io.netty.channel.DefaultChannelPipeline.fireExceptionCaught(DefaultChannelPipeline.java:1066)
    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.handleReadException(AbstractEpollStreamChannel.java:675)
    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:898)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:359)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:275)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:742)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Cannot get ID for packet class net.md_5.bungee.protocol.packet.Kick
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122)
    at net.md_5.bungee.protocol.Protocol$DirectionData.getId(Protocol.java:346)
    at net.md_5.bungee.protocol.MinecraftEncoder.encode(MinecraftEncoder.java:23)
    at net.md_5.bungee.protocol.MinecraftEncoder.encode(MinecraftEncoder.java:9)
    at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107)
    ... 58 more

Please fix it :-)

IllegalStateException: Not expecting PING

WaterFall dev 11
https://ci.aquifermc.org/job/Waterfall/11/

15:43:46 [SEVERE] [/75.126.137.90:47045] <-> InitialHandler - encountered exception
java.lang.IllegalStateException: Not expecting PING
    at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
    at net.md_5.bungee.connection.InitialHandler.handle(InitialHandler.java:250)
    at net.md_5.bungee.protocol.packet.PingPacket.handle(PingPacket.java:35)
    at net.md_5.bungee.netty.HandlerBoss.channelRead(HandlerBoss.java:77)
    at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:83)
    at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRead(DefaultChannelHandlerInvoker.java:154)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:354)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:145)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
    at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:83)
    at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRead(DefaultChannelHandlerInvoker.java:154)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:354)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:145)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:277)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:264)
    at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:83)
    at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRead(DefaultChannelHandlerInvoker.java:154)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:354)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:145)
    at io.netty.handler.timeout.ReadTimeoutHandler.channelRead(ReadTimeoutHandler.java:152)
    at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:83)
    at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRead(DefaultChannelHandlerInvoker.java:154)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:354)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:145)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:1078)
    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:872)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:359)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:275)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:742)
    at java.lang.Thread.run(Thread.java:745)

sometime this error apear

i use waterfall build 217

15:40:24 [SEVERE] [/113.22.156.241:25577] <-> InitialHandler - encountered exception
io.netty.handler.codec.EncoderException: java.lang.IllegalArgumentException: Cannot get ID for packet class net.md_5.bungee.protocol.packet.Kick
at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:125)
at io.netty.channel.ChannelHandlerInvokerUtil.invokeWriteNow(ChannelHandlerInvokerUtil.java:157)
at io.netty.channel.DefaultChannelHandlerInvoker.invokeWrite(DefaultChannelHandlerInvoker.java:372)
at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:400)
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:266)
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:272)
at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1186)
at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:286)
at net.md_5.bungee.netty.ChannelWrapper.close(ChannelWrapper.java:72)
at net.md_5.bungee.connection.InitialHandler.disconnect(InitialHandler.java:591)
at net.md_5.bungee.connection.InitialHandler.disconnect(InitialHandler.java:575)
at net.md_5.bungee.connection.InitialHandler.exception(InitialHandler.java:139)
at net.md_5.bungee.netty.HandlerBoss.exceptionCaught(HandlerBoss.java:129)
at io.netty.channel.ChannelHandlerInvokerUtil.invokeExceptionCaughtNow(ChannelHandlerInvokerUtil.java:64)
at io.netty.channel.DefaultChannelHandlerInvoker.invokeExceptionCaught(DefaultChannelHandlerInvoker.java:111)
at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
at io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:131)
at io.netty.channel.ChannelHandlerAdapter.exceptionCaught(ChannelHandlerAdapter.java:78)
at io.netty.channel.ChannelHandlerInvokerUtil.invokeExceptionCaughtNow(ChannelHandlerInvokerUtil.java:64)
at io.netty.channel.DefaultChannelHandlerInvoker.invokeExceptionCaught(DefaultChannelHandlerInvoker.java:111)
at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
at io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:131)
at io.netty.channel.ChannelHandlerAdapter.exceptionCaught(ChannelHandlerAdapter.java:78)
at io.netty.channel.ChannelHandlerInvokerUtil.invokeExceptionCaughtNow(ChannelHandlerInvokerUtil.java:64)
at io.netty.channel.DefaultChannelHandlerInvoker.invokeExceptionCaught(DefaultChannelHandlerInvoker.java:111)
at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
at io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:131)
at io.netty.channel.ChannelHandlerAdapter.exceptionCaught(ChannelHandlerAdapter.java:78)
at io.netty.channel.ChannelHandlerInvokerUtil.invokeExceptionCaughtNow(ChannelHandlerInvokerUtil.java:64)
at io.netty.channel.DefaultChannelHandlerInvoker.invokeExceptionCaught(DefaultChannelHandlerInvoker.java:111)
at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
at io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:131)
at io.netty.channel.ChannelInboundHandlerAdapter.exceptionCaught(ChannelInboundHandlerAdapter.java:131)
at io.netty.channel.ChannelHandlerInvokerUtil.invokeExceptionCaughtNow(ChannelHandlerInvokerUtil.java:64)
at io.netty.channel.DefaultChannelHandlerInvoker.invokeExceptionCaught(DefaultChannelHandlerInvoker.java:111)
at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
at io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:131)
at io.netty.channel.ChannelInboundHandlerAdapter.exceptionCaught(ChannelInboundHandlerAdapter.java:131)
at io.netty.channel.ChannelHandlerInvokerUtil.invokeExceptionCaughtNow(ChannelHandlerInvokerUtil.java:64)
at io.netty.channel.DefaultChannelHandlerInvoker.invokeExceptionCaught(DefaultChannelHandlerInvoker.java:111)
at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
at io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:131)
at io.netty.channel.ChannelInboundHandlerAdapter.exceptionCaught(ChannelInboundHandlerAdapter.java:131)
at io.netty.channel.ChannelHandlerInvokerUtil.invokeExceptionCaughtNow(ChannelHandlerInvokerUtil.java:64)
at io.netty.channel.DefaultChannelHandlerInvoker.invokeExceptionCaught(DefaultChannelHandlerInvoker.java:111)
at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
at io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:131)
at io.netty.handler.timeout.ReadTimeoutHandler.readTimedOut(ReadTimeoutHandler.java:195)
at io.netty.handler.timeout.ReadTimeoutHandler$ReadTimeoutTask.run(ReadTimeoutHandler.java:224)
at io.netty.util.concurrent.PromiseTask$RunnableAdapter.call(PromiseTask.java:38)
at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:120)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:339)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:373)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:742)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Cannot get ID for packet class net.md_5.bungee.protocol.packet.Kick
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122)
at net.md_5.bungee.protocol.Protocol$DirectionData.getId(Protocol.java:341)
at net.md_5.bungee.protocol.MinecraftEncoder.encode(MinecraftEncoder.java:23)
at net.md_5.bungee.protocol.MinecraftEncoder.encode(MinecraftEncoder.java:9)
at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107)
... 54 more

when tabbing commands i get kicked and error in console

io.netty.handler.codec.DecoderException: java.lang.IndexOutOfBoundsException: readerIndex(0) + length(1) exceeds writerIndex(0): SlicedAbstractByteBuf(ridx: 0, widx: 0, cap: 0/0, unwrapped: PooledUnsafeDirectByteBuf(ridx: 2, widx: 2, cap: 128))
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:98)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)
    at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:266)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)
    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:961)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:386)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:302)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:877)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IndexOutOfBoundsException: readerIndex(0) + length(1) exceeds writerIndex(0): SlicedAbstractByteBuf(ridx: 0, widx: 0, cap: 0/0, unwrapped: PooledUnsafeDirectByteBuf(ridx: 2, widx: 2, cap: 128))
    at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1413)
    at io.netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:687)
    at net.md_5.bungee.protocol.DefinedPacket.readVarInt(DefinedPacket.java:100)
    at net.md_5.bungee.protocol.DefinedPacket.readVarInt(DefinedPacket.java:90)
    at net.md_5.bungee.protocol.MinecraftDecoder.decode(MinecraftDecoder.java:36)
    at net.md_5.bungee.protocol.MinecraftDecoder.decode(MinecraftDecoder.java:10)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)
    ... 25 more

How to build

Ello I can't seem to figure out how to build Waterfall. Since I am using centos in order utilize Openssl on Centos I have to build it on my centos system.

1.7.x

Where missing support this version?

Read timeout instead of disconnect if all servers in priority list are not reachable

Client logs,
[22:51:40] [Client thread/INFO]: Connecting to localhost, 25577
[22:51:44] [Client thread/INFO]: [CHAT] Could not connect to default or fallback server, please try again later: java.net.ConnectException

10-20 seconds later client disconnects with
Connection Lost
ReadTimeoutException : null

Server logs,
22:52:41 [INFO] [/127.0.0.1:62668] <-> InitialHandler has connected
22:53:14 [WARNING] [/127.0.0.1:62668|fuzzy_bot] -> UpstreamBridge - read timed out
22:53:14 [INFO] [fuzzy_bot] disconnected with: ReadTimeoutException : null
22:53:14 [INFO] [/127.0.0.1:62668|fuzzy_bot] -> UpstreamBridge has disconnected

Bungeecord upstream is correctly disconnecting the client instead. Tested this without the recent ServerKickEvent improvements patch and it is still happening.

Exception in thread "main": NullPointerException

WaterFall dev 22 keeps crashing when trying to start. No plugins.

20:11:54 [SEVERE] Exception in thread "main" 
20:11:54 [SEVERE] java.lang.NullPointerException
20:11:54 [SEVERE]   at net.md_5.bungee.conf.Configuration.load(Configuration.java:66)
20:11:54 [SEVERE]   at io.github.waterfallmc.waterfall.conf.WaterfallConfiguration.load(WaterfallConfiguration.java:42)
20:11:54 [SEVERE]   at net.md_5.bungee.BungeeCord.start(BungeeCord.java:261)
20:11:54 [SEVERE]   at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:61)
20:11:54 [SEVERE]   at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15)

Support for 1.7.10 dropped?

It seems Waterfall builds 10 and higher don't support 1.7.10 anymore.

Now before you tell me to move onto 1.10 instead of sticking to 1.7.10, I unfortunately don't have that leisure as Modded Minecraft hasn't completely moved onto MC 1.8+

Client cannot connect when using SpongeForge 1435+

Update: This was a SpongeForge issue and resolved as of spongeforge-1.9.4-5.0.0-BETA-1472. This issue can be closed.

Using Waterfall Build 13 and spongeforge-1.9.4-1954-5.0.0-BETA-1429 everything works normally. When using spongeforge-1.9.4-1954-5.0.0-BETA-1435 through spongeforge-1.9.4-1954-5.0.0-BETA-1444 (most current version) the client displays the "Logging in..." message but never leaves that screen. Forge version is 1.9.4-12.17.0.1954.

Waterfall and the Minecraft server both show in the logs all the normal connection entries as if everything is working normally. Deleting the world folder and reloading the Minecraft server still results in the same message.

Logging into the Minecraft server without using Waterfall (reverting the offline/ipforwarding/bungeecord settings to defaults) works normally. Once a user has done this putting the server back under Waterfall works normally until the client is restarted. A user that is stuck on the "Logging in..." message appears in the world and can even be moved around with the /tp command.

I can do more testing if you want. If this needs to be sent in as a Sponge bug any insight on what is happening would be appreciated for when I open the issue.

Here are the logs from Waterfall, the server, and the client logging in with SpongeForge versions 1444 (current version), 1435 (issue first appeared), and 1429 (last working version). At the end are logs of the workaround by logging in without going through Waterfall, leaving the client open while the server is restarted to go through Waterfall, and successfully logging in.

https://gist.github.com/klangg/5a5b893ccdcc7353bf4b5290b7e68714

Modules do not auto download

Bungeecord commands do not work. Displays a command not found.

My config:

ip_forward: true
network_compression_threshold: 200
stats: d******42-91a5-4d**-b387-2d*******d1e6
permissions:
  default:
  - bungee.helpop.default
  - skinsrestorer.playercmds
  - BungeeBan.Broadcast.Ban
  - BungeeBan.Broadcast.Mute
  - BungeeBan.Broadcast.Unban
  - BungeeBan.Broadcast.Unmute
  admin:
  - bungee.helpop.admin
  - skinsrestorer.cmds
  - skinsrestorer.playercmds
  - bungeecord.command.list
  - bungeecord.command.alert
  - bungeecord.command.ip
  - bungeecord.command.reload
  - serverlistplus.admin
  - bat.admin
  - bat.grantall.global
  helper:
  - bungee.helpop.admin
  - bungeecord.command.list
  - bat.admin
  - bat.grantall.global
groups:
  Polski*****:
  - admin
  K*****:
  - admin
  Xa****L:
  - helper
  bosco:
  - helper
servers:
  survival:
    address: localhost:255**
    restricted: false
    motd: '&1Just another BungeeCord - Forced Host'
  skywars:
    address: localhost:255**
    restricted: false
    motd: '&1Just another BungeeCord - Forced Host'
  lobby:
    address: localhost:255**
    restricted: false
    motd: '***'
  creative:
    address: localhost:255**
    restricted: false
    motd: '&1Just another BungeeCord - Forced Host'
  skyblock:
    address: localhost:255**
    restricted: false
    motd: '&1Just another BungeeCord - Forced Host'
timeout: 30000
listeners:
- query_port: ****
  motd: '*****'
  priorities:
  - lobby
  bind_local_address: true
  tab_list: GLOBAL_PING
  query_enabled: true
  host: 0.0.0.0:25565
  forced_hosts:
    pvp.md-5.net: pvp
  max_players: 100
  tab_size: 60
  ping_passthrough: false
  force_default_server: true
online_mode: false
player_limit: 100
custom_server_name: CUBECORD
log_commands: false
disabled_commands:
- disabledcommandhere
connection_throttle: 4000

Centos OpenSSL problem.

20:46:43 [INFO] Could not load native library: /tmp/bungeecord-native-cipher810503535089700859.so: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory 20:46:43 [INFO] Using standard Java JCE cipher. To enable the OpenSSL based native cipher, please make sure you are using 64 bit Ubuntu or Debian with libssl installed.

`[root@bungeeberry Bungee]# yum install openssl-devel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile

  • base: less.cogeco.net
  • extras: centos.mirror.rafal.ca
  • rpmforge: mirror.team-cymru.org
  • updates: less.cogeco.net
    Package 1:openssl-devel-1.0.1e-51.el7_2.5.x86_64 already installed and latest version
    Nothing to do`

DecoderException: java.lang.IndexOutOfBoundsException

Waterfall dev 41
Paper dev 819 (Spigot 1.10)

Only waterfall plugin used is ServerListPlus. Only modules used are cmd_list, cmd_send, and cmd_server.

01:31:17 [SEVERE] [/--redacted--:65228] <-> InitialHandler - encountered exception
io.netty.handler.codec.DecoderException: java.lang.IndexOutOfBoundsException: readerIndex(1) + length(1) exceeds writerIndex(1): SlicedAbstractByteBuf(ridx: 1, widx: 1, cap: 1/1, unwrapped: PooledUnsafeDirectByteBuf(ridx: 2, widx: 2, cap: 2))
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:98)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)
    at io.netty.handler.codec.ByteToMessageDecoder.handlerRemoved(ByteToMessageDecoder.java:219)
    at io.netty.channel.DefaultChannelPipeline.callHandlerRemoved0(DefaultChannelPipeline.java:631)
    at io.netty.channel.DefaultChannelPipeline.remove(DefaultChannelPipeline.java:468)
    at io.netty.channel.DefaultChannelPipeline.remove(DefaultChannelPipeline.java:428)
    at net.md_5.bungee.protocol.LegacyDecoder.decode(LegacyDecoder.java:37)
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)
    at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:266)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)
    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:961)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:386)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:302)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:877)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IndexOutOfBoundsException: readerIndex(1) + length(1) exceeds writerIndex(1): SlicedAbstractByteBuf(ridx: 1, widx: 1, cap: 1/1, unwrapped: PooledUnsafeDirectByteBuf(ridx: 2, widx: 2, cap: 2))
    at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1413)
    at io.netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:687)
    at net.md_5.bungee.protocol.DefinedPacket.readVarInt(DefinedPacket.java:100)
    at net.md_5.bungee.protocol.DefinedPacket.readVarInt(DefinedPacket.java:90)
    at net.md_5.bungee.protocol.packet.Handshake.read(Handshake.java:26)
    at net.md_5.bungee.protocol.DefinedPacket.read(DefinedPacket.java:185)
    at net.md_5.bungee.protocol.MinecraftDecoder.decode(MinecraftDecoder.java:41)
    at net.md_5.bungee.protocol.MinecraftDecoder.decode(MinecraftDecoder.java:10)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)
    ... 31 more
18:42:35 [SEVERE] [/--redacted--:46742] <-> InitialHandler - encountered exception
io.netty.handler.codec.DecoderException: java.lang.IndexOutOfBoundsException: readerIndex(2) + length(1) exceeds writerIndex(2): SlicedAbstractByteBuf(ridx: 2, widx: 2, cap: 2/2, unwrapped: PooledUnsafeDirectByteBuf(ridx: 3, widx: 12, cap: 64))
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:98)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:280)
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:396)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)
    at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:266)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)
    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:961)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:386)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:302)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:877)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IndexOutOfBoundsException: readerIndex(2) + length(1) exceeds writerIndex(2): SlicedAbstractByteBuf(ridx: 2, widx: 2, cap: 2/2, unwrapped: PooledUnsafeDirectByteBuf(ridx: 3, widx: 12, cap: 64))
    at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1413)
    at io.netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:687)
    at net.md_5.bungee.protocol.DefinedPacket.readVarInt(DefinedPacket.java:100)
    at net.md_5.bungee.protocol.DefinedPacket.readVarInt(DefinedPacket.java:90)
    at net.md_5.bungee.protocol.DefinedPacket.readString(DefinedPacket.java:29)
    at net.md_5.bungee.protocol.packet.Handshake.read(Handshake.java:27)
    at net.md_5.bungee.protocol.DefinedPacket.read(DefinedPacket.java:185)
    at net.md_5.bungee.protocol.MinecraftDecoder.decode(MinecraftDecoder.java:41)
    at net.md_5.bungee.protocol.MinecraftDecoder.decode(MinecraftDecoder.java:10)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)
    ... 23 more

EDIT (by @jamierocks) - Redacted ip adresses

Small periodical lags - like some sort of packet queue being released at once.

About 2 days ago ,I updated to the newest waterfall build on all of my proxy servers (Build #13 at the time.

Day 1: all players had some sort of small periodic / repeating lags. It felt like packets were queued somehow and released all at once. first thought of a networking issue, but there was none.

Day 2: After some testing I switched one of my proxy servers to newest bungeecord build. This time only users on waterfall proxies experienced lags, the ones on bungeecord did not. After restarting waterfall server and checking the config several times, issue still occured.

Today I switched from waterfall to bungeecord and the issue is gone. Tested with chat messages sent periodcally (every 5 ticks) to me. every now and the the messages were delayed and hit me all at once.

Unfortunately I am not able to give any sort of debug or error messages, since there are none.

No more 1.7?

Hello,

I can't join with 1.7 anymore, has this been removed?

Outdated delay when compiling native.

Only been an issue since the recent urge to use a patch based system.

When compiling native for Cent, delay remains regardless of "build version".
Any suggestions? (Not moving from Cent ๐ŸŽ‰ )

kick on connect problem

Version: build 35
when banned player join, it won't kick and appear "banned message", player wait for longtime and client show error instead of "banned message"
When i use build 15, everything work fine.

Build 229 can't "tab"?

in build 217, i can "tab" in command, but in build 229, i can't press tab to complete commands.

VLAN Issue

Hello,
I'm trying to configure bungee/waterfall to send players via a VLAN IP, and it works for a local IP.

However, it seems to not support a external VLAN IPs as it's not sending players to the specified backend. However, can ping the port just fine via telnet, and various other methods.

Is this a known issue or am I just missing something blatantly obvious.

"Main" error on latest waterfall builds

Hi, in the latest builds have bug with main. In older versions of the waterfall I did not have this error. This error occurs with or without plugins. I tried to delete the config but it did not help.

Console log: (startup)
09:09:51 [INFO] Using OpenSSL based native cipher.
09:09:51 [INFO] Using native code compressor
09:09:51 [INFO] Enabled Waterfall version git:Waterfall-Bootstrap:1.10-SNAPSHOT:4131999:unknown
09:09:51 [INFO] Not on Windows, attempting to use enhanced EpollEventLoop
09:09:51 [INFO] Epoll is working, utilising it!
09:09:51 [INFO] Couldn't detect bungee version. Custom build?
09:09:51 [SEVERE] Exception in thread "main"
09:09:51 [SEVERE] java.lang.NullPointerException
09:09:51 [SEVERE] at net.md_5.bungee.conf.Configuration.load(Configuration.java:66)
09:09:51 [SEVERE] at io.github.waterfallmc.waterfall.conf.WaterfallConfiguration.load(WaterfallConfiguration.java:42)
09:09:51 [SEVERE] at net.md_5.bungee.BungeeCord.start(BungeeCord.java:261)
09:09:51 [SEVERE] at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:61)
09:09:51 [SEVERE] at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15)

Waterfall version can't be detected / not checked against CI.

Using Waterfall dev 41 from here.
https://ci.aquifermc.org

Start-up outputs that it is a custom version, can't detect version number.

04:01:24 [INFO] Using OpenSSL based native cipher.
04:01:24 [INFO] Using native code compressor
04:01:24 [INFO] Enabled Waterfall version git:Waterfall-Bootstrap:1.10-SNAPSHOT:7231423:unknown
04:01:24 [INFO] Not on Windows, attempting to use enhanced EpollEventLoop
04:01:24 [INFO] Epoll is working, utilising it!
04:01:24 [INFO] Couldn't detect bungee version. Custom build?

Remove patch 10: Clean up and test the UUID code patch

Patch 10 contains a better replacement for replaceAll, but I think adding a method to the utility class and adding unit tests is a little much for removing the word All twice. There's no need to unit test a standard library method, that's Oracle's job. I think a patch to change replaceAll to replace is valid, but the rest is overkill.

Why?

why? just... why?

Crashing issues

Hey,

Currently attempting to use Waterfall. Once a 1.7 client gets around users (a decent amount of them 30+) it'll kick them.

I have my config waterfall.yml to simply allow 1.7, 1.8 & 1.9.

No plugins are causing this as once I put the good ol' Bungee, it doesn't kick it. Once I switch WF on, it kicks me.

Thanks :)

Add a little 'how to contribute'

Well, to ease things up for contributors, it might be an idea of adding a little help.

This makes discussions like in #7 another little easier to win ๐Ÿ˜„

rebuildPatches churning on git version

-2.8.3
+2.7.4 (Apple Git-66)

This is causing unneeded patch script churn in pull requests, wonder if there is a way we can mask the git client version in the rebuild patches script output.

Issues applying patches

camdenorrb$ ./applyPatches.sh
Rebuilding Forked projects....
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
fatal: repository 'BungeeCord' does not exist
./applyPatches.sh: line 31: cd: /Users/camdenorrb/Downloads/Waterfall-master/Waterfall-Proxy: No such file or directory
Resetting Waterfall-Proxy to BungeeCord...
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
Applying patches to Waterfall-Proxy...
fatal: Not a git repository (or any of the parent directories): .git
Something did not apply cleanly to Waterfall-Proxy.
Please review above details and finish the apply then
save the changes with rebuildPatches.sh

Exception on Login

Nothing too serious, but using the latest build on login, Waterfall throws this exception. Nothing negative seems to happen, but I just thought I'd report it anyway.

11:54:17 [SEVERE] java.lang.Throwable: Using a io.netty.buffer.PooledUnsafeHeapByteBuf, not a direct byte buf!
11:54:17 [SEVERE]   at net.md_5.bungee.protocol.Varint21FrameDecoder.decode(Varint21FrameDecoder.java:70)
11:54:17 [SEVERE]   at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:387)
11:54:17 [SEVERE]   at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:245)
11:54:17 [SEVERE]   at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:83)
11:54:17 [SEVERE]   at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRead(DefaultChannelHandlerInvoker.java:154)
11:54:17 [SEVERE]   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:354)
11:54:17 [SEVERE]   at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:145)
11:54:17 [SEVERE]   at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
11:54:17 [SEVERE]   at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:83)
11:54:17 [SEVERE]   at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRead(DefaultChannelHandlerInvoker.java:154)
11:54:17 [SEVERE]   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:354)
11:54:17 [SEVERE]   at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:145)
11:54:17 [SEVERE]   at io.netty.handler.timeout.ReadTimeoutHandler.channelRead(ReadTimeoutHandler.java:152)
11:54:17 [SEVERE]   at io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:83)
11:54:17 [SEVERE]   at io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRead(DefaultChannelHandlerInvoker.java:154)
11:54:17 [SEVERE]   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:354)
11:54:17 [SEVERE]   at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:145)
11:54:17 [SEVERE]   at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:1078)
11:54:17 [SEVERE]   at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:117)
11:54:17 [SEVERE]   at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:527)
11:54:17 [SEVERE]   at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:484)
11:54:17 [SEVERE]   at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:398)
11:54:17 [SEVERE]   at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:370)
11:54:17 [SEVERE]   at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:742)
11:54:17 [SEVERE]   at java.lang.Thread.run(Thread.java:745)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.