mirror of
https://github.com/Dreeam-qwq/Gale.git
synced 2025-12-23 16:59:23 +00:00
108 lines
5.2 KiB
Diff
108 lines
5.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Martijn Muijsers <martijnmuijsers@live.nl>
|
|
Date: Sun, 29 Jan 2023 23:25:41 +0100
|
|
Subject: [PATCH] Run cleaner tasks on base thread pool
|
|
|
|
License: AGPL-3.0 (https://www.gnu.org/licenses/agpl-3.0.html)
|
|
Gale - https://galemc.org
|
|
|
|
diff --git a/src/main/java/io/papermc/paper/util/MCUtil.java b/src/main/java/io/papermc/paper/util/MCUtil.java
|
|
index 80f9e70d5c4330e079feccc9a4b1b5957c79ef45..e4955e8d04735b74007aae0bf323028137e34466 100644
|
|
--- a/src/main/java/io/papermc/paper/util/MCUtil.java
|
|
+++ b/src/main/java/io/papermc/paper/util/MCUtil.java
|
|
@@ -2,12 +2,10 @@ package io.papermc.paper.util;
|
|
|
|
import com.destroystokyo.paper.profile.CraftPlayerProfile;
|
|
import com.destroystokyo.paper.profile.PlayerProfile;
|
|
-import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
|
import com.google.gson.JsonArray;
|
|
import com.google.gson.JsonObject;
|
|
import com.google.gson.internal.Streams;
|
|
import com.google.gson.stream.JsonWriter;
|
|
-import com.mojang.datafixers.util.Either;
|
|
import it.unimi.dsi.fastutil.objects.ObjectRBTreeSet;
|
|
import java.lang.ref.Cleaner;
|
|
import it.unimi.dsi.fastutil.objects.ReferenceArrayList;
|
|
@@ -17,16 +15,11 @@ import net.minecraft.server.MinecraftServer;
|
|
import net.minecraft.nbt.CompoundTag;
|
|
import net.minecraft.network.chat.Component;
|
|
import net.minecraft.server.level.ChunkHolder;
|
|
-import net.minecraft.server.level.ChunkMap;
|
|
-import net.minecraft.server.level.DistanceManager;
|
|
import net.minecraft.server.level.ServerLevel;
|
|
import net.minecraft.server.level.ServerPlayer;
|
|
-import net.minecraft.server.level.Ticket;
|
|
import net.minecraft.world.entity.Entity;
|
|
import net.minecraft.world.level.ChunkPos;
|
|
-import net.minecraft.world.level.ClipContext;
|
|
import net.minecraft.world.level.Level;
|
|
-import net.minecraft.world.level.chunk.ChunkAccess;
|
|
import net.minecraft.world.level.chunk.ChunkStatus;
|
|
import org.apache.commons.lang.exception.ExceptionUtils;
|
|
import com.mojang.authlib.GameProfile;
|
|
@@ -34,7 +27,6 @@ import org.bukkit.Location;
|
|
import org.bukkit.block.BlockFace;
|
|
import org.bukkit.craftbukkit.CraftWorld;
|
|
import org.bukkit.craftbukkit.util.Waitable;
|
|
-import org.spigotmc.AsyncCatcher;
|
|
import org.galemc.gale.executor.queue.BaseTaskQueues;
|
|
|
|
import javax.annotation.Nonnull;
|
|
@@ -43,11 +35,8 @@ import java.io.*;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.util.List;
|
|
import java.util.Queue;
|
|
-import java.util.Set;
|
|
import java.util.concurrent.CompletableFuture;
|
|
import java.util.concurrent.ExecutionException;
|
|
-import java.util.concurrent.LinkedBlockingQueue;
|
|
-import java.util.concurrent.ThreadPoolExecutor;
|
|
import java.util.concurrent.Executor;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeoutException;
|
|
@@ -58,14 +47,7 @@ import java.util.function.Supplier;
|
|
|
|
public final class MCUtil {
|
|
public static final Executor asyncExecutor = BaseTaskQueues.scheduledAsync.yieldingExecutor; // Gale - base thread pool - remove Paper async executor
|
|
- public static final ThreadPoolExecutor cleanerExecutor = new ThreadPoolExecutor(
|
|
- 1, 1, 0L, TimeUnit.SECONDS,
|
|
- new LinkedBlockingQueue<>(),
|
|
- new ThreadFactoryBuilder()
|
|
- .setNameFormat("Paper Object Cleaner")
|
|
- .setUncaughtExceptionHandler(new net.minecraft.DefaultUncaughtExceptionHandlerWithName(MinecraftServer.LOGGER))
|
|
- .build()
|
|
- );
|
|
+ public static final Executor cleanerExecutor = BaseTaskQueues.cleaner.executor; // Gale - base thread pool - remove Paper cleaner executor
|
|
|
|
public static final long INVALID_CHUNK_KEY = getCoordinateKey(Integer.MAX_VALUE, Integer.MAX_VALUE);
|
|
|
|
diff --git a/src/main/java/org/galemc/gale/executor/queue/BaseTaskQueueTier.java b/src/main/java/org/galemc/gale/executor/queue/BaseTaskQueueTier.java
|
|
index fb185e7f6344f21ed861e56c137ce470e891e766..f4adcdcad96b2748c60aecb8f5c25370ee6e8f5b 100644
|
|
--- a/src/main/java/org/galemc/gale/executor/queue/BaseTaskQueueTier.java
|
|
+++ b/src/main/java/org/galemc/gale/executor/queue/BaseTaskQueueTier.java
|
|
@@ -76,6 +76,8 @@ public enum BaseTaskQueueTier {
|
|
* Execution of
|
|
*/
|
|
ASYNC(new AbstractTaskQueue[]{
|
|
+ // The cleaner queue has high priority because it releases resources back to a pool, thereby saving memory
|
|
+ BaseTaskQueues.cleaner,
|
|
BaseTaskQueues.scheduledAsync
|
|
}, Integer.getInteger("gale.thread.priority.async", 6)),
|
|
/**
|
|
diff --git a/src/main/java/org/galemc/gale/executor/queue/BaseTaskQueues.java b/src/main/java/org/galemc/gale/executor/queue/BaseTaskQueues.java
|
|
index 2295ead9ddcb57be81f8b8bd0731f56c9f7f60b9..92721a51268becb05d708db04e9d6daaa66fb8b2 100644
|
|
--- a/src/main/java/org/galemc/gale/executor/queue/BaseTaskQueues.java
|
|
+++ b/src/main/java/org/galemc/gale/executor/queue/BaseTaskQueues.java
|
|
@@ -90,6 +90,11 @@ public final class BaseTaskQueues {
|
|
*/
|
|
public static final SimpleTaskQueue tickAssist = SimpleTaskQueue.allSpans("TickAssist");
|
|
|
|
+ /**
|
|
+ * This queue stores the tasks posted to {@link MCUtil#cleanerExecutor}.
|
|
+ */
|
|
+ public static final SingleSpanSimpleTaskQueue cleaner = SimpleTaskQueue.singleSpan("Cleaner", TaskSpan.TINY);
|
|
+
|
|
/**
|
|
* This queue stores the tasks scheduled to be executed on any thread, which would usually be stored in various
|
|
* executors with a specific purpose.
|