mirror of
https://github.com/PaperMC/Paper.git
synced 2024-08-21 20:02:55 +02:00
Developers!: You will need to clean up your work/Minecraft/1.13.2 folder for this 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: b850a822 SPIGOT-4526: Add conversion time API for Zombie & subclasses CraftBukkit Changes:38cf676e
SPIGOT-4534: CreatureSpawnEvent not being called for CHUNK_GENb446cb5d
SPIGOT-4527: Fix sponges with waterlogged blocks6ec8ea5c
SPIGOT-4526: Add conversion time API for Zombie & subclassesc64fe508
Mappings Updatea3c2ec03
Fix missing ServerListPingEvent call for legacy pings Spigot Changes: 1dc156ce Rebuild patches 140f654d Mappings Update
59 lines
2.5 KiB
Diff
59 lines
2.5 KiB
Diff
From b8e76a39e5eaeb73e676e879ffd8650dc68ee57c Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Mon, 4 Mar 2013 23:46:10 -0500
|
|
Subject: [PATCH] Chunk Save Reattempt
|
|
|
|
We commonly have "Stream Closed" errors on chunk saving, so this code should re-try to save the chunk in the event of failure and hopefully prevent rollbacks.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java
|
|
index 06417b9ec..e1c0921ea 100644
|
|
--- a/src/main/java/net/minecraft/server/RegionFile.java
|
|
+++ b/src/main/java/net/minecraft/server/RegionFile.java
|
|
@@ -222,8 +222,7 @@ public class RegionFile {
|
|
|
|
this.b(i, j, (int)(SystemUtils.getTimeMillis() / 1000L));
|
|
} catch (IOException ioexception) {
|
|
- ioexception.printStackTrace();
|
|
- ServerInternalException.reportInternalException(ioexception); // Paper
|
|
+ org.spigotmc.SneakyThrow.sneaky(ioexception); // Paper - we want the upper try/catch to retry this
|
|
}
|
|
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/RegionFileCache.java b/src/main/java/net/minecraft/server/RegionFileCache.java
|
|
index e507a996f..5dbd1d517 100644
|
|
--- a/src/main/java/net/minecraft/server/RegionFileCache.java
|
|
+++ b/src/main/java/net/minecraft/server/RegionFileCache.java
|
|
@@ -95,11 +95,29 @@ public class RegionFileCache {
|
|
|
|
@Nullable
|
|
public static synchronized void write(File file, int i, int j, NBTTagCompound nbttagcompound) throws IOException {
|
|
+ int attempts = 0; Exception laste = null; while (attempts++ < 5) { try { // Paper
|
|
RegionFile regionfile = a(file, i, j);
|
|
|
|
DataOutputStream dataoutputstream = regionfile.c(i & 31, j & 31);
|
|
NBTCompressedStreamTools.a(nbttagcompound, (java.io.DataOutput) dataoutputstream);
|
|
dataoutputstream.close();
|
|
+ // Paper start
|
|
+ laste = null; break; // Paper
|
|
+ } catch (Exception exception) {
|
|
+ //ChunkRegionLoader.a.error("Failed to save chunk", exception); // Paper
|
|
+ laste = exception; // Paper
|
|
+ }
|
|
+ try {
|
|
+ Thread.sleep(10);
|
|
+ } catch (InterruptedException e) {
|
|
+ e.printStackTrace();
|
|
+ }
|
|
+ }
|
|
+ if (laste != null) {
|
|
+ com.destroystokyo.paper.exception.ServerInternalException.reportInternalException(laste);
|
|
+ MinecraftServer.LOGGER.error("Failed to save chunk", laste);
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
|
|
public static synchronized boolean chunkExists(File file, int i, int j) {
|
|
--
|
|
2.20.0
|
|
|