Adopt cooperative reload cleanup

- Return cleanup completion from the committed Iris reload callback
This commit is contained in:
Brian Neumann-Fopiano committed 2026-10-07 10:24:59 -04:00
1 parent 7f5ce70f49
commit e72189adc7
1 file changed
+5 -3
@@ -18,6 +18,7 @@
package art.arcane.iris; package art.arcane.iris;
import java.util.concurrent.CompletionStage;
import art.arcane.volmlib.util.diagnostics.BukkitDebugDump; import art.arcane.volmlib.util.diagnostics.BukkitDebugDump;
import art.arcane.iris.generation.runtime.IrisEngineEffects; import art.arcane.iris.generation.runtime.IrisEngineEffects;
import art.arcane.iris.generation.runtime.IrisWorldManager; import art.arcane.iris.generation.runtime.IrisWorldManager;
@@ -1011,20 +1012,21 @@ public class Iris extends VolmitPlugin implements Listener, ReloadAware {
} }
@Override @Override
public void onPreUnload(ReloadAware.PreUnloadReason reason) { public CompletionStage<Void> commitReload(ReloadAware.PreUnloadReason reason) {
teardownPapi(); teardownPapi();
if (IrisToolbelt.isServerStopping()) { if (IrisToolbelt.isServerStopping()) {
quiesceRuntimeForServerShutdown("pre-unload:" + reason); quiesceRuntimeForServerShutdown("pre-unload:" + reason);
startPostStopFinisher(); startPostStopFinisher();
Iris.debug("Pre-unload hook deferred generator teardown until Paper closes its chunk schedulers."); Iris.debug("Pre-unload hook deferred generator teardown until Paper closes its chunk schedulers.");
return; return CompletableFuture.completedFuture(null);
} }
if (alreadyDrained.get()) { if (alreadyDrained.get()) {
Iris.debug("Pre-unload hook skipped; Iris already drained."); Iris.debug("Pre-unload hook skipped; Iris already drained.");
return; return CompletableFuture.completedFuture(null);
} }
Iris.debug("BileTools pre-unload hook fired (" + reason + "). Freezing all Iris worlds."); Iris.debug("BileTools pre-unload hook fired (" + reason + "). Freezing all Iris worlds.");
drainOnce("pre-unload:" + reason, 45L); drainOnce("pre-unload:" + reason, 45L);
return CompletableFuture.completedFuture(null);
} }
/** /**