diff --git a/Spigot-Server-Patches/Auto-Save-Cap.patch b/Spigot-Server-Patches/Prevent-Auto-Save-if-Save-Queue-is-full.patch similarity index 65% rename from Spigot-Server-Patches/Auto-Save-Cap.patch rename to Spigot-Server-Patches/Prevent-Auto-Save-if-Save-Queue-is-full.patch index 49dbac7fad..8b42380e5e 100644 --- a/Spigot-Server-Patches/Auto-Save-Cap.patch +++ b/Spigot-Server-Patches/Prevent-Auto-Save-if-Save-Queue-is-full.patch @@ -1,9 +1,27 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 3 Nov 2016 21:52:22 -0400 -Subject: [PATCH] Auto Save Cap +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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java ++++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -14,10 +32,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // CraftBukkit start + // Paper start + final ChunkRegionLoader chunkLoader = (ChunkRegionLoader) world.getChunkProviderServer().chunkLoader; -+ final int autoSaveLimit = world.paperConfig.maxAutoSaveChunksPerTick - chunkLoader.getQueueSize(); -+ if (autoSaveLimit < 1) { ++ final int queueSize = chunkLoader.getQueueSize(); ++ if (queueSize > world.paperConfig.queueSizeAutoSaveThreshold){ + return false; + } ++ final int autoSaveLimit = world.paperConfig.maxAutoSaveChunksPerTick; + // Paper end Iterator iterator = this.chunks.values().iterator(); while (iterator.hasNext()) {