{"record":{"id":"97ac17b6547ce2f9","repo":"prestodb/presto","slug":"hudi-cannot-generate-split","errorCode":"HUDI_CANNOT_GENERATE_SPLIT","errorMessage":"Error generating Hudi split","messagePattern":"Error generating Hudi split","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"error","filePath":"presto-hudi/src/main/java/com/facebook/presto/hudi/split/HudiBackgroundSplitLoader.java","lineNumber":100,"sourceCode":"        List<HudiPartitionSplitGenerator> splitGeneratorList = new ArrayList<>();\n        List<Future> splitGeneratorFutures = new ArrayList<>();\n        ConcurrentLinkedQueue<String> concurrentPartitionQueue = new ConcurrentLinkedQueue<>(partitions);\n\n        // Start a number of partition split generators to generate the splits in parallel\n        for (int i = 0; i < splitGeneratorNumThreads; i++) {\n            HudiPartitionSplitGenerator generator = new HudiPartitionSplitGenerator(\n                    session, metastore, layout, fsView, asyncQueue, concurrentPartitionQueue, latestInstant);\n            splitGeneratorList.add(generator);\n            splitGeneratorFutures.add(splitGeneratorExecutorService.submit(generator));\n        }\n\n        // Wait for all split generators to finish\n        for (Future future : splitGeneratorFutures) {\n            try {\n                future.get();\n            }\n            catch (InterruptedException | ExecutionException e) {\n                throw new PrestoException(HUDI_CANNOT_GENERATE_SPLIT, \"Error generating Hudi split\", e);\n            }\n        }\n        asyncQueue.finish();\n        log.debug(\"Finished getting all splits in %d ms\", timer.endTimer());\n    }\n}\n","sourceCodeStart":82,"sourceCodeEnd":107,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-hudi/src/main/java/com/facebook/presto/hudi/split/HudiBackgroundSplitLoader.java#L82-L107","documentation":"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.","triggerScenarios":"Thrown at presto-hudi/src/main/java/com/facebook/presto/hudi/split/HudiBackgroundSplitLoader.java:100 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the exception's cause for the real failure (e.g. missing partition files, listing errors, IO failures)","Retry the query if the underlying failure was transient (network/metastore hiccup)","Check the Hudi timeline/table for corrupted or in-flight commits that break partition listing"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}