mirror of
https://github.com/PaperMC/Waterfall.git
synced 2024-11-06 10:45:37 +01:00
88 lines
4.4 KiB
Diff
88 lines
4.4 KiB
Diff
From 646fe1ca409a835cd6880bfe4909c49c7a5a0036 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 eb369ebb..d8ea68ea 100644
|
|
--- a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java
|
|
+++ b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java
|
|
@@ -116,7 +116,7 @@ public class BungeeCord extends ProxyServer
|
|
*/
|
|
private ResourceBundle baseBundle;
|
|
private ResourceBundle customBundle;
|
|
- public EventLoopGroup eventLoops;
|
|
+ public EventLoopGroup bossEventLoopGroup, workerEventLoopGroup;
|
|
/**
|
|
* locations.yml save thread.
|
|
*/
|
|
@@ -253,7 +253,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 );
|
|
@@ -327,7 +328,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.getHost() )
|
|
.bind().addListener( listener );
|
|
|
|
@@ -348,7 +349,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 );
|
|
}
|
|
}
|
|
}
|
|
@@ -443,12 +444,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 f4c17cf4..4c0637b9 100644
|
|
--- a/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java
|
|
+++ b/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java
|
|
@@ -151,7 +151,7 @@ public class BungeeServerInfo implements ServerInfo
|
|
};
|
|
new Bootstrap()
|
|
.channel( PipelineUtils.getChannel() )
|
|
- .group( BungeeCord.getInstance().eventLoops )
|
|
+ .group( BungeeCord.getInstance().workerEventLoopGroup )
|
|
.handler( PipelineUtils.BASE )
|
|
.option( ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000 ) // TODO: Configurable
|
|
.remoteAddress( getAddress() )
|
|
--
|
|
2.20.1
|
|
|