(Patina) Completely remove bootstrapExecutor && (Akarin) Avoid double I/O operation on load player file

This commit is contained in:
Etil
2021-09-19 13:32:49 +02:00
parent 74d072fa0b
commit 84454de8f1
2 changed files with 84 additions and 0 deletions

View File

@@ -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<Integer, Schema, Schema> SAME = Schema::new;
private static final BiFunction<Integer, Schema, Schema> 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() {

View File

@@ -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