12
0
Fork 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
Besitzer
Keine Beschreibung angegeben.
Lixfel hat 1 Commit 2024-01-16 22:02:35 +01:00 hinzugefügt
YoyoNow hat 2024-01-16 22:10:43 +01:00 überprüft
@ -67,0 +60,4 @@
Bukkit.getOnlinePlayers().forEach(player -> player.kickPlayer(null));
List<?> networkManagers = TinyProtocol.networkManagers.get(TinyProtocol.getServerConnection(Core.getInstance()));
if(networkManagers.isEmpty()) {
Besitzer

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

Könnten wir dieses if bitte umdrehen? Fände ich schöner!
Lixfel markierte diese Unterhaltung als gelöst
YoyoNow hat 2024-01-16 22:11:28 +01:00 überprüft
@ -67,1 +86,4 @@
private static final Reflection.FieldAccessor<List> channelFutures = Reflection.getField(TinyProtocol.serverConnection, List.class, 0, ChannelFuture.class);
private static final Reflection.MethodInvoker bind = Reflection.getMethod(TinyProtocol.serverConnection, null, InetAddress.class, int.class);
private static void freezeInternal(Path path) throws Exception {
Bukkit.getWorlds().forEach(world -> Arrays.stream(world.getLoadedChunks()).forEach(Chunk::unload));
Besitzer

Ist Chunk.unload auch gleich ein World save? Also das die Welt gespeichert wird?

Ist Chunk.unload auch gleich ein World save? Also das die Welt gespeichert wird?
Autor
Besitzer

Ein World save ist async, deswegen nutzen wir den nicht. (Weil wir dann mitten im Speichern checkpointen, nicht unbedingt ideal).

Wenn die Chunks entladen werden, werden sie auch gespeichert, d.h. wird defakto die Welt gespeichert.

Ein World save ist async, deswegen nutzen wir den nicht. (Weil wir dann mitten im Speichern checkpointen, nicht unbedingt ideal). Wenn die Chunks entladen werden, werden sie auch gespeichert, d.h. wird defakto die Welt gespeichert.
Besitzer

Ok gut zu wissen.

Ok gut zu wissen.
Lixfel markierte diese Unterhaltung als gelöst
YoyoNow hat 2024-01-16 22:12:19 +01:00 überprüft
@ -63,2 +49,2 @@
}
}
public static void signalHandler() {
Signal.handle(new Signal("USR1"), signal -> Bukkit.getScheduler().runTask(Core.getInstance(), CheckpointUtils::freeze));
Besitzer

Ich habe das Gefühl, dass das hier einen Fehler werfen kann, alleine, weil es sun.misc.Signal ist vom package.

Ich habe das Gefühl, dass das hier einen Fehler werfen kann, alleine, weil es sun.misc.Signal ist vom package.
Autor
Besitzer

Warum sollte das Fehler werfen? Ich weiß, dass es deprecated ist und ich eigentlich jdk.internal.Signal nutzen müsste, aber wir haben auch noch Java 8-Server im Betrieb, die müssen das auch können, und da gibt es noch kein jdk.internal. War sun.misc zur Entfernung in einer festgelegten JDK-Version vorgesehen?

Warum sollte das Fehler werfen? Ich weiß, dass es deprecated ist und ich eigentlich jdk.internal.Signal nutzen müsste, aber wir haben auch noch Java 8-Server im Betrieb, die müssen das auch können, und da gibt es noch kein jdk.internal. War sun.misc zur Entfernung in einer festgelegten JDK-Version vorgesehen?
Besitzer

Ich glaube aktuell nichts bekannt, aber mit Sicherheit. Ich hatte eher gedacht, dass es in Java-8 nicht existiert deswegen.

Ich glaube aktuell nichts bekannt, aber mit Sicherheit. Ich hatte eher gedacht, dass es in Java-8 nicht existiert deswegen.
Lixfel markierte diese Unterhaltung als gelöst
Lixfel hat 1 Commit 2024-01-16 22:18:26 +01:00 hinzugefügt
SteamWarCI Build successful Details
7679998285
Invert condition
Lixfel hat 1 Commit 2024-01-17 12:13:37 +01:00 hinzugefügt
YoyoNow hat die Änderungen 2024-01-17 16:34:30 +01:00 genehmigt
Lixfel hat Commit 249efd7024 in master 2024-01-17 16:40:38 +01:00 gemerged
Lixfel löschte die Branch sigusr1 2024-01-17 16:40:39 +01:00
Anmelden, um an der Diskussion teilzunehmen.
Keine Beschreibung angegeben.