{"record":{"id":"41af5d4bcd47ae92","repo":"OpenFeign/feign","slug":"streaming-decoding-is-not-supported","errorCode":null,"errorMessage":"Streaming Decoding is not supported.","messagePattern":"Streaming Decoding is not supported\\.","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"reactive/src/main/java/feign/reactive/ReactiveFeign.java","lineNumber":57,"sourceCode":"\n    /**\n     * Build the Feign instance.\n     *\n     * @return a new Feign Instance.\n     */\n    @Override\n    public Feign internalBuild() {\n      if (!(this.contract instanceof ReactiveDelegatingContract)) {\n        super.contract(new ReactiveDelegatingContract(this.contract));\n      } else {\n        super.contract(this.contract);\n      }\n      return super.internalBuild();\n    }\n\n    @Override\n    public Feign.Builder doNotCloseAfterDecode() {\n      throw new UnsupportedOperationException(\"Streaming Decoding is not supported.\");\n    }\n  }\n}\n","sourceCodeStart":39,"sourceCodeEnd":61,"githubUrl":"https://github.com/OpenFeign/feign/blob/e2a1e27560a1e68840c34f031afca88b36096e30/reactive/src/main/java/feign/reactive/ReactiveFeign.java#L39-L61","documentation":"The reactive Feign builder overrides doNotCloseAfterDecode() to throw UnsupportedOperationException, because streaming (keep-alive after decode) semantics conflict with the reactive model where the publisher itself controls consumption and connection release. Calling this builder option on the reactive builder always fails immediately.","triggerScenarios":"Calling builder.doNotCloseAfterDecode() on ReactiveFeign.Builder / ReactorFeign.Builder / RxJavaFeign.Builder while configuring the client.","commonSituations":"Porting configuration code from a streaming-capable Feign builder to the reactive builder; enabling streaming decode globally in shared builder utility code.","solutions":["Remove the doNotCloseAfterDecode() call from the reactive builder configuration","Obtain streaming behavior through the reactive publisher itself (e.g. Flux<T> with backpressure) instead","If streaming decode is truly required, use the non-reactive Feign builder that supports it"],"exampleFix":"// before\nReactorFeign.builder().doNotCloseAfterDecode().target(Api.class, url);\n// after\nReactorFeign.builder().target(Api.class, url);\n","handlingStrategy":"type-guard","validationCode":null,"typeGuard":"if (builder instanceof feign.reactive.ReactiveFeign.Builder) {\n  // do not call doNotCloseAfterDecode()\n}","tryCatchPattern":null,"preventionTips":["Keep reactive builder configuration minimal; don't copy streaming options from non-reactive builders","Centralize builder setup per module so incompatible options never mix"],"tags":["reactive","unsupported-operation","builder"],"backgroundTag":"unsupported-operation","analyzedSha":"e2a1e27560a1e68840c34f031afca88b36096e30","analyzedAt":"2026-09-10T12:37:37.238Z","contentChangedAt":"2026-09-10T12:37:37.238Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}