apache/flink · critical · CliArgsException

Missing JobID. Specify a JobID to cancel a job.

Error message

Missing JobID. Specify a JobID to cancel a job.

What it means

Thrown from BooleanColumnReader.readBoolean when reading the next byte of a bit-packed boolean page fails — the underlying dataInputStream is exhausted while more boolean values are still expected per page metadata. It wraps an IOException from the stream read.

Source

Thrown at flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java:685

                                                            .toMillis(),
                                                    TimeUnit.MILLISECONDS);
                        } catch (Exception e) {
                            throw new FlinkException("Could not cancel job " + jobId + '.', e);
                        }
                        logAndSysout(
                                "Cancelled job "
                                        + jobId
                                        + ". Savepoint stored in "
                                        + savepointPath
                                        + '.');
                    });
        } else {
            final JobID jobId;

            if (cleanedArgs.length > 0) {
                jobId = parseJobId(cleanedArgs[0]);
            } else {
                throw new CliArgsException("Missing JobID. Specify a JobID to cancel a job.");
            }

            logAndSysout("Cancelling job " + jobId + '.');

            runClusterAction(
                    activeCommandLine,
                    commandLine,
                    (clusterClient, effectiveConfiguration) -> {
                        try {
                            clusterClient
                                    .cancel(jobId)
                                    .get(
                                            getClientTimeout(effectiveConfiguration).toMillis(),
                                            TimeUnit.MILLISECONDS);
                        } catch (Exception e) {
                            throw new FlinkException("Could not cancel job " + jobId + '.', e);
                        }
                    });

View on GitHub (pinned to 2f3c205e92)

Solutions

  1. Verify file integrity (size, CRC) and re-read a clean copy
  2. Check whether the boolean column reads fine in `parquet-tools`/Spark — isolate Flink-vs-file
  3. If the file is fine but Flink fails, capture a minimal reproducer and report to FLINK JIRA (parquet component)
  4. As a stopgap, rewrite the file with a standard writer
Defensive patterns

Strategy: try-catch

Try / catch

try {
    reader.readToVector(n, vector);
} catch (ParquetDecodingException e) {
    if ("Failed to read a byte".equals(e.getMessage())) {
        // boolean page truncated — quarantine and skip file
    } else throw e;
}

Prevention

When it happens

Trigger: A BOOLEAN column's PLAIN page contains fewer bytes than pageValueCount/8 rounded up; definition-level counts disagree with actual data bytes; truncated or corrupted boolean pages.

Common situations: Corrupt boolean columns in files from object stores; files from writers with boolean page-sizing bugs; partial writes of the last row group.

Related errors


AI-assisted analysis of apache/flink@2f3c205e92 (2026-08-14). Data as JSON: /api/errors/36bea291dfa0a44e. Report an issue: GitHub.