{"record":{"id":"325c13229100ac14","repo":"quarkusio/quarkus","slug":"s-not-supported-by-s","errorCode":null,"errorMessage":"%s not supported by %s","messagePattern":"(.+?) not supported by (.+?)","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"extensions/signals/runtime/src/main/java/io/quarkus/signals/runtime/impl/ReceiverManager.java","lineNumber":152,"sourceCode":"\n    @Override\n    public List<ReceiverInfo> resolveReceivers(TypeLiteral<?> signalType, Annotation... qualifiers) {\n        return cast(resolveReceivers(signalType.getType(), Set.of(qualifiers)));\n    }\n\n    @Override\n    public <SIGNAL> ReceiverDefinition<SIGNAL> newReceiver(Class<SIGNAL> signalType) {\n        return new ReceiverDefinitionImpl<>(signalType, beanContainer, this::register);\n    }\n\n    @Override\n    public <SIGNAL> ReceiverDefinition<SIGNAL> newReceiver(TypeLiteral<SIGNAL> signalType) {\n        return new ReceiverDefinitionImpl<>(signalType.getType(), beanContainer, this::register);\n    }\n\n    private Registration register(CallbackReceiver<?, ?> receiver) {\n        if (!executor.supportsExecutionModel(receiver.executionModel())) {\n            throw new IllegalStateException(\n                    \"%s not supported by %s\".formatted(receiver.executionModel(), executor.getClass().getName()));\n        }\n        receivers.put(receiver.id(), wrapReceiver(receiver));\n        invalidateCache(receiver);\n        return new Registration() {\n            @Override\n            public void unregister() {\n                receivers.remove(receiver.id());\n                invalidateCache(receiver);\n            }\n        };\n    }\n\n    private Receiver<?, ?> wrapReceiver(Receiver<?, ?> receiver) {\n        if (interceptors.isEmpty()) {\n            return receiver;\n        }\n        return new InterceptedReceiver<>(receiver, interceptors);","sourceCodeStart":134,"sourceCodeEnd":170,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/signals/runtime/src/main/java/io/quarkus/signals/runtime/impl/ReceiverManager.java#L134-L170","documentation":"When a callback receiver is registered programmatically, ReceiverManager checks that the chosen executor supports the receiver's required execution model (e.g. blocking vs event-loop). If the executor cannot run that execution model, registration fails with an IllegalStateException stating which execution model is unsupported and by which executor class.","triggerScenarios":"Calling newReceiver(signalType) and completing the ReceiverDefinition with an execution model (from the CallbackReceiver) that the SignalExecutor used by the bean container does not support — e.g. registering a blocking receiver on an event-loop-only executor.","commonSituations":"Registering receivers manually in a @Startup bean and marking them as blocking while running on a Vert.x/event-loop executor; copying receiver registration code from an example using a different executor configuration.","solutions":["Change the receiver's declared execution model to one the executor supports (e.g. use a non-blocking/event-loop model)","Configure or select an executor that supports the required execution model","Register the receiver through supported configuration instead of manual registration if the model mismatch is unintentional"],"exampleFix":"// before\nbuilder.withExecutionModel(ExecutionModel.BLOCKING);\n// after\nbuilder.withExecutionModel(ExecutionModel.EVENT_LOOP);","handlingStrategy":"validation","validationCode":"if (!executor.supportsExecutionModel(model)) {\n    throw new IllegalArgumentException(model + \" unsupported by \" + executor.getClass().getName());\n}","typeGuard":null,"tryCatchPattern":"try { definition.register(); }\ncatch (IllegalStateException e) { log.errorf(\"Receiver registration failed: %s\", e.getMessage()); }","preventionTips":["Match the execution model to where you register: event-loop for Vert.x context, blocking for worker context","Inspect executor.supportsExecutionModel before registering","Avoid hardcoding BLOCKING in shared registration helpers"],"tags":["executor","execution-model","signals","registration"],"backgroundTag":"unsupported-execution-model","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"}