{"record":{"id":"087b804b1498a607","repo":"apache/seatunnel","slug":"failed-to-get-checkpoint-data-from-master-node-re","errorCode":null,"errorMessage":"Failed to get checkpoint data from master node, restoreSourceJobId=${restoreSourceJobId}","messagePattern":"Failed to get checkpoint data from master node, restoreSourceJobId=(.+?)","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/rest/RestJobExecutionEnvironment.java","lineNumber":197,"sourceCode":"                        .getLatestCheckpointData(String.valueOf(restoreSourceJobId), restoreMode);\n            }\n            throw new IllegalStateException(\n                    \"Unsupported restore mode for checkpoint loading: \" + restoreMode);\n        }\n\n        try {\n            Object response =\n                    NodeEngineUtil.sendOperationToMasterNode(\n                                    nodeEngine,\n                                    new GetJobCheckpointOperation(restoreSourceJobId, restoreMode))\n                            .join();\n            if (response == null) {\n                return Collections.emptyList();\n            }\n            return (List<JobPipelineCheckpointData>)\n                    nodeEngine.getSerializationService().toObject(response);\n        } catch (Exception e) {\n            throw new IllegalStateException(\n                    \"Failed to get checkpoint data from master node, restoreSourceJobId=\"\n                            + restoreSourceJobId,\n                    e);\n        }\n    }\n\n    public JobImmutableInformation build() {\n        return new JobImmutableInformation(\n                Long.parseLong(jobConfig.getJobContext().getJobId()),\n                jobConfig.getName(),\n                restoreMode,\n                restoreSourceJobId,\n                nodeEngine.getSerializationService(),\n                getLogicalDag(),\n                new ArrayList<>(jarUrls),\n                new ArrayList<>(connectorJarIdentifiers));\n    }\n}","sourceCodeStart":179,"sourceCodeEnd":215,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/rest/RestJobExecutionEnvironment.java#L179-L215","documentation":"On non-master nodes, checkpoint data is fetched from the master via sendOperationToMasterNode. Any exception during that RPC or during deserialization of the response into List<JobPipelineCheckpointData> is wrapped in an IllegalStateException mentioning the restoreSourceJobId.","triggerScenarios":"Master node unreachable/slow during restore submission; operation timeout; serialization-service mismatch between nodes; master throws while reading checkpoint from storage.","commonSituations":"Cluster network issues or master restarted mid-request; version-skew between cluster nodes; checkpoint storage (HDFS/S3) down so master cannot read state.","solutions":["Check master node availability and network connectivity between nodes; retry the submission","Verify all nodes run the same SeaTunnel version (serialization compatibility)","Ensure checkpoint storage is accessible from the master node and credentials are valid","Inspect master node logs at the same timestamp for the root cause exception"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// confirm master reachable before submission\ncurl http://master:8080/hazelcast/rest/maps/cluster-overview","typeGuard":null,"tryCatchPattern":"try {\n    loadRemoteCheckpoints();\n} catch (IllegalStateException e) {\n    if (e.getMessage().startsWith(\"Failed to get checkpoint data\")) {\n        // check master logs / connectivity, then retry\n    }\n}","preventionTips":["Monitor master node health and network partition risks","Keep all cluster nodes on the same version","Ensure checkpoint storage HA (HDFS/S3) rather than local disk"],"tags":["zeta-engine","rest-api","rpc","restore"],"backgroundTag":"http-request-failed","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}