Paper/patches/server/0844-Log-exceptions-thrown-during-chat-processing.patch

31 lines
1.8 KiB
Diff
Raw Normal View History

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Bjarne Koll <lynxplay101@gmail.com>
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 5c92aa1cc1a7e7fd0b7a06ae9b21e734fab71c74..3825aa2c381a3ee77e05bea520ff5fb828733857 100644
--- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
+++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
@@ -45,7 +45,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