apache/flink · critical · FlinkException
Failed to dispose the savepoint '{}'.
Error message
Failed to dispose the savepoint '{}'. What it means
Thrown from NestedPrimitiveColumnReader.initDataReader when dataColumn.initFromPage(pageValueCount, in) fails with IOException — the nested column's values reader could not initialize over the page body (after repetition/definition levels were consumed). It wraps the real cause (truncation, malformed values payload) with column context.
Source
Thrown at flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java:924
private void disposeSavepoint(
ClusterClient<?> clusterClient, String savepointPath, Duration clientTimeout)
throws FlinkException {
checkNotNull(
savepointPath,
"Missing required argument: savepoint path. "
+ "Usage: bin/flink savepoint -d <savepoint-path>");
logAndSysout("Disposing savepoint '" + savepointPath + "'.");
final CompletableFuture<Acknowledge> disposeFuture =
clusterClient.disposeSavepoint(savepointPath);
logAndSysout("Waiting for response...");
try {
disposeFuture.get(clientTimeout.toMillis(), TimeUnit.MILLISECONDS);
} catch (Exception e) {
throw new FlinkException("Failed to dispose the savepoint '" + savepointPath + "'.", e);
}
logAndSysout("Savepoint '" + savepointPath + "' disposed.");
}
/**
* Executes the CHECKPOINT action.
*
* @param args Command line arguments for the checkpoint action.
*/
protected void checkpoint(String[] args) throws Exception {
LOG.info("Running 'checkpoint' command.");
final Options commandOptions = CliFrontendParser.getCheckpointCommandOptions();
final CommandLine commandLine = getCommandLine(commandOptions, args, false);
final CheckpointOptions checkpointOptions = new CheckpointOptions(commandLine);View on GitHub (pinned to 2f3c205e92)
Solutions
- Read the cause: EOF vs. illegal values narrows truncation vs. corruption
- Verify file integrity and re-read a clean copy; cross-check with `parquet-tools dump`
- If reproducible in reference readers, the file is malformed — regenerate at the source
- If only Flink fails, minimize the file and report to Flink (parquet component)
Defensive patterns
Strategy: try-catch
Try / catch
try {
nestedReader.readAndNewVector(...);
} catch (IOException e) {
// 'Could not read page in col %s.' — inspect root cause; deterministic per file
throw new CorruptParquetFileException(path, descriptor, e);
} Prevention
- Checksum-verify file transfers; atomic-publish finished files only
- Cross-validate suspicious files with parquet-tools before escalation
- Include column path and row-group ordinal in surrounding diagnostics
When it happens
Trigger: Page body shorter than the values reader expects for pageValueCount values; invalid value payloads for the encoding; stream position corruption after level decoding; decompression anomalies.
Common situations: Truncated/corrupt files; writers with page-sizing bugs for nested columns; files damaged in storage or transfer.
Related errors
- Error while waiting for job to be initialized
- Could not build the program from JAR file: {}
- Could not cancel job {}.
- Missing JobID. Specify a JobID to cancel a job.
- Missing JobID. Specify a Job ID to trigger a savepoint.
AI-assisted analysis of apache/flink@2f3c205e92 (2026-08-14).
Data as JSON: /api/errors/2721a3cf428cfb76.
Report an issue: GitHub.