4af62f6d1d
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 2d009e64 Update SnakeYAML javadoc link b4fd213c Switch Player#updateInventory deprecation for internal API annotation CraftBukkit Changes: f3b2b2210 SPIGOT-7376: Exception with getBlockData when hasBlockData is false 725545630 SPIGOT-7375: Fix crash breeding certain entities b9873b0d4 Update Brigadier version with fix 68b320562 SPIGOT-7266: Found typo in CraftBukkit package 98b4d2ff8 SPIGOT-7372, SPIGOT-7373: Signs can't be edited, issues with SignChangeEvent 5f7bd4d78 SPIGOT-7371: Sign does not open edit text on placement b4cf99d24 SPIGOT-7371: Fix editing signs with API a2b6c2744 PR-1200: Implement open sign by side a345bb940 SPIGOT-7368: Downgrade SpecialSource version Spigot Changes: 723951c3 Rebuild patches b655c57d Drop old collision API deprecated since 1.9.4 55b0fed4 Rebuild patches
56 Zeilen
3.2 KiB
Diff
56 Zeilen
3.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Shane Freeder <theboyetronic@gmail.com>
|
|
Date: Sun, 18 Sep 2022 06:33:17 +0100
|
|
Subject: [PATCH] Configurable chat thread limit
|
|
|
|
By default, spigot shifts chat over to an unbounded thread pool,
|
|
on a normal server, this really offers no gains, the creation of a thread
|
|
on submitting to the pool on these servers eats more time vs just running it in
|
|
the netty pipeline, however, on servers using plugins which do work in here, there
|
|
could be some overall benefits to moving this stuff outside of the pipeline.
|
|
|
|
In general, this patch does two things:
|
|
1) Exposes the core size for the pool, this allows for ensuring that a number of threads
|
|
sit around in the pool, mitigating the need for creating new threads; This IS however
|
|
caveated, the ThreadPoolExecutor will ONLY create core threads as they're needed, it
|
|
just won't allow for us to dip back under the # of core threads, this can potentially
|
|
be mitigated by calling prestartCoreThread, however, I'm not sure if there is much justification
|
|
for this
|
|
2) Exposes a max size for the pool, as stated, by default this is unbounded, for most
|
|
servers limiting the size of the pool is going to have 0 effects given how fast chat
|
|
is actually processed, this is honestly really just exposed for the misnomers or people
|
|
who just wanna ensure that this won't grow over a specific size if chat gets stupidly active
|
|
|
|
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
|
index 09234062090c210227350cafeed141f8cb73108a..9f5f0d8ddc8f480b48079c70e38c9c08eff403f6 100644
|
|
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
|
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
|
@@ -254,13 +254,26 @@ public class GlobalConfiguration extends ConfigurationPart {
|
|
public Misc misc;
|
|
|
|
public class Misc extends ConfigurationPart {
|
|
+
|
|
+ public ChatThreads chatThreads;
|
|
public class ChatThreads extends ConfigurationPart.Post {
|
|
private int chatExecutorCoreSize = -1;
|
|
private int chatExecutorMaxSize = -1;
|
|
|
|
@Override
|
|
public void postProcess() {
|
|
- // TODO: FILL
|
|
+ //noinspection ConstantConditions
|
|
+ if (net.minecraft.server.MinecraftServer.getServer() == null) return; // In testing env, this will be null here
|
|
+ int _chatExecutorMaxSize = (chatExecutorMaxSize <= 0) ? Integer.MAX_VALUE : chatExecutorMaxSize; // This is somewhat dumb, but, this is the default, do we cap this?;
|
|
+ int _chatExecutorCoreSize = Math.max(chatExecutorCoreSize, 0);
|
|
+
|
|
+ if (_chatExecutorMaxSize < _chatExecutorCoreSize) {
|
|
+ _chatExecutorMaxSize = _chatExecutorCoreSize;
|
|
+ }
|
|
+
|
|
+ java.util.concurrent.ThreadPoolExecutor executor = (java.util.concurrent.ThreadPoolExecutor) net.minecraft.server.MinecraftServer.getServer().chatExecutor;
|
|
+ executor.setCorePoolSize(_chatExecutorCoreSize);
|
|
+ executor.setMaximumPoolSize(_chatExecutorMaxSize);
|
|
}
|
|
}
|
|
public int maxJoinsPerTick = 5;
|