{"record":{"id":"d0b68bc9816735e3","repo":"quarkusio/quarkus","slug":"dev-ui-problem-monitoring-of-cdi-business-method","errorCode":null,"errorMessage":"Dev UI problem: monitoring of CDI business method invocations not possible\n\t- quarkus.arc.transform-unproxyable-classes was set to false and therefore it would not be possible to apply interceptors to unproxyable bean classes\n\t- please disable the monitoring feature via quarkus.arc.dev-mode.monitoring-enabled=false or enable unproxyable classes transformation","messagePattern":"Dev UI problem: monitoring of CDI business method invocations not possible\n\t- quarkus\\.arc\\.transform-unproxyable-classes was set to false and therefore it would not be possible to apply interceptors to unproxyable bean classes\n\t- please disable the monitoring feature via quarkus\\.arc\\.dev-mode\\.monitoring-enabled=false or enable unproxyable classes transformation","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/devui/ArcDevUIProcessor.java","lineNumber":121,"sourceCode":"        }\n\n        return pageBuildItem;\n    }\n\n    @BuildStep(onlyIf = IsLocalDevelopment.class)\n    JsonRPCProvidersBuildItem createJsonRPCService() {\n        return new JsonRPCProvidersBuildItem(ArcJsonRPCService.class);\n    }\n\n    @BuildStep(onlyIf = IsLocalDevelopment.class)\n    void registerMonitoringComponents(ArcConfig config, BuildProducer<AdditionalBeanBuildItem> beans,\n            BuildProducer<AnnotationsTransformerBuildItem> annotationTransformers,\n            CustomScopeAnnotationsBuildItem customScopes, List<BeanDefiningAnnotationBuildItem> beanDefiningAnnotations) {\n        if (!config.devMode().monitoringEnabled()) {\n            return;\n        }\n        if (!config.transformUnproxyableClasses()) {\n            throw new IllegalStateException(\n                    \"Dev UI problem: monitoring of CDI business method invocations not possible\\n\\t- quarkus.arc.transform-unproxyable-classes was set to false and therefore it would not be possible to apply interceptors to unproxyable bean classes\\n\\t- please disable the monitoring feature via quarkus.arc.dev-mode.monitoring-enabled=false or enable unproxyable classes transformation\");\n        }\n        // Register beans\n        beans.produce(AdditionalBeanBuildItem.builder().setUnremovable()\n                .addBeanClasses(EventsMonitor.class, InvocationTree.class, InvocationsMonitor.class,\n                        InvocationInterceptor.class,\n                        Monitored.class)\n                .build());\n\n        // Add @Monitored to all beans\n        Set<DotName> skipNames = Set.of(DotName.createSimple(InvocationTree.class),\n                DotName.createSimple(InvocationsMonitor.class), DotName.createSimple(EventsMonitor.class));\n        annotationTransformers.produce(new AnnotationsTransformerBuildItem(AnnotationsTransformer\n                .appliedToClass()\n                .whenClass(c -> (customScopes.isScopeDeclaredOn(c)\n                        || isAdditionalBeanDefiningAnnotationOn(c, beanDefiningAnnotations))\n                        && !skipClass(c, skipNames))\n                .thenTransform(t -> t.add(Monitored.class))));","sourceCodeStart":103,"sourceCodeEnd":139,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/devui/ArcDevUIProcessor.java#L103-L139","documentation":"The Arc Dev UI monitoring feature intercepts CDI business method invocations, which requires bean classes to be proxied/transformed. If quarkus.arc.transform-unproxyable-classes=false, unproxyable bean classes cannot get the monitoring interceptor applied, so registerMonitoringComponents() fails the build with instructions to either disable monitoring or re-enable transformation.","triggerScenarios":"Setting quarkus.arc.dev-mode.monitoring-enabled=true (default) together with quarkus.arc.transform-unproxyable-classes=false in application.properties.","commonSituations":"Projects that disabled unproxyable-class transformation for build speed or legacy compatibility, then enabled Dev UI invocation monitoring; defaults colliding after an upgrade.","solutions":["Set quarkus.arc.transform-unproxyable-classes=true (remove the explicit false)","Or set quarkus.arc.dev-mode.monitoring-enabled=false to disable monitoring","Keep both properties consistent in application.properties / profiles","Review why transformation was disabled — re-enabling may fix hidden interceptor issues too"],"exampleFix":"# before\nquarkus.arc.transform-unproxyable-classes=false\n# after (option A)\nquarkus.arc.transform-unproxyable-classes=true\n# after (option B)\nquarkus.arc.dev-mode.monitoring-enabled=false","handlingStrategy":"validation","validationCode":"// application.properties check:\n// NOT both: quarkus.arc.dev-mode.monitoring-enabled=true AND quarkus.arc.transform-unproxyable-classes=false","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep monitoring-enabled and transform-unproxyable-classes consistent","Document why transform-unproxyable-classes is disabled in your project","Re-check these flags after Quarkus upgrades"],"tags":["dev-ui","cdi","configuration-conflict","monitoring"],"backgroundTag":"incompatible-config-combination","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"}