Add some optimizations
This commit is contained in:
55
patches/server/0035-Save-Json-list-asynchronously.patch
Normal file
55
patches/server/0035-Save-Json-list-asynchronously.patch
Normal file
@@ -0,0 +1,55 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: AlphaKR93 <dev@alpha93.kr>
|
||||
Date: Wed, 10 Jan 2024 17:49:55 +0900
|
||||
Subject: [PATCH] Save Json list asynchronously
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/players/StoredUserList.java b/src/main/java/net/minecraft/server/players/StoredUserList.java
|
||||
index 34b7c5421da93f14050425b0fc16bbc27e5f3eba..b3d4f579fab96f572811ed0e33ecbb5204475391 100644
|
||||
--- a/src/main/java/net/minecraft/server/players/StoredUserList.java
|
||||
+++ b/src/main/java/net/minecraft/server/players/StoredUserList.java
|
||||
@@ -142,7 +142,10 @@ public abstract class StoredUserList<K, V extends StoredUserEntry<K>> {
|
||||
return this.map.values();
|
||||
}
|
||||
|
||||
- public void save() throws IOException {
|
||||
+ // Plazma start - Save Json list asynchronously
|
||||
+ public void save()/* throws IOException*/ {
|
||||
+ io.papermc.paper.util.MCUtil.scheduleAsyncTask(() -> {
|
||||
+
|
||||
this.removeExpired(); // Paper - remove expired values before saving
|
||||
JsonArray jsonarray = new JsonArray();
|
||||
Stream<JsonObject> stream = this.map.values().stream().map((jsonlistentry) -> { // CraftBukkit - decompile error
|
||||
@@ -154,27 +157,16 @@ public abstract class StoredUserList<K, V extends StoredUserEntry<K>> {
|
||||
|
||||
Objects.requireNonNull(jsonarray);
|
||||
stream.forEach(jsonarray::add);
|
||||
- BufferedWriter bufferedwriter = Files.newWriter(this.file, StandardCharsets.UTF_8);
|
||||
|
||||
- try {
|
||||
+ try (BufferedWriter bufferedwriter = Files.newWriter(this.file, StandardCharsets.UTF_8)) {
|
||||
StoredUserList.GSON.toJson(jsonarray, bufferedwriter);
|
||||
- } catch (Throwable throwable) {
|
||||
- if (bufferedwriter != null) {
|
||||
- try {
|
||||
- bufferedwriter.close();
|
||||
- } catch (Throwable throwable1) {
|
||||
- throwable.addSuppressed(throwable1);
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- throw throwable;
|
||||
- }
|
||||
-
|
||||
- if (bufferedwriter != null) {
|
||||
- bufferedwriter.close();
|
||||
+ } catch (IOException e) {
|
||||
+ StoredUserList.LOGGER.warn("Failed to asynchronously save file " + this.file, e);
|
||||
}
|
||||
|
||||
+ });
|
||||
}
|
||||
+ // Plazma end
|
||||
|
||||
public void load() throws IOException {
|
||||
if (this.file.exists()) {
|
||||
Reference in New Issue
Block a user