{"record":{"id":"aaa63442f5665875","repo":"quarkusio/quarkus","slug":"unable-to-read-the-resolved-model-from-resolved","errorCode":null,"errorMessage":"Unable to read the resolved model from: ${resolvedModelPath}","messagePattern":"Unable to read the resolved model from: (.+?)","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"core/processor/src/main/java/io/quarkus/annotation/processor/documentation/config/ConfigDocExtensionProcessor.java","lineNumber":102,"sourceCode":"\n        ConfigResolver configResolver = new ConfigResolver(config, utils, configCollector);\n\n        // the model is not written in the jar file\n        JavadocElements javadocElements = configResolver.resolveJavadoc();\n        if (!javadocElements.isEmpty()) {\n            utils.filer().writeModel(Outputs.QUARKUS_CONFIG_DOC_JAVADOC, javadocElements);\n        }\n\n        ResolvedModel resolvedModel = configResolver.resolveModel();\n        if (!resolvedModel.isEmpty()) {\n            Path resolvedModelPath = utils.filer().writeModel(Outputs.QUARKUS_CONFIG_DOC_MODEL, resolvedModel);\n\n            if (config.isDebug()) {\n                try {\n                    utils.processingEnv().getMessager().printMessage(Kind.NOTE,\n                            \"Resolved model:\\n\\n\" + Files.readString(resolvedModelPath));\n                } catch (IOException e) {\n                    throw new IllegalStateException(\"Unable to read the resolved model from: \" + resolvedModelPath, e);\n                }\n            }\n        }\n\n        // Generate files that will be stored in the jar and can be consumed freely.\n        // We generate JSON files to avoid requiring an additional dependency to the YAML mapper\n        if (!javadocElements.isEmpty()) {\n            utils.filer().writeJson(Outputs.META_INF_QUARKUS_CONFIG_JAVADOC_JSON, javadocElements);\n        }\n        if (!resolvedModel.isEmpty()) {\n            utils.filer().writeJson(Outputs.META_INF_QUARKUS_CONFIG_MODEL_JSON, resolvedModel);\n        }\n        if (!javadocElements.isEmpty() || !resolvedModel.isEmpty()) {\n            utils.filer().write(Outputs.META_INF_QUARKUS_CONFIG_MODEL_VERSION, \"1\");\n        }\n    }\n}\n","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/core/processor/src/main/java/io/quarkus/annotation/processor/documentation/config/ConfigDocExtensionProcessor.java#L84-L120","documentation":"ConfigDocExtensionProcessor.finalizeProcessing, when debug is enabled, tries to read the resolved config model file it previously wrote to report it via the annotation processor Messager. If that file cannot be read (missing, locked, or IO error), it wraps the IOException in an IllegalStateException naming the path.","triggerScenarios":"Running the annotation processor with debug enabled (quarkus-extension.debug or Options debug flag) and the resolved model file at resolvedModelPath is missing, deleted, unreadable (permissions), or the filesystem fails mid-processing.","commonSituations":"Debugging extension doc generation on a read-only or cleaned target directory; antivirus/OS locking files in target/; parallel builds racing to clean target while the processor reads the model.","solutions":["Re-run the build (transient IO issue) ensuring target/ is not cleaned concurrently","Check file permissions on the resolved model path","Disable processor debug mode if you don't need the model dump","Report a processor bug if it reproduces consistently — the processor should tolerate its own debug read failing"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if (Files.notExists(resolvedModelPath) || !Files.isReadable(resolvedModelPath)) {\n    log.warn(\"Resolved model not readable, skipping debug dump\");\n    return;\n}","typeGuard":null,"tryCatchPattern":"try {\n    String model = Files.readString(resolvedModelPath);\n} catch (IOException e) {\n    // tolerate debug-dump failure; do not fail annotation processing\n    processingEnv.getMessager().printMessage(Kind.WARNING, \"Could not dump resolved model: \" + e.getMessage());\n}","preventionTips":["Don't clean target/ concurrently with annotation processing","Disable processor debug mode outside active debugging","Check disk permissions in CI containers","Report persistent reproduction as a processor bug"],"tags":["annotation-processor","documentation","debug","io"],"backgroundTag":"file-read-failed","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}