From 3b313bf0a8c934ea8864d0b35cae652138eafdaa Mon Sep 17 00:00:00 2001 From: chylex <contact@chylex.com> Date: Thu, 11 Apr 2024 05:29:12 +0200 Subject: [PATCH] Disable sync chunk writes to avoid lag during backups --- .../Properties/MinecraftServerProperties.cs | 1 + Agent/Phantom.Agent.Minecraft/Properties/ServerProperties.cs | 4 +++- .../Backups/BackupServerCommandDispatcher.cs | 1 - 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Agent/Phantom.Agent.Minecraft/Properties/MinecraftServerProperties.cs b/Agent/Phantom.Agent.Minecraft/Properties/MinecraftServerProperties.cs index ce49c77..fe351ce 100644 --- a/Agent/Phantom.Agent.Minecraft/Properties/MinecraftServerProperties.cs +++ b/Agent/Phantom.Agent.Minecraft/Properties/MinecraftServerProperties.cs @@ -18,4 +18,5 @@ static class MinecraftServerProperties { public static readonly MinecraftServerProperty<ushort> ServerPort = new UnsignedShort("server-port"); public static readonly MinecraftServerProperty<ushort> RconPort = new UnsignedShort("rcon.port"); public static readonly MinecraftServerProperty<bool> EnableRcon = new Boolean("enable-rcon"); + public static readonly MinecraftServerProperty<bool> SyncChunkWrites = new Boolean("sync-chunk-writes"); } diff --git a/Agent/Phantom.Agent.Minecraft/Properties/ServerProperties.cs b/Agent/Phantom.Agent.Minecraft/Properties/ServerProperties.cs index 92d692c..e1cdc3e 100644 --- a/Agent/Phantom.Agent.Minecraft/Properties/ServerProperties.cs +++ b/Agent/Phantom.Agent.Minecraft/Properties/ServerProperties.cs @@ -5,11 +5,13 @@ namespace Phantom.Agent.Minecraft.Properties; public sealed record ServerProperties( ushort ServerPort, ushort RconPort, - bool EnableRcon = true + bool EnableRcon = true, + bool SyncChunkWrites = false ) { internal void SetTo(JavaPropertiesFileEditor properties) { MinecraftServerProperties.ServerPort.Set(properties, ServerPort); MinecraftServerProperties.RconPort.Set(properties, RconPort); MinecraftServerProperties.EnableRcon.Set(properties, EnableRcon); + MinecraftServerProperties.SyncChunkWrites.Set(properties, SyncChunkWrites); } } diff --git a/Agent/Phantom.Agent.Services/Backups/BackupServerCommandDispatcher.cs b/Agent/Phantom.Agent.Services/Backups/BackupServerCommandDispatcher.cs index 91e3fd3..b534a66 100644 --- a/Agent/Phantom.Agent.Services/Backups/BackupServerCommandDispatcher.cs +++ b/Agent/Phantom.Agent.Services/Backups/BackupServerCommandDispatcher.cs @@ -55,7 +55,6 @@ sealed partial class BackupServerCommandDispatcher : IDisposable { } public async Task SaveAllChunks() { - // TODO Try if not flushing and waiting a few seconds before flushing reduces lag. await process.SendCommand(MinecraftCommand.SaveAll(flush: true), cancellationToken); await savedTheGame.Task.WaitAsync(TimeSpan.FromMinutes(1), cancellationToken); }