apache/flink · error · FlinkException

Failed to retrieve job list.

Error message

Failed to retrieve job list.

What it means

Thrown from AbstractColumnReader.prepareNewPage when a non-dictionary page uses an encoding other than PLAIN. The vectorized reader's generic path only decodes PLAIN data pages (booleans have their own RLE handling in BooleanColumnReader). Encodings such as DELTA_BINARY_PACKED for non-nested columns hit this branch.

Source

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

    }

    private <ClusterID> void listJobs(
            ClusterClient<ClusterID> clusterClient,
            boolean showRunning,
            boolean showScheduled,
            boolean showAll)
            throws FlinkException {
        Collection<JobStatusMessage> jobDetails;
        try {
            CompletableFuture<Collection<JobStatusMessage>> jobDetailsFuture =
                    clusterClient.listJobs();

            logAndSysout("Waiting for response...");
            jobDetails = jobDetailsFuture.get();

        } catch (Exception e) {
            Throwable cause = ExceptionUtils.stripExecutionException(e);
            throw new FlinkException("Failed to retrieve job list.", cause);
        }

        LOG.info("Successfully retrieved list of jobs");

        final List<JobStatusMessage> runningJobs = new ArrayList<>();
        final List<JobStatusMessage> scheduledJobs = new ArrayList<>();
        final List<JobStatusMessage> terminatedJobs = new ArrayList<>();
        jobDetails.forEach(
                details -> {
                    if (details.getJobState() == JobStatus.CREATED
                            || details.getJobState() == JobStatus.INITIALIZING) {
                        scheduledJobs.add(details);
                    } else if (!details.getJobState().isGloballyTerminalState()) {
                        runningJobs.add(details);
                    } else {
                        terminatedJobs.add(details);
                    }
                });

View on GitHub (pinned to 2f3c205e92)

Solutions

  1. Identify the encoding from the message and rewrite the file with PLAIN/PLAIN_DICTIONARY page encodings (disable delta encodings in the writer, e.g. parquet.writer.version or arrow writer options)
  2. Upgrade Flink so its parquet-mr vectorized reader supports the encoding
  3. Route such files through a reader that supports the encoding (e.g. convert with Spark, which reads then writes standard encodings)
  4. For nested columns some encodings are handled by NestedPrimitiveColumnReader — verify the column is actually flat before concluding the file is unreadable
Defensive patterns

Strategy: validation

Validate before calling

// Reject files containing encodings beyond the flat-reader set, up front from footer metadata
for (Encoding enc : columnChunkMetaData.getEncodings()) {
    if (enc != Encoding.PLAIN && enc != Encoding.PLAIN_DICTIONARY
            && enc != Encoding.RLE_DICTIONARY && enc != Encoding.RLE) {
        return Decision.REJECT_FILE; // boolean RLE is handled by BooleanColumnReader
    }
}

Try / catch

try {
    reader.readToVector(...);
} catch (UnsupportedOperationException e) {
    if (String.valueOf(e.getMessage()).startsWith("Unsupported encoding")) {
        convertOrReject(file); // e.g. rewrite via Spark with standard encodings
    } else throw e;
}

Prevention

When it happens

Trigger: A flat (non-nested) column written with DELTA_BINARY_PACKED, DELTA_LENGTH_BYTE_ARRAY, DELTA_BYTE_ARRAY, or RLE (for non-boolean) data pages; writers that enable delta encodings by default (e.g. parquet-cpp v2+ options, parquet-format newer defaults).

Common situations: Reading files written by Arrow/parquet-cpp with delta encodings enabled; files written by newer Spark/Impala versions enabling newer encodings; Flink's vendored parquet version lagging the writer's format features.

Related errors


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