prestodb/presto · error · PrestoException

HUDI_CANNOT_GENERATE_SPLIT

HUDI_CANNOT_GENERATE_SPLIT

Error message

Error generating Hudi split

What it means

HudiBackgroundSplitLoader.run fans out partition split-generator threads and waits on their futures; any ExecutionException/Throwable from split generation is caught and rethrown as a PrestoException with this generic message, hiding the per-partition cause that must be recovered from the exception's cause chain.

Source

Thrown at presto-hudi/src/main/java/com/facebook/presto/hudi/split/HudiBackgroundSplitLoader.java:100

        List<HudiPartitionSplitGenerator> splitGeneratorList = new ArrayList<>();
        List<Future> splitGeneratorFutures = new ArrayList<>();
        ConcurrentLinkedQueue<String> concurrentPartitionQueue = new ConcurrentLinkedQueue<>(partitions);

        // Start a number of partition split generators to generate the splits in parallel
        for (int i = 0; i < splitGeneratorNumThreads; i++) {
            HudiPartitionSplitGenerator generator = new HudiPartitionSplitGenerator(
                    session, metastore, layout, fsView, asyncQueue, concurrentPartitionQueue, latestInstant);
            splitGeneratorList.add(generator);
            splitGeneratorFutures.add(splitGeneratorExecutorService.submit(generator));
        }

        // Wait for all split generators to finish
        for (Future future : splitGeneratorFutures) {
            try {
                future.get();
            }
            catch (InterruptedException | ExecutionException e) {
                throw new PrestoException(HUDI_CANNOT_GENERATE_SPLIT, "Error generating Hudi split", e);
            }
        }
        asyncQueue.finish();
        log.debug("Finished getting all splits in %d ms", timer.endTimer());
    }
}

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Inspect the exception's cause for the real failure (e.g. missing partition files, listing errors, IO failures)
  2. Retry the query if the underlying failure was transient (network/metastore hiccup)
  3. Check the Hudi timeline/table for corrupted or in-flight commits that break partition listing
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at presto-hudi/src/main/java/com/facebook/presto/hudi/split/HudiBackgroundSplitLoader.java:100 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04). Data as JSON: /api/errors/97ac17b6547ce2f9. Report an issue: GitHub.