b62dfa0bf9
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: 39ce5d3a SPIGOT-4399: ItemMeta.equals broken with AttributeModifiers CraftBukkit Changes: 1cf8b5dc SPIGOT-4400: Populators running on existing chunks 116cb9a1 SPIGOT-4399: Add attribute modifier equality test 5ee1c18a SPIGOT-4398: Set ASM7_EXPERIMENTAL flag
58 lines
2.7 KiB
Diff
58 lines
2.7 KiB
Diff
From 1558a2bb058ae4bc2efcdcbae2d89a789c093c7d 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 0d456bcbac..40746c13ef 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -327,6 +327,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 69219b13a6..5197062293 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
|
@@ -234,6 +234,13 @@ public class ChunkProviderServer implements IChunkProvider {
|
|
synchronized (this.chunkLoader) {
|
|
ObjectIterator objectiterator = this.chunks.values().iterator();
|
|
|
|
+ // Paper start
|
|
+ final ChunkRegionLoader chunkLoader = (ChunkRegionLoader) world.getChunkProviderServer().chunkLoader;
|
|
+ final int queueSize = chunkLoader.getQueueSize();
|
|
+ if (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 695044b1b1..e86d47a05e 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
@@ -152,6 +152,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.19.0
|
|
|