Files
MiraiMC/patches/server/0094-Save-Json-list-asynchronously.patch
2022-07-21 19:36:05 +02:00

42 lines
1.9 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=84=97=E3=84=A0=CB=8B=20=E3=84=91=E3=84=A7=CB=8A?=
<tsao-chi@the-lingo.org>
Date: Thu, 2 Apr 2020 11:16:18 +0800
Subject: [PATCH] Save Json list asynchronously
Original license: GPLv3
Original project: https://github.com/Akarin-project/Akarin
diff --git a/src/main/java/net/minecraft/server/players/StoredUserList.java b/src/main/java/net/minecraft/server/players/StoredUserList.java
index 109e08e098a6c1ca1ba3dc2a9a293eaf9d5d7cb7..ebefa64eb343f2185c11de56a1a364fc3a367b14 100644
--- a/src/main/java/net/minecraft/server/players/StoredUserList.java
+++ b/src/main/java/net/minecraft/server/players/StoredUserList.java
@@ -151,6 +151,7 @@ public abstract class StoredUserList<K, V extends StoredUserEntry<K>> {
}
public void save() throws IOException {
+ Runnable runnable = () -> { // Akarin - Save json list async
this.removeExpired(); // Paper - remove expired values before saving
JsonArray jsonarray = new JsonArray();
// Yatopia start - Stop wasting resources on JsonList#get
@@ -169,6 +170,7 @@ public abstract class StoredUserList<K, V extends StoredUserEntry<K>> {
jsonarray.add(obj);
}
// Yatopia end
+ try {
BufferedWriter bufferedwriter = Files.newWriter(this.file, StandardCharsets.UTF_8);
try {
@@ -188,6 +190,11 @@ public abstract class StoredUserList<K, V extends StoredUserEntry<K>> {
if (bufferedwriter != null) {
bufferedwriter.close();
}
+ } catch (IOException e) {
+ StoredUserList.LOGGER.warn("Failed to async save " + this.file, e); // Akarin - Save json list async
+ }
+ }; // Akarin - Save json list async
+ net.minecraft.server.MCUtil.scheduleAsyncTask(runnable); // Akarin - Save json list async
}