{"record":{"id":"65d068c1a28645fc","repo":"quarkusio/quarkus","slug":"failed-to-generate-the-capability-error-report-out","errorCode":null,"errorMessage":"Failed to generate the capability error report out of conflicts ${conflicts} and unsatisfied ${missing}","messagePattern":"Failed to generate the capability error report out of conflicts (.+?) and unsatisfied (.+?)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"warning","filePath":"independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/CapabilityErrors.java","lineNumber":35,"sourceCode":"    public void addConflict(String capability, String provider) {\n        conflicts.computeIfAbsent(capability, k -> new ArrayList<>()).add(provider);\n    }\n\n    public void addMissing(String capability, String consumer) {\n        missing.computeIfAbsent(capability, k -> new ArrayList<>()).add(consumer);\n    }\n\n    public boolean isEmpty() {\n        return conflicts.isEmpty() && missing.isEmpty();\n    }\n\n    public String report() {\n        final StringWriter sw = new StringWriter();\n        try (BufferedWriter writer = new BufferedWriter(sw)) {\n            reportProblems(conflicts, false, writer);\n            reportProblems(missing, true, writer);\n        } catch (IOException e) {\n            throw new RuntimeException(\"Failed to generate the capability error report out of conflicts \" + conflicts\n                    + \" and unsatisfied \" + missing, e);\n        }\n        return sw.getBuffer().toString();\n    }\n\n    private static void reportProblems(Map<String, List<String>> problems, boolean missing, BufferedWriter writer)\n            throws IOException {\n        if (problems.isEmpty()) {\n            return;\n        }\n        if (missing) {\n            writer.write(\n                    \"The following capability requirements aren't satisfied by the Quarkus extensions present on the classpath:\");\n        } else {\n            writer.write(\"Please make sure there is only one provider of the following capabilities:\");\n        }\n        // To have a consistent report over multiple builds, the capabilities and providers are ordered alphabetically\n        final List<String> capabilities = new ArrayList<>(problems.size());","sourceCodeStart":17,"sourceCodeEnd":53,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/bootstrap/app-model/src/main/java/io/quarkus/bootstrap/model/CapabilityErrors.java#L17-L53","documentation":"CapabilityErrors.report() writes the conflict and missing-capability problem report into a StringWriter; if that buffered writing throws IOException, it is wrapped in a RuntimeException describing the conflicts and unsatisfied sets. This indicates a failure formatting the capability error report, not the capability problem itself.","triggerScenarios":"report() called from aggregateCapabilities/conflict or missing-capability validation when BufferedWriter/StringWriter operations raise IOException — practically only an unexpected low-level I/O failure.","commonSituations":"Extremely rare in practice since StringWriter never throws IOException normally; can appear if the method is overridden/subclassed, or during resource exhaustion (OutOfMemory-like conditions).","solutions":["Inspect the cause exception chained in the RuntimeException.","Re-run the application build to regenerate the capability error report.","If reproducible, replace the report generation or upgrade Quarkus — this is a framework-level bug."],"exampleFix":"// before\nString report = capabilityErrors.report(); // wrapped RuntimeException\n// after\nString report;\ntry {\n    report = capabilityErrors.report();\n} catch (RuntimeException e) {\n    LOG.errorf(e, \"Capability conflicts=%s missing=%s\", conflicts, missing);\n    throw e;\n}","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    return capabilityErrors.report();\n} catch (RuntimeException e) {\n    LOG.errorf(e, \"Capability report generation failed (conflicts=%s, missing=%s)\", conflicts, missing);\n    return \"conflicts=\" + conflicts + \"; missing=\" + missing; // raw fallback\n}","preventionTips":["Treat this as a framework bug and inspect the chained cause.","Upgrade Quarkus if reproducible.","Log raw conflicts/missing sets so capability issues remain diagnosable."],"tags":["capabilities","io","reporting"],"backgroundTag":"capability-report-generation-failed","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}