From ce0ad2eedfc9fd5f4cd72ebe72496be4ea7ff1e3 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Wed, 26 Jan 2022 00:26:02 +0100 Subject: [PATCH] handle packets on network thread when thread pool busy --- .../network/network/client/pipeline/ClientPacketHandler.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/pipeline/ClientPacketHandler.kt b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/pipeline/ClientPacketHandler.kt index c4e4229a0..87d57c8ea 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/pipeline/ClientPacketHandler.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/pipeline/ClientPacketHandler.kt @@ -17,6 +17,7 @@ import de.bixilon.kutil.cast.CastUtil.nullCast import de.bixilon.kutil.collections.CollectionUtil.synchronizedSetOf import de.bixilon.kutil.collections.CollectionUtil.toSynchronizedList import de.bixilon.kutil.concurrent.pool.DefaultThreadPool +import de.bixilon.kutil.concurrent.pool.ThreadPool import de.bixilon.kutil.concurrent.pool.ThreadPoolRunnable import de.bixilon.kutil.watcher.DataWatcher.Companion.observe import de.bixilon.minosoft.config.profile.profiles.other.OtherProfileManager @@ -52,8 +53,8 @@ class ClientPacketHandler( } override fun channelRead0(context: ChannelHandlerContext, queued: QueuedS2CP<*>) { - if (queued.type.threadSafe) { - val runnable = ThreadPoolRunnable() + if (queued.type.threadSafe && DefaultThreadPool.queueSize <= DefaultThreadPool.threadCount) { // only handle async when thread pool not busy + val runnable = ThreadPoolRunnable(priority = ThreadPool.Priorities.HIGH) runnable.runnable = Runnable { tryHandle(context, queued.type, queued.packet);handlers -= runnable } handlers += runnable DefaultThreadPool += runnable