{"record":{"id":"0b8df319a87efaab","repo":"quarkusio/quarkus","slug":"failed-to-process-method-s-s-reason-s","errorCode":null,"errorMessage":"Failed to process method '%s#%s'. Reason: %s","messagePattern":"Failed to process method '(.+?)#(.+?)'\\. Reason: (.+?)","errorType":"validation","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"independent-projects/resteasy-reactive/common/processor/src/main/java/org/jboss/resteasy/reactive/common/processor/EndpointIndexer.java","lineNumber":828,"sourceCode":"                            determineReturnType(methodContextReturnTypeOrReturnType, typeArgMapper, currentClassInfo,\n                                    actualEndpointInfo, index));\n\n            if (httpMethod == null) {\n                handleClientSubResource(method, currentMethodInfo, index);\n            }\n\n            handleAdditionalMethodProcessing((METHOD) method, currentClassInfo, currentMethodInfo, getAnnotationStore());\n            if (resourceMethodCallback != null) {\n                resourceMethodCallback.accept(\n                        new ResourceMethodCallbackEntry(this, index, basicResourceClassInfo, actualEndpointInfo,\n                                currentMethodInfo,\n                                method));\n            }\n            return method;\n        } catch (DeploymentException e) {\n            throw e;\n        } catch (RuntimeException e) {\n            throw new RuntimeException(String.format(\"Failed to process method '%s#%s'. Reason: %s\",\n                    currentMethodInfo.declaringClass().name(), currentMethodInfo, e.getMessage()), e);\n        }\n    }\n\n    protected void warnAboutMissUsedBodyParameter(DotName httpMethod, MethodInfo methodInfo) {\n        log.warnf(\"Using a body parameter with %s is strongly discouraged. Offending method is \"\n                + \"'%s#%s'\", httpMethod, methodInfo.declaringClass().name(), methodInfo);\n    }\n\n    private Function<Map<DotName, AnnotationInstance>, Boolean> skipNotRestParameters(boolean skipAllNotMethodParameter) {\n        return new Function<Map<DotName, AnnotationInstance>, Boolean>() {\n            @Override\n            public Boolean apply(Map<DotName, AnnotationInstance> anns) {\n                if (skipAllNotMethodParameter) {\n                    return anns.size() > 0\n                            && JAX_RS_ANNOTATIONS_FOR_FIELDS.stream().noneMatch(dotName -> anns.containsKey(dotName));\n                }\n                return false;","sourceCodeStart":810,"sourceCodeEnd":846,"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#L810-L846","documentation":"This is the generic wrapper RESTEasy Reactive's EndpointIndexer.createResourceMethod throws when any unexpected RuntimeException occurs while introspecting a resource method. The original message is preserved as the 'Reason:' suffix and the cause is attached. It signals a failure in the endpoint indexing phase of the Quarkus deployment, not a runtime request problem.","triggerScenarios":"Any exception thrown inside createResourceMethod while processing a resource method — e.g. failures resolving generic types, unsupported parameter/return types, reflective lookup errors on types referenced by the endpoint, or bugs in custom parameter handlers.","commonSituations":"Endpoints using exotic generic declarations that the type resolver cannot handle; custom @Context-like injections or custom param converters that throw; classpath issues where a type referenced by the endpoint is missing from the Jandex index.","solutions":["Read the 'Reason:' text and the nested cause in the stack trace to identify the original exception","Fix the resource method signature or types referenced by it according to the underlying cause","Check that all types used in the endpoint are on the deployment classpath and indexed; if the cause looks like a framework bug, search/raise a Quarkus issue with a reproducer"],"exampleFix":"// before (unindexed custom type throws during processing)\npublic String get(CustomUnindexedType param) { ... }\n// after (use a supported, indexed parameter type)\npublic String get(@QueryParam(\"id\") String id) { ... }","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    quarkusBuild(); // or start the app\n} catch (RuntimeException e) {\n    if (e.getMessage() != null && e.getMessage().startsWith(\"Failed to process method\")) {\n        log.error(\"Endpoint indexing failed: {} — inspect cause\", e.getMessage(), e.getCause());\n    } else {\n        throw e;\n    }\n}","preventionTips":["Always read the nested 'Caused by' — the wrapper hides the real reason","Keep endpoint signatures simple: concrete types, simple generics","Ensure all referenced types are on the classpath and indexed by Jandex","Reproduce with a minimal resource class when reporting to the Quarkus project"],"tags":["quarkus","resteasy-reactive","deployment","wrapper"],"backgroundTag":"deployment-processing-failed","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"}