mirror of
https://github.com/PaperMC/Paper.git
synced 2025-04-03 13:05:53 +02:00
light queue is actually buggy, so re-enabling the config. however, if anyone is ok with the buggy behavior, made the max time lost due to light queue configurable. We want to get to making the ligth queue default if we can make it work perfectly. also applying neighbor optimizations to use the faster method for light checks.
56 lines
No EOL
2.7 KiB
Diff
56 lines
No EOL
2.7 KiB
Diff
From 0000000000000000000000000000000000000000 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
|
|
@@ -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 a35eac043c..8acbd7bbff 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
|
|
@@ -0,0 +0,0 @@ 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 d40d9d1173..fc8f7574cf 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
|
@@ -0,0 +0,0 @@ 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 {
|
|
--
|