apache/seatunnel
View on GitHub[Docs][Core] Add Javadoc to CheckpointCoordinator (checkpoint state machine)
Open
#10545 opened on Feb 28, 2026
help wanted
Description
Sub-issue of #10533
Scope
CheckpointCoordinator implements Zeta's distributed checkpoint protocol: barrier injection, task ACK collection, state persistence, and restore. At 1 174 lines it has only ~21 Javadoc lines (~1.8 % coverage). The state machine and field semantics are entirely undocumented.
File
seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/checkpoint/CheckpointCoordinator.java
Methods to document
| Method | Line | What to explain |
|---|---|---|
reportedTask(TaskReportStatusOperation) |
256 | Entry point for task status reports; maps WAITING_RESTORE → restoreTaskState, READY_START → allTaskReady |
restoreTaskState(TaskLocation) |
306 | Looks up latest CompletedCheckpoint; distributes per-action states to the target task; parallelism remapping; COORDINATOR_INDEX special case for enumerator state |
allTaskReady() |
346 | Called once all tasks report READY_START; triggers first checkpoint cycle or immediately completes if no checkpoint is needed |
tryTriggerPendingCheckpoint(CheckpointType) |
500 | Enforces minimum checkpoint interval; guards against concurrent pending checkpoints; schedules barrier injection |
acknowledgeTask(TaskAcknowledgeOperation) |
905 | Accumulates per-task ACKs inside the PendingCheckpoint; calls completePendingCheckpoint when all tasks have ACKed |
completePendingCheckpoint(CompletedCheckpoint) |
942 | Persists checkpoint to storage; updates runningJobStateIMap; notifies all tasks; prunes oldest checkpoint from history |
cleanPendingCheckpoint(CheckpointCloseReason) |
853 | Abort path: maps close reason to failure vs cancel; clears all pending checkpoints |
readyToClose(TaskLocation) |
424 | Tracks source-complete signals; once all sources are ready-to-close, triggers final savepoint barrier |
notifyTaskStart() |
397 | Broadcasts task-start event to all pipeline tasks; part of startup sequencing |
scheduleSchemaChangeBeforeCheckpoint() |
1111 | Initiates the DDL-before-checkpoint phase of the schema-evolution protocol |
Fields to document (add field-level Javadoc)
| Field | Line | What to explain |
|---|---|---|
readyToCloseStartingTask |
119 | Source tasks that have finished emitting data and are waiting for the final barrier |
readyToCloseIdleTask |
120 | Source tasks currently in idle (no-data) state awaiting close |
closedIdleTask |
121 | Idle tasks that have fully closed; used to gate coordinator completion |
schemaChanging |
136 | Guards normal checkpoint triggers during an in-progress DDL schema-change event |
isAllTaskReady |
143 | Set to true once; prevents duplicate allTaskReady calls on subsequent checkpoint cycles |
How to contribute
- Fork the repo and create a branch
- Add Javadoc to the methods and fields above
- Run
./mvnw spotless:applyand./mvnw -q -DskipTests verify - Open a PR with title:
[Docs][Core] Add Javadoc to CheckpointCoordinator