aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0860-Log-exceptions-thrown-during-chat-processing.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0860-Log-exceptions-thrown-during-chat-processing.patch')
-rw-r--r--patches/server/0860-Log-exceptions-thrown-during-chat-processing.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/patches/server/0860-Log-exceptions-thrown-during-chat-processing.patch b/patches/server/0860-Log-exceptions-thrown-during-chat-processing.patch
new file mode 100644
index 0000000000..76bdbcdd9c
--- /dev/null
+++ b/patches/server/0860-Log-exceptions-thrown-during-chat-processing.patch
@@ -0,0 +1,30 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Bjarne Koll <[email protected]>
+Date: Sat, 12 Feb 2022 03:20:36 +0100
+Subject: [PATCH] Log exceptions thrown during chat processing
+
+Previously the async chat executor service would take chat handling
+using the #submit method, which wraps the logic in a future task.
+The future takes full ownership of the task, including any potential
+exception, meaning that the uncaught exception handler never gets
+notified about potential exceptions thrown during async chat logic.
+
+As the chat task does neither need to be cancelled nor returns something
+required later on, this commit moves from #submit to #execute, skipping
+any future task creation. This properly propagates any exception upwards
+to the worker thread in the executor service, allowing the server to
+catch and properly log the exception to the console.
+
+diff --git a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
+index 8a0ced3f9b9099913ade4b71181aff6cafbc4ee6..21588ce5a408fed3454c317b56c05439ad3af27d 100644
+--- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
++++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
+@@ -31,7 +31,7 @@ public class ServerboundChatPacket implements Packet<ServerGamePacketListener> {
+ public void handle(final ServerGamePacketListener listener) {
+ if ( !this.message.startsWith("/") )
+ {
+- ServerboundChatPacket.executors.submit( new Runnable()
++ ServerboundChatPacket.executors.execute( new Runnable() // Paper - Use #execute to propagate exceptions up instead of swallowing them
+ {
+
+ @Override