From 84454de8f13f92ed3a2311c5bae36f6febfe89a5 Mon Sep 17 00:00:00 2001 From: Etil <81570777+etil2jz@users.noreply.github.com> Date: Sun, 19 Sep 2021 13:32:49 +0200 Subject: [PATCH] (Patina) Completely remove bootstrapExecutor && (Akarin) Avoid double I/O operation on load player file --- ...-Completely-remove-bootstrapExecutor.patch | 55 +++++++++++++++++++ ...ble-I-O-operation-on-load-player-fil.patch | 29 ++++++++++ 2 files changed, 84 insertions(+) create mode 100644 patches/server/0021-Patina-Completely-remove-bootstrapExecutor.patch create mode 100644 patches/server/0022-Akarin-Avoid-double-I-O-operation-on-load-player-fil.patch diff --git a/patches/server/0021-Patina-Completely-remove-bootstrapExecutor.patch b/patches/server/0021-Patina-Completely-remove-bootstrapExecutor.patch new file mode 100644 index 0000000..8de1f0a --- /dev/null +++ b/patches/server/0021-Patina-Completely-remove-bootstrapExecutor.patch @@ -0,0 +1,55 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Etil <81570777+etil2jz@users.noreply.github.com> +Date: Sun, 19 Sep 2021 11:54:46 +0200 +Subject: [PATCH] (Patina) Completely remove bootstrapExecutor + + +diff --git a/src/main/java/net/minecraft/Util.java b/src/main/java/net/minecraft/Util.java +index 5c7b9ad379f3c272e15648dd16f4df9245d927da..af598369e5aeae700d7d9da049f173fc51b7a370 100644 +--- a/src/main/java/net/minecraft/Util.java ++++ b/src/main/java/net/minecraft/Util.java +@@ -65,7 +65,7 @@ import org.apache.logging.log4j.Logger; + + public class Util { + private static final AtomicInteger WORKER_COUNT = new AtomicInteger(1); +- private static final ExecutorService BOOTSTRAP_EXECUTOR = makeExecutor("Bootstrap", -2); // Paper - add -2 priority ++ //private static final ExecutorService BOOTSTRAP_EXECUTOR = makeExecutor("Bootstrap", -2); // Paper - add -2 priority // Patina + private static final ExecutorService BACKGROUND_EXECUTOR = makeExecutor("Main", -1); // Paper - add -1 priority + // Paper start - don't submit BLOCKING PROFILE LOOKUPS to the world gen thread + public static final ExecutorService PROFILE_EXECUTOR = Executors.newFixedThreadPool(2, new java.util.concurrent.ThreadFactory() { +@@ -162,9 +162,11 @@ public class Util { + return executorService; + } + +- public static Executor bootstrapExecutor() { ++ /* // Patina ++ public static Executor bootstrapExecutor() { + return BOOTSTRAP_EXECUTOR; + } ++ */ + + public static Executor backgroundExecutor() { + return BACKGROUND_EXECUTOR; +diff --git a/src/main/java/net/minecraft/util/datafix/DataFixers.java b/src/main/java/net/minecraft/util/datafix/DataFixers.java +index f7c100c975210ba3c3af68311ee53f845ebe8dd3..d56b5c5725aa1c07526fbbf5ccde016c9ad74d57 100644 +--- a/src/main/java/net/minecraft/util/datafix/DataFixers.java ++++ b/src/main/java/net/minecraft/util/datafix/DataFixers.java +@@ -75,15 +75,15 @@ public class DataFixers { + + private static final BiFunction SAME = Schema::new; + private static final BiFunction SAME_NAMESPACED = NamespacedSchema::new; +- private static final DataFixer DATA_FIXER = DataFixers.createFixerUpper(); ++ private static final DataFixer DATA_FIXER; // Patina + + public DataFixers() {} + +- private static DataFixer createFixerUpper() { ++ static { // Patina + DataFixerBuilder datafixerbuilder = new DataFixerBuilder(SharedConstants.getCurrentVersion().getWorldVersion()); + + DataFixers.addFixers(datafixerbuilder); +- return datafixerbuilder.build(Util.bootstrapExecutor()); ++ DATA_FIXER = datafixerbuilder.build(Util.backgroundExecutor()); // Patina + } + + public static DataFixer getDataFixer() { diff --git a/patches/server/0022-Akarin-Avoid-double-I-O-operation-on-load-player-fil.patch b/patches/server/0022-Akarin-Avoid-double-I-O-operation-on-load-player-fil.patch new file mode 100644 index 0000000..6b62761 --- /dev/null +++ b/patches/server/0022-Akarin-Avoid-double-I-O-operation-on-load-player-fil.patch @@ -0,0 +1,29 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Etil <81570777+etil2jz@users.noreply.github.com> +Date: Sun, 19 Sep 2021 13:32:04 +0200 +Subject: [PATCH] (Akarin) Avoid double I/O operation on load player file + + +diff --git a/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java b/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java +index 35c39aed9583275ef25d32c783715798b52bdb63..8ce6d386a67687207966a9c577cff9046f45193e 100644 +--- a/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java ++++ b/src/main/java/net/minecraft/world/level/storage/PlayerDataStorage.java +@@ -56,7 +56,8 @@ public class PlayerDataStorage { + File file = new File(this.playerDir, player.getStringUUID() + ".dat"); + // Spigot Start + boolean usingWrongFile = false; +- if ( org.bukkit.Bukkit.getOnlineMode() && !file.exists() ) // Paper - Check online mode first ++ boolean normalFile = file.exists() && file.isFile(); // Akarin - ensures normal file ++ if ( org.bukkit.Bukkit.getOnlineMode() && !normalFile ) // Paper - Check online mode first // Akarin - ensures normal file + { + file = new File( this.playerDir, java.util.UUID.nameUUIDFromBytes( ( "OfflinePlayer:" + player.getScoreboardName() ).getBytes( "UTF-8" ) ).toString() + ".dat"); + if ( file.exists() ) +@@ -67,7 +68,7 @@ public class PlayerDataStorage { + } + // Spigot End + +- if (file.exists() && file.isFile()) { ++ if (normalFile) { // Akarin - avoid double I/O operation + nbttagcompound = NbtIo.readCompressed(file); + } + // Spigot Start