{"record":{"id":"146fe0d6a1a60081","repo":"apache/druid","slug":"cannot-stream-s3-output","errorCode":null,"errorMessage":"Cannot stream S3 output","messagePattern":"Cannot stream S3 output","errorType":"exception","errorClass":"UnsupportedOperationException (UOE)","httpStatus":null,"severity":"error","filePath":"extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPuller.java","lineNumber":242,"sourceCode":"            @Override\n            public void close() throws IOException\n            {\n              closer.close();\n            }\n          };\n        }\n        catch (SdkException e) {\n          if (e instanceof S3Exception && ((S3Exception) e).statusCode() == 404) {\n            throw new IOE(e, \"IndexFile[s3://%s/%s] does not exist\", coords.getBucket(), coords.getPath());\n          }\n          throw new IOE(e, \"Could not load S3 URI [%s]\", uri);\n        }\n      }\n\n      @Override\n      public OutputStream openOutputStream()\n      {\n        throw new UOE(\"Cannot stream S3 output\");\n      }\n\n      @Override\n      public Reader openReader(boolean ignoreEncodingErrors)\n      {\n        throw new UOE(\"Cannot open reader\");\n      }\n\n      @Override\n      public CharSequence getCharContent(boolean ignoreEncodingErrors)\n      {\n        throw new UOE(\"Cannot open character sequence\");\n      }\n\n      @Override\n      public Writer openWriter()\n      {\n        throw new UOE(\"Cannot open writer\");","sourceCodeStart":224,"sourceCodeEnd":260,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPuller.java#L224-L260","documentation":"Unsupported-output sentinel in S3DataSegmentPuller's FileObject: openOutputStream() is rejected because the puller is read-only — S3 segment files can only be read through this FileObject, never written, so any attempt to stream output to S3 via this abstraction fails fast.","triggerScenarios":"Thrown at extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPuller.java:242 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Do not use S3DataSegmentPuller's FileObject for writing; use the S3 uploader/storage module for writes.","Refactor code that expects a writable FileObject to target a local filesystem instead."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9b90983fd291f26935af934383ce360473179e4d","analyzedAt":"2026-09-07T13:32:30.957Z","contentChangedAt":"2026-09-07T13:32:30.957Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}