mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-15 07:01:36 +08:00
b9badbf2bc
Upstream has released updates that appears 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: 79f6ba25 Skip tests on default builds b85cc32f Further discourage World.regenerateChunk CraftBukkit Changes:7560d3b5
Skip tests on default buildsd0a9130d
SPIGOT-4563: Fix regenerating chunks saved to disk already Spigot Changes: 8173d06f Remove need for redundant second clone of repositories 8ede0393 Rebuild patches
59 lines
2.7 KiB
Diff
59 lines
2.7 KiB
Diff
From 0bf2e8f130c7966e8d6ebf91cebee3a747aed8cd Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Thu, 3 Nov 2016 21:52:22 -0400
|
|
Subject: [PATCH] Prevent Auto Save if Save Queue is full
|
|
|
|
If the save queue already has 50 (configurable) of chunks pending,
|
|
then avoid processing auto save (which would add more)
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
index e8417cb2e..de59f4ce0 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -332,6 +332,11 @@ public class PaperWorldConfig {
|
|
maxAutoSaveChunksPerTick = getInt("max-auto-save-chunks-per-tick", 24);
|
|
}
|
|
|
|
+ public int queueSizeAutoSaveThreshold = 50;
|
|
+ private void queueSizeAutoSaveThreshold() {
|
|
+ queueSizeAutoSaveThreshold = getInt("save-queue-limit-for-auto-save", 50);
|
|
+ }
|
|
+
|
|
public boolean removeCorruptTEs = false;
|
|
private void removeCorruptTEs() {
|
|
removeCorruptTEs = getBoolean("remove-corrupt-tile-entities", false);
|
|
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
|
index fbc69b5ba..9b5908a5b 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
|
@@ -236,6 +236,13 @@ public class ChunkProviderServer implements IChunkProvider {
|
|
synchronized (this.chunkLoader) {
|
|
ObjectIterator objectiterator = this.chunks.values().iterator();
|
|
|
|
+ // Paper start
|
|
+ final ChunkRegionLoader chunkLoader = (ChunkRegionLoader) world.getChunkProvider().chunkLoader;
|
|
+ final int queueSize = chunkLoader.getQueueSize();
|
|
+ if (!flag && queueSize > world.paperConfig.queueSizeAutoSaveThreshold){
|
|
+ return false;
|
|
+ }
|
|
+ // Paper end
|
|
while (objectiterator.hasNext()) {
|
|
Chunk chunk = (Chunk) objectiterator.next();
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
index a144118f6..adfb5d056 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
@@ -156,6 +156,8 @@ public class ChunkRegionLoader implements IChunkLoader, IAsyncChunkSaver {
|
|
|
|
}
|
|
|
|
+ public int getQueueSize() { return queue.size(); } // Paper
|
|
+
|
|
// CraftBukkit start - Add async variant, provide compatibility
|
|
@Nullable
|
|
public Chunk a(GeneratorAccess generatoraccess, int i, int j, Consumer<Chunk> consumer) throws IOException {
|
|
--
|
|
2.20.1
|
|
|