{"record":{"id":"4fc9869701f57f1f","repo":"apache/druid","slug":"cannot-open-character-sequence","errorCode":null,"errorMessage":"Cannot open character sequence","messagePattern":"Cannot open character sequence","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":254,"sourceCode":"        }\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\");\n      }\n\n      @Override\n      public long getLastModified()\n      {\n        if (s3InputStream != null) {\n          Instant lastModified = s3InputStream.response().lastModified();\n          return lastModified != null ? lastModified.toEpochMilli() : 0L;\n        }\n        if (objectMetadata == null) {\n          objectMetadata = S3Utils.getSingleObjectMetadata(s3Client, coords.getBucket(), coords.getPath());\n        }","sourceCodeStart":236,"sourceCodeEnd":272,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPuller.java#L236-L272","documentation":"Unsupported-operation sentinel in S3DataSegmentPuller's FileObject: getCharContent() is rejected since the S3 object is exposed only as a binary stream and cannot be materialized as a character sequence through the FileObject contract.","triggerScenarios":"Thrown at extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPuller.java:254 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Read via openInputStream() and decode characters explicitly if needed.","Avoid calling getCharContent() on S3-backed FileObjects."],"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"}