apache/seatunnel · error · JobNotFoundException
Job %s not found
Error message
Job %s not found
What it means
CoordinatorService.getJobDAGInfo (getRunningJobDAGInfo path) throws JobNotFoundException when neither the running job info IMap nor restore data holds the requested jobId. It means the master node has no record of this job's DAG: the job never ran on this cluster, was fully released/finished and purged, or state was lost (e.g. IMap persistence absent after cluster restart).
Source
Thrown at seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/CoordinatorService.java:1908
return jobInfo;
}
JobMaster runningJobMaster = runningJobMasterMap.get(jobId);
if (runningJobMaster != null) {
return runningJobMaster.getJobDAGInfo();
}
PendingJobInfo pendingJobInfo = pendingJobQueue.getById(jobId);
if (pendingJobInfo != null) {
return pendingJobInfo.getJobMaster().getJobDAGInfo();
}
JobInfo runningJobInfo = runningJobInfoIMap.get(jobId);
if (runningJobInfo != null) {
return restoreJobDAGInfo(runningJobInfo);
}
throw new JobNotFoundException(String.format("Job %s not found", jobId));
}
private JobDAGInfo restoreJobDAGInfo(JobInfo jobInfo) {
JobImmutableInformation jobImmutableInformation = restoreJobImmutableInformation(jobInfo);
return restoreJobDAGInfo(jobImmutableInformation);
}
private JobDAGInfo restoreJobDAGInfo(JobImmutableInformation jobImmutableInformation) {
ClassLoaderService classLoaderService = seaTunnelServer.getClassLoaderService();
LogicalDag logicalDag =
DAGUtils.restoreLogicalDag(
jobImmutableInformation,
nodeEngine.getSerializationService(),
classLoaderService);
return DAGUtils.getJobDAGInfo(
logicalDag,
jobImmutableInformation,
engineConfig,View on GitHub (pinned to cf67b549a7)
Solutions
- Verify the jobId is correct and the job is still running: list jobs (REST /hazelcast/rest/maps/running-jobs or bin/seatunnel.sh -l) before querying its DAG.
- For finished jobs, use the job info/history APIs (job state from running-jobs or finished-jobs endpoints) instead of the running DAG endpoint.
- Confirm you are querying the same cluster that ran the job (check cluster name and Hazelcast connection settings).
- If job metadata disappears after restart, enable/check IMap persistence (seatunnel.yaml connector package / persistence settings) and rely on checkpoint storage for restore.
Example fix
// before: blindly fetch DAG for a saved jobId
JobDAGInfo info = client.getJobDAGInfo(jobId);
// after: check job state first
JobState state = client.getJobState(jobId); // throws/returns unknown if job absent
if (state != null) {
JobDAGInfo info = client.getJobDAGInfo(jobId);
} Defensive patterns
Strategy: validation
Validate before calling
List<RunningJobInfo> jobs = client.listJobs(true); // or REST /running-jobs
if (jobs.stream().noneMatch(j -> j.getJobId() == targetJobId)) {
throw new IllegalArgumentException("Job " + targetJobId + " is not running on this cluster");
} Type guard
boolean jobExists(long jobId, Set<Long> knownJobIds) { return knownJobIds.contains(jobId); } Try / catch
try {
JobDAGInfo info = client.getJobDAGInfo(jobId);
} catch (JobNotFoundException e) {
log.warn("Job {} has no DAG info (not running or purged)", jobId);
} Prevention
- Fetch the running-job list before querying DAG details for a specific jobId
- Use finished-jobs/history endpoints for completed jobs instead of the running-DAG API
- Verify you are connected to the intended cluster (cluster name, addresses)
When it happens
Trigger: Calling getJobDAGInfo/getRunningJobDAGInfo via REST or SeaTunnelClient for a jobId that is not present in runningJobInfoIMap and cannot be restored; querying after the job finished and its JobMaster was released; querying a different cluster than the one that ran the job.
Common situations: Typo in jobId passed to the REST endpoint /seatunnel/running-job/{jobId}; polling a finished job's DAG info; cluster restarted without checkpoint/imap persistence so job metadata is gone; pointing the client at the wrong cluster (dev vs prod).
Understand the failure class
Background: "Not found" and "does not exist" errors: why "Task not found", "No such folder", and "Can't find" fire when a lookup comes back empty — this error's family across 14 libraries.
Related errors
- Job %s not running
- Job %s not running (restore in progress)
- The user is not configured to enable connector package servi
- This is not a master node now.
- Can not get coordinator service from an active master node.
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/846bd3c2bb550f15.
Report an issue: GitHub.