{"record":{"id":"2d5374d28e10b5d5","repo":"quarkusio/quarkus","slug":"no-observer-type-found-for-observertype","errorCode":null,"errorMessage":"No observer type found for: ${observerType}","messagePattern":"No observer type found for: (.+?)","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/ComponentsProviderGenerator.java","lineNumber":396,"sourceCode":"    private void generateAddObservers(String generatedName, Gizmo gizmo, CodeGenInfo info,\n            Map<ObserverInfo, String> observerToGeneratedName) {\n\n        for (Container<ObserverGroup> container : info.observers()) {\n            gizmo.class_(container.className(generatedName, ADD_OBSERVERS), cc -> {\n                cc.final_();\n                for (ObserverGroup group : container) {\n                    cc.staticMethod(ADD_OBSERVERS + group.id(), mc -> {\n                        mc.packagePrivate();\n                        mc.returning(void.class);\n                        ParamVar beanIdToBean = mc.parameter(\"beanIdToBean\", Map.class);\n                        ParamVar observers = mc.parameter(\"observers\", List.class);\n                        mc.body(bc -> {\n                            for (ObserverInfo observer : group.observers()) {\n                                ClassDesc observerType = observerToGeneratedName.containsKey(observer)\n                                        ? ClassDesc.of(observerToGeneratedName.get(observer))\n                                        : null;\n                                if (observerType == null) {\n                                    throw new IllegalStateException(\"No observer type found for: \" + observerType);\n                                }\n                                List<ClassDesc> params = new ArrayList<>();\n                                List<Expr> args = new ArrayList<>();\n\n                                if (!observer.isSynthetic()) {\n                                    List<InjectionPointInfo> injectionPoints = observer.getInjection().injectionPoints.stream()\n                                            .filter(ip -> !BuiltinBean.resolvesTo(ip))\n                                            .toList();\n                                    // declaring bean\n                                    params.add(ClassDesc.of(Supplier.class.getName()));\n                                    args.add(bc.withMap(beanIdToBean)\n                                            .get(Const.of(observer.getDeclaringBean().getIdentifier())));\n                                    // injections\n                                    for (InjectionPointInfo injectionPoint : injectionPoints) {\n                                        params.add(ClassDesc.of(Supplier.class.getName()));\n                                        args.add(bc.withMap(beanIdToBean).get(\n                                                Const.of(injectionPoint.getResolvedBean().getIdentifier())));\n                                    }","sourceCodeStart":378,"sourceCodeEnd":414,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/ComponentsProviderGenerator.java#L378-L414","documentation":"During observer registration in ComponentsProvider generation, each observer must have a generated class name in observerToGeneratedName. A missing entry means no observer type was generated, so the generator cannot emit the addObserver call and throws IllegalStateException. (Note: the throw passes the local ClassDesc variable observerType, which is null, instead of the observer — a minor message quirk.)","triggerScenarios":"generateAddObservers iterates group.observers(); an ObserverInfo is absent from observerToGeneratedName, so observerType is null and the IllegalStateException is thrown.","commonSituations":"Synthetic observers registered by extensions without generated backing classes; stale incremental-build artifacts; ArC generator bugs after Quarkus version changes.","solutions":["Clean rebuild (mvn clean install) to regenerate components","Verify the extension registering the observer uses supported registration APIs","If reproducible on a minimal project, report as an ArC bug or try another Quarkus version"],"exampleFix":"null","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    quarkusBuild.start();\n} catch (IllegalStateException e) {\n    if (e.getMessage() != null && e.getMessage().startsWith(\"No observer type found for:\")) {\n        logger.errorf(\"Clean rebuild or report ArC bug: %s\", e.getMessage());\n    }\n    throw e;\n}","preventionTips":["Do a clean build after Quarkus version bumps","Use supported extension APIs for observer registration","File an ArC issue with a reproducer if the error persists"],"tags":["arc","codegen","observer","build-time","internal"],"backgroundTag":"missing-generated-observer-type","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"}