apache/flink · critical · CliArgsException
Missing JobID. Specify a Job ID to trigger a savepoint.
Error message
Missing JobID. Specify a Job ID to trigger a savepoint.
What it means
Thrown from NestedPrimitiveColumnReader.initDictionary when the Parquet dictionary page for a nested column fails to decode — encoding.initDictionary(descriptor, dictionaryPage) threw an IOException. The dictionary page is corrupt, uses an unsupported dictionary encoding, or its declared size does not match its bytes. The descriptor identifies the column.
Solutions
- Check the cause: decompression failures point to a codec/bundling issue; EOF points to truncation
- Ensure the Parquet file's compression codec is supported by the Flink parquet format's classpath (snappy/zstd/lz4/gzip natives available)
- Verify with `parquet-tools meta` that the dictionary page parses in a reference implementation; regenerate the file if malformed
- Re-obtain the file if transfer corruption is possible
Defensive patterns
Strategy: try-catch
Try / catch
try {
nestedReader.initDictionaryPage(pageReader, ...);
} catch (IOException e) {
// 'Could not decode the dictionary for %s' — check cause for codec vs truncation
if (ExceptionUtils.getRootCause(e) instanceof DecompressionException) fixCodecClasspath();
else quarantine(file);
} Prevention
- Ship the exact compression codec dependencies (snappy, zstd, lz4) your files use inside the Flink Parquet format's classpath
- Verify dictionary pages with parquet-tools during onboarding of new data producers
- Treat decode failures as file defects: quarantine and re-produce, never silently skip
When it happens
Trigger: A nested (list/map/struct) column's DICTIONARY_PAGE with truncated bytes or invalid plain-data length; dictionary page encoding not supported by parquet-mr's initDictionary; decompression producing wrong-sized dictionary data.
Common situations: Corrupt files in HDFS/S3; codec/version mismatch where the writer's compression codec differs from what the reader applies; dictionary pages exceeding size limits written malformed.
Related errors
- Triggering a detached savepoint for the job
- Could not stop with a detached savepoint job
- Failed to dispose the savepoint
- Failed to trigger a checkpoint for the job
- JAR file does not exist
AI-assisted analysis of apache/flink@2f3c205e92 (2026-08-14).
Data as JSON: /api/errors/ca29c1b4c39d03b5.
Report an issue: GitHub.
Appendix: source
Thrown at flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java:758
runClusterAction(
activeCommandLine,
commandLine,
(clusterClient, effectiveConfiguration) ->
disposeSavepoint(
clusterClient,
savepointOptions.getSavepointPath(),
getClientTimeout(effectiveConfiguration)));
} else {
String[] cleanedArgs = savepointOptions.getArgs();
final JobID jobId;
if (cleanedArgs.length >= 1) {
String jobIdString = cleanedArgs[0];
jobId = parseJobId(jobIdString);
} else {
throw new CliArgsException(
"Missing JobID. " + "Specify a Job ID to trigger a savepoint.");
}
final String savepointDirectory;
if (cleanedArgs.length >= 2) {
savepointDirectory = cleanedArgs[1];
} else {
savepointDirectory = null;
}
// Print superfluous arguments
if (cleanedArgs.length >= 3) {
logAndSysout(
"Provided more arguments than required. Ignoring not needed arguments.");
}
runClusterAction(
activeCommandLine,View on GitHub (pinned to 2f3c205e92)