apache/druid · error · UnsupportedOperationException (UOE)
Cannot open reader
Error message
Cannot open reader
What it means
Unsupported-operation sentinel in S3DataSegmentPuller's FileObject: openReader() is rejected because character-reader semantics are not meaningful for a binary S3 object; the FileObject only supports binary InputStream access.
Solutions
- Use openInputStream() and wrap with an explicit charset Reader if text access is required.
- Do not use this FileObject with APIs that require openReader().
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPuller.java:248 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07).
Data as JSON: /api/errors/b06d1eb30c541336.
Report an issue: GitHub.
Appendix: source
Thrown at extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPuller.java:248
}
catch (SdkException e) {
if (e instanceof S3Exception && ((S3Exception) e).statusCode() == 404) {
throw new IOE(e, "IndexFile[s3://%s/%s] does not exist", coords.getBucket(), coords.getPath());
}
throw new IOE(e, "Could not load S3 URI [%s]", uri);
}
}
@Override
public OutputStream openOutputStream()
{
throw new UOE("Cannot stream S3 output");
}
@Override
public Reader openReader(boolean ignoreEncodingErrors)
{
throw new UOE("Cannot open reader");
}
@Override
public CharSequence getCharContent(boolean ignoreEncodingErrors)
{
throw new UOE("Cannot open character sequence");
}
@Override
public Writer openWriter()
{
throw new UOE("Cannot open writer");
}
@Override
public long getLastModified()
{
if (s3InputStream != null) {View on GitHub (pinned to 9b90983fd2)