SteamWar/SpigotCore
Archiviert
13
0

Use signal handler for checkpointing #254

Zusammengeführt
Lixfel hat 3 Commits von sigusr1 nach master 2024-01-17 16:40:38 +01:00 zusammengeführt
Nur Änderungen aus Commit 7679998285 werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -60,27 +60,27 @@ public class CheckpointUtils {
Bukkit.getOnlinePlayers().forEach(player -> player.kickPlayer(null));
List<?> networkManagers = TinyProtocol.networkManagers.get(TinyProtocol.getServerConnection(Core.getInstance()));
if(networkManagers.isEmpty()) {
Path path = FileSystems.getDefault().getPath(checkpointFile);
try {
freezeInternal(path);
} catch (Exception e) {
Bukkit.shutdown();
throw new SecurityException(e);
} finally {
// Delete checkpoint
try (Stream<Path> stream = Files.walk(path)) {
stream.sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete);
} catch (IOException e) {
//ignore
}
}
if(!networkManagers.isEmpty()) {
Lixfel markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Könnten wir dieses if bitte umdrehen? Fände ich schöner!

Könnten wir dieses if bitte umdrehen? Fände ich schöner!
Core.getInstance().getLogger().log(Level.INFO, "Waiting for players to disconnect for checkpointing");
Bukkit.getScheduler().runTaskLater(Core.getInstance(), CheckpointUtils::freeze, 1);
return;
}
Core.getInstance().getLogger().log(Level.INFO, "Waiting for players to disconnect for checkpointing");
Bukkit.getScheduler().runTaskLater(Core.getInstance(), CheckpointUtils::freeze, 1);
Path path = FileSystems.getDefault().getPath(checkpointFile);
try {
freezeInternal(path);
} catch (Exception e) {
Bukkit.shutdown();
throw new SecurityException(e);
} finally {
// Delete checkpoint
try (Stream<Path> stream = Files.walk(path)) {
stream.sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete);
} catch (IOException e) {
//ignore
}
}
}
private static final Reflection.FieldAccessor<List> channelFutures = Reflection.getField(TinyProtocol.serverConnection, List.class, 0, ChannelFuture.class);