From 3489ad988d609f7e4549a9bdd37ce85a2e51a771 Mon Sep 17 00:00:00 2001 From: Bernd Wiswedel Date: Tue, 24 Feb 2026 18:19:35 +0100 Subject: [PATCH] AP-25628: add checkpoint/restore (CRaC support in executor) AP-25628 (PoC: "CRaC" for faster executor startup (suspend VM after start)) --- .../org/knime/python3/PythonGatewayTracker.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/org.knime.python3/src/main/java/org/knime/python3/PythonGatewayTracker.java b/org.knime.python3/src/main/java/org/knime/python3/PythonGatewayTracker.java index c9d18923d..060319697 100644 --- a/org.knime.python3/src/main/java/org/knime/python3/PythonGatewayTracker.java +++ b/org.knime.python3/src/main/java/org/knime/python3/PythonGatewayTracker.java @@ -55,6 +55,8 @@ import java.util.Map; import java.util.Set; +import org.knime.core.checkpoint.PhasedInit; +import org.knime.core.checkpoint.PhasedInitSupport; import org.knime.core.node.NodeLogger; import org.knime.python3.PythonGatewayCreationGate.PythonGatewayCreationGateListener; @@ -79,6 +81,17 @@ public final class PythonGatewayTracker implements PythonGatewayCreationGateList private PythonGatewayTracker() { m_openGateways = gatewaySet(); + // Support CRaC (Coordinated Restore at Checkpoint) and close all connections prior checkpointing + PhasedInitSupport.registerOrActivate(new PhasedInit() { + @Override + public void beforeCheckpoint() throws RuntimeException { + try { + clear(); + } catch (IOException ex) { + LOGGER.warn("Error when forcefully terminating Python processes during phased initialization", ex); + } + } + }); } /**