mirror of
https://github.com/layue13/MoonBridge.git
synced 2026-10-25 18:46:18 +00:00
Merge pull request #18 from layue13/fix/listener-close-quiet-period
fix: 关闭监听器时同时关闭 boss 与 worker 事件循环
This commit is contained in:
1 file changed
+5
-1
@@ -34,6 +34,7 @@ import io.netty.channel.socket.SocketChannel;
|
|||||||
import io.netty.resolver.AddressResolverGroup;
|
import io.netty.resolver.AddressResolverGroup;
|
||||||
import io.netty.resolver.dns.DnsAddressResolverGroup;
|
import io.netty.resolver.dns.DnsAddressResolverGroup;
|
||||||
import io.netty.resolver.dns.DnsNameResolverBuilder;
|
import io.netty.resolver.dns.DnsNameResolverBuilder;
|
||||||
|
import io.netty.util.concurrent.Future;
|
||||||
|
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.net.SocketAddress;
|
import java.net.SocketAddress;
|
||||||
@@ -512,7 +513,10 @@ public final class ProxySessionListener implements Players {
|
|||||||
allSessions.forEach(session -> session.closeBecause("proxy shutting down"));
|
allSessions.forEach(session -> session.closeBecause("proxy shutting down"));
|
||||||
backendResolver.close();
|
backendResolver.close();
|
||||||
shutdown = new CompletableFuture<>();
|
shutdown = new CompletableFuture<>();
|
||||||
boss.shutdownGracefully().addListener(first -> workers.shutdownGracefully().addListener(second -> {
|
// Start both at once: each group waits out its own quiet period, so draining them in turn doubled the close time.
|
||||||
|
Future<?> bossStopped = boss.shutdownGracefully();
|
||||||
|
Future<?> workersStopped = workers.shutdownGracefully();
|
||||||
|
bossStopped.addListener(first -> workersStopped.addListener(second -> {
|
||||||
if (first.isSuccess() && second.isSuccess()) shutdown.complete(null);
|
if (first.isSuccess() && second.isSuccess()) shutdown.complete(null);
|
||||||
else shutdown.completeExceptionally(first.isSuccess() ? second.cause() : first.cause());
|
else shutdown.completeExceptionally(first.isSuccess() ? second.cause() : first.cause());
|
||||||
}));
|
}));
|
||||||
|
|||||||
Reference in new issue
Block a user