mirror of
https://github.com/PaperMC/Waterfall.git
synced 2024-11-03 00:59:39 +01:00
fea7ec356d
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing BungeeCord Changes: f0908b66 Add optional 1.17 (21w19a) snapshot protocol support 5fa596fe #3084: (Regrettably) add a full SLF4J wrapper
88 lines
4.4 KiB
Diff
88 lines
4.4 KiB
Diff
From a4f2f8f88907fb0652ef6f9585fa221f45d04e25 Mon Sep 17 00:00:00 2001
|
|
From: kamcio96 <k.nadworski@icloud.com>
|
|
Date: Mon, 14 Mar 2016 16:07:20 -0700
|
|
Subject: [PATCH] Use a worker and a boss event loop group.
|
|
|
|
Merges the rest of https://github.com/SpigotMC/BungeeCord/pull/1706 by @kamcio96 along with b8845c4edbae46bb66f6adda338330a1d4032057
|
|
|
|
This is proper practice for netty.
|
|
|
|
diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java
|
|
index a1752045..7c19832f 100644
|
|
--- a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java
|
|
+++ b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java
|
|
@@ -118,7 +118,7 @@ public class BungeeCord extends ProxyServer
|
|
*/
|
|
private ResourceBundle baseBundle;
|
|
private ResourceBundle customBundle;
|
|
- public EventLoopGroup eventLoops;
|
|
+ public EventLoopGroup bossEventLoopGroup, workerEventLoopGroup;
|
|
/**
|
|
* locations.yml save thread.
|
|
*/
|
|
@@ -260,7 +260,8 @@ public class BungeeCord extends ProxyServer
|
|
ResourceLeakDetector.setLevel( ResourceLeakDetector.Level.DISABLED ); // Eats performance
|
|
}
|
|
|
|
- eventLoops = PipelineUtils.newEventLoopGroup( 0, new ThreadFactoryBuilder().setNameFormat( "Netty IO Thread #%1$d" ).build() );
|
|
+ bossEventLoopGroup = PipelineUtils.newEventLoopGroup( 0, new ThreadFactoryBuilder().setNameFormat( "Netty Boss IO Thread #%1$d" ).build() );
|
|
+ workerEventLoopGroup = PipelineUtils.newEventLoopGroup( 0, new ThreadFactoryBuilder().setNameFormat( "Netty Worker IO Thread #%1$d" ).build() );
|
|
|
|
File moduleDirectory = new File( "modules" );
|
|
moduleManager.load( this, moduleDirectory );
|
|
@@ -349,7 +350,7 @@ public class BungeeCord extends ProxyServer
|
|
.option( ChannelOption.SO_REUSEADDR, true ) // TODO: Move this elsewhere!
|
|
.childAttr( PipelineUtils.LISTENER, info )
|
|
.childHandler( PipelineUtils.SERVER_CHILD )
|
|
- .group( eventLoops )
|
|
+ .group( bossEventLoopGroup, workerEventLoopGroup )
|
|
.localAddress( info.getSocketAddress() )
|
|
.bind().addListener( listener );
|
|
|
|
@@ -372,7 +373,7 @@ public class BungeeCord extends ProxyServer
|
|
}
|
|
}
|
|
};
|
|
- new RemoteQuery( this, info ).start( PipelineUtils.getDatagramChannel(), new InetSocketAddress( info.getHost().getAddress(), info.getQueryPort() ), eventLoops, bindListener );
|
|
+ new RemoteQuery( this, info ).start( PipelineUtils.getDatagramChannel(), new InetSocketAddress( info.getHost().getAddress(), info.getQueryPort() ), workerEventLoopGroup, bindListener );
|
|
}
|
|
}
|
|
}
|
|
@@ -481,12 +482,14 @@ public class BungeeCord extends ProxyServer
|
|
}
|
|
|
|
getLogger().info( "Closing IO threads" );
|
|
- eventLoops.shutdownGracefully();
|
|
- try
|
|
- {
|
|
- eventLoops.awaitTermination( Long.MAX_VALUE, TimeUnit.NANOSECONDS );
|
|
- } catch ( InterruptedException ex )
|
|
- {
|
|
+ bossEventLoopGroup.shutdownGracefully();
|
|
+ workerEventLoopGroup.shutdownGracefully();
|
|
+ while (true) {
|
|
+ try {
|
|
+ bossEventLoopGroup.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
|
|
+ workerEventLoopGroup.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
|
|
+ break;
|
|
+ } catch (InterruptedException ignored) {}
|
|
}
|
|
|
|
getLogger().info( "Thank you and goodbye" );
|
|
diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java b/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java
|
|
index 9d581d9a..7b002089 100644
|
|
--- a/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java
|
|
+++ b/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java
|
|
@@ -184,7 +184,7 @@ public class BungeeServerInfo implements ServerInfo
|
|
};
|
|
new Bootstrap()
|
|
.channel( PipelineUtils.getChannel( socketAddress ) )
|
|
- .group( BungeeCord.getInstance().eventLoops )
|
|
+ .group( BungeeCord.getInstance().workerEventLoopGroup )
|
|
.handler( PipelineUtils.BASE )
|
|
.option( ChannelOption.CONNECT_TIMEOUT_MILLIS, BungeeCord.getInstance().getConfig().getRemotePingTimeout() )
|
|
.remoteAddress( socketAddress )
|
|
--
|
|
2.31.1
|
|
|