{"record":{"id":"2f849b2170843a3e","repo":"apache/seatunnel","slug":"unsupported-checkpoint-history-status-s","errorCode":null,"errorMessage":"Unsupported checkpoint history status %s","messagePattern":"Unsupported checkpoint history status (.+?)","errorType":"exception","errorClass":"CommandExecuteException","httpStatus":null,"severity":"error","filePath":"seatunnel-core/seatunnel-starter/src/main/java/org/apache/seatunnel/core/starter/seatunnel/command/ClientExecuteCommand.java","lineNumber":166,"sourceCode":"                                                clientCommandArgs.getCheckpointOverviewJobId()));\n                System.out.println(JsonUtils.toJsonString(overview));\n            } else if (null != clientCommandArgs.getCheckpointHistoryJobId()) {\n                Long historyJobId = Long.parseLong(clientCommandArgs.getCheckpointHistoryJobId());\n                Integer pipelineId = clientCommandArgs.getCheckpointHistoryPipeline();\n                int limit =\n                        clientCommandArgs.getCheckpointHistoryLimit() == null\n                                ? 20\n                                : clientCommandArgs.getCheckpointHistoryLimit();\n                CheckpointStatus status = null;\n                if (clientCommandArgs.getCheckpointHistoryStatus() != null) {\n                    try {\n                        status =\n                                CheckpointStatus.valueOf(\n                                        clientCommandArgs\n                                                .getCheckpointHistoryStatus()\n                                                .toUpperCase());\n                    } catch (IllegalArgumentException ex) {\n                        throw new CommandExecuteException(\n                                String.format(\n                                        \"Unsupported checkpoint history status %s\",\n                                        clientCommandArgs.getCheckpointHistoryStatus()),\n                                ex);\n                    }\n                }\n                List<CheckpointHistoryEntry> history =\n                        engineClient\n                                .getJobClient()\n                                .getCheckpointHistory(historyJobId, pipelineId, limit, status);\n                System.out.println(JsonUtils.toJsonString(history));\n            } else if (null != clientCommandArgs.getSavePointJobId()) {\n                engineClient\n                        .getJobClient()\n                        .savePointJob(Long.parseLong(clientCommandArgs.getSavePointJobId()));\n            } else {\n                Path configFile = FileUtils.getConfigPath(clientCommandArgs);\n                checkConfigExist(configFile);","sourceCodeStart":148,"sourceCodeEnd":184,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-core/seatunnel-starter/src/main/java/org/apache/seatunnel/core/starter/seatunnel/command/ClientExecuteCommand.java#L148-L184","documentation":"ClientExecuteCommand.execute parses the --checkpoint-history-status CLI option into the CheckpointStatus enum via CheckpointStatus.valueOf on the uppercased value. When the value does not match any enum constant, a CommandExecuteException wrapping the raw IllegalArgumentException is thrown with the offending value in the message. This guards the job-submission client against invalid checkpoint history filter input before querying the engine.","triggerScenarios":"Submitting a job with -Chs/--checkpoint-history-status set to a string that is not a CheckpointStatus constant (e.g. 'completed' instead of 'COMPLETED', or 'running'). The throw occurs in ClientExecuteCommand.execute right after getCheckpointHistoryStatus() is read.","commonSituations":"Using lowercase or human-friendly status names that differ from the enum constants; passing a status from an older SeaTunnel version whose enum constants were renamed; scripting with a variable containing an invalid status.","solutions":["Use an exact CheckpointStatus enum constant name (uppercase, e.g. RUNNING, FAILED, CANCELED, COMPLETED) for --checkpoint-history-status.","Inspect the CheckpointStatus enum in the seatunnel-engine module to list valid values for your version.","If migrating from an older version, update scripts to the renamed enum constants."],"exampleFix":"// before\nseatunnel.sh -C ... -Chs completed\n// after\nseatunnel.sh -C ... -Chs COMPLETED","handlingStrategy":"validation","validationCode":"const VALID_STATUS = [\"RUNNING\", \"FAILED\", \"CANCELED\", \"COMPLETED\"]; // mirror CheckpointStatus enum\nif (checkpointHistoryStatus && !VALID_STATUS.includes(checkpointHistoryStatus.toUpperCase())) {\n  throw new Error(\"checkpoint-history-status must be one of: \" + VALID_STATUS.join(\", \"));\n}","typeGuard":"function isCheckpointStatus(v) { return [\"RUNNING\",\"FAILED\",\"CANCELED\",\"COMPLETED\"].includes(v.toUpperCase()); }","tryCatchPattern":"try { client.execute(); } catch (CommandExecuteException e) { if (e.getMessage().startsWith(\"Unsupported checkpoint history status\")) { System.err.println(\"Use a valid CheckpointStatus value: \" + e.getMessage()); } else { throw e; } }","preventionTips":["Always pass enum constant names (uppercase) to CLI enum options","Re-check enum constants after upgrading SeaTunnel versions","Centralize job-submission flags in one script so values are validated once"],"tags":["cli","enum","checkpoint","job-submission"],"backgroundTag":"unsupported-enum-value","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}