mirror of
https://github.com/PaperMC/Waterfall.git
synced 2024-11-24 19:25:16 +01:00
6f3e7d0d4d
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: 697f0875 #2770: Handle posix signals SIGTERM, SIGINT, SIGHUP gracefully
88 lines
4.4 KiB
Diff
88 lines
4.4 KiB
Diff
From 0e6e9228bb854c97cd5b7c628d6e3c510654654d 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 38b96d73..c2c4c6b6 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.
|
|
*/
|
|
@@ -259,7 +259,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 );
|
|
@@ -348,7 +349,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 );
|
|
|
|
@@ -371,7 +372,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 );
|
|
}
|
|
}
|
|
}
|
|
@@ -480,12 +481,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.25.0
|
|
|