{"record":{"id":"0c46fd422072258d","repo":"quarkusio/quarkus","slug":"can-only-inject-asyncresponse-on-methods-marked-s","errorCode":null,"errorMessage":"Can only inject AsyncResponse on methods marked @Suspended on ","messagePattern":"Can only inject AsyncResponse on methods marked @Suspended on ","errorType":"validation","errorClass":"DeploymentException","httpStatus":null,"severity":"error","filePath":"independent-projects/resteasy-reactive/common/processor/src/main/java/org/jboss/resteasy/reactive/common/processor/EndpointIndexer.java","lineNumber":1536,"sourceCode":"                        currentMethodInfo);\n            }\n        }\n\n        if (!typeHandled) {\n            elementType = toClassName(paramType, currentClassInfo, actualEndpointInfo, index);\n            addReaderForType(additionalReaders, paramType);\n\n            if (type != ParameterType.CONTEXT && type != ParameterType.BEAN && type != ParameterType.BODY\n                    && type != ParameterType.ASYNC_RESPONSE && type != ParameterType.MULTI_PART_FORM) {\n                handleOtherParam(existingConverters, errorLocation, hasRuntimeConverters, builder, elementType,\n                        currentMethodInfo);\n            }\n            if (type == ParameterType.CONTEXT && elementType.equals(SseEventSink.class.getName())) {\n                builder.setSse(true);\n            }\n        }\n        if (suspendedAnnotation != null && !elementType.equals(AsyncResponse.class.getName())) {\n            throw new DeploymentException(\n                    \"Can only inject AsyncResponse on methods marked @Suspended on \" + builder.getErrorLocation());\n        }\n        if (builder.isSingle() && builder.getSeparator() != null) {\n            throw new DeploymentException(\n                    \"Single parameters should not be marked with @Separator on \" + builder.getErrorLocation());\n        }\n        builder.setElementType(elementType);\n        return builder;\n    }\n\n    private boolean isFormParamConvertible(Type paramType) {\n        // let's not call the array converter for byte[] for multipart\n        if (paramType.kind() == Kind.ARRAY\n                && paramType.asArrayType().constituent().kind() == Kind.PRIMITIVE\n                && paramType.asArrayType().constituent().asPrimitiveType().primitive() == Primitive.BYTE) {\n            return false;\n        } else {\n            return true;","sourceCodeStart":1518,"sourceCodeEnd":1554,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/resteasy-reactive/common/processor/src/main/java/org/jboss/resteasy/reactive/common/processor/EndpointIndexer.java#L1518-L1554","documentation":"Build-time validation error in EndpointIndexer: an endpoint method declares a parameter of type AsyncResponse but is not annotated with @Suspended, which RESTEasy Reactive requires to enable suspended async handling. The method/class context is appended to the message.","triggerScenarios":"Thrown at independent-projects/resteasy-reactive/common/processor/src/main/java/org/jboss/resteasy/reactive/common/processor/EndpointIndexer.java:1536 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Annotate the AsyncResponse parameter with @Suspended","Or use Uni/CompletionStage return types for async endpoints instead"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}