{"record":{"id":"4cb739949d0417bf","repo":"quarkusio/quarkus","slug":"cannot-create-a-encoder-if-request-is-a-trace","errorCode":null,"errorMessage":"Cannot create a Encoder if request is a TRACE","messagePattern":"Cannot create a Encoder if request is a TRACE","errorType":"exception","errorClass":"ErrorDataEncoderException","httpStatus":null,"severity":"error","filePath":"independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/impl/multipart/PausableHttpPostRequestEncoder.java","lineNumber":278,"sourceCode":"     *        True if the FORM is a ENCTYPE=\"multipart/form-data\"\n     * @param charset\n     *        the charset to use as default\n     * @param encoderMode\n     *        the mode for the encoder to use. See {@link EncoderMode} for the details.\n     * @throws NullPointerException\n     *         for request or charset or factory\n     * @throws ErrorDataEncoderException\n     *         if the request is a TRACE\n     */\n    public PausableHttpPostRequestEncoder(\n            HttpDataFactory factory, HttpRequest request, boolean multipart, int maxChunkSize,\n            Charset charset, EncoderMode encoderMode)\n            throws ErrorDataEncoderException {\n        this.request = checkNotNull(request, \"request\");\n        this.charset = checkNotNull(charset, \"charset\");\n        this.factory = checkNotNull(factory, \"factory\");\n        if (HttpMethod.TRACE.equals(request.method())) {\n            throw new ErrorDataEncoderException(\"Cannot create a Encoder if request is a TRACE\");\n        }\n        // Fill default values\n        bodyListDatas = new ArrayList<>();\n        // default mode\n        isLastChunk = false;\n        isLastChunkSent = false;\n        isMultipart = multipart;\n        this.maxChunkSize = maxChunkSize;\n        multipartHttpDatas = new ArrayList<>();\n        this.encoderMode = encoderMode;\n        if (isMultipart) {\n            initDataMultipart();\n        }\n    }\n\n    /**\n     * Clean all HttpDatas (on Disk) for the current request.\n     */","sourceCodeStart":260,"sourceCodeEnd":296,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/impl/multipart/PausableHttpPostRequestEncoder.java#L260-L296","documentation":"PausableHttpPostRequestEncoder refuses construction when the target request uses the HTTP TRACE method, because TRACE requests must not carry a body. It throws ErrorDataEncoderException in the constructor.","triggerScenarios":"new PausableHttpPostRequestEncoder(HttpRequest with method TRACE, isMultipart, charset, factory, encoderMode).","commonSituations":"Configuring a client request factory with a wrong default method; generic request-building code that attaches a multipart body without checking the verb.","solutions":["Use POST or PUT for requests with a multipart body instead of TRACE","Check request.method() before creating the encoder and skip body encoding for TRACE","Refactor shared request-building code to select method-specific encoding paths"],"exampleFix":"// before\nencoder = new PausableHttpPostRequestEncoder(request, true, charset, factory, mode);\n// after\nif (!HttpMethod.TRACE.equals(request.method())) {\n    encoder = new PausableHttpPostRequestEncoder(request, true, charset, factory, mode);\n}","handlingStrategy":"validation","validationCode":"if (HttpMethod.TRACE.equals(request.method())) { throw new IllegalArgumentException(\"TRACE must not carry a body\"); }","typeGuard":"null","tryCatchPattern":"try { encoder = new PausableHttpPostRequestEncoder(request, true, cs, f, mode); } catch (ErrorDataEncoderException e) { /* fall back to bodyless request */ }","preventionTips":["Only attach multipart bodies to POST/PUT requests","Validate the HTTP method at the request-builder layer","Keep default-method configuration separate from body-encoding paths"],"tags":["http","multipart","http-method","resteasy-reactive"],"backgroundTag":"invalid-http-method","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"}