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.
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)
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 {} failed.
- Translator {} cannot translate the given pipeline {}.
- Could not stop with a detached savepoint job "{}".
- Failed to dispose the savepoint '{}'.
- Missing JobID. Specify a Job ID to manipulate a checkpoint.
AI-assisted analysis of apache/flink@2f3c205e92 (2026-08-14).
Data as JSON: /api/errors/ca29c1b4c39d03b5.
Report an issue: GitHub.