apache/druid · error · IOException (IOE)
Could not load URI [ ]
Error message
Could not load URI [%s]
What it means
Failure wrapper in S3DataSegmentPuller.getInputStream: opening the S3 object at the given URI threw an SdkException (network, auth, permission, missing object other than handled cases), which is rethrown as an IOException reporting that the URI could not be loaded.
Solutions
- Inspect the SdkException cause: check bucket/path spelling, credentials, and IAM permissions.
- Confirm the object exists at the URI.
- Retry if the cause is transient; otherwise fix storage configuration.
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPuller.java:179 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/32b4f18ad8f579f0.
Report an issue: GitHub.
Appendix: source
Thrown at extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPuller.java:179
if (S3Utils.S3RETRY.apply(e)) {
throw new IOException("Recoverable exception", e);
}
}
throw new RuntimeException(e);
}
}
};
return byteSource;
}
@Override
public InputStream getInputStream(URI uri) throws IOException
{
try {
return buildFileObject(uri).openInputStream();
}
catch (SdkException e) {
throw new IOE(e, "Could not load URI [%s]", uri);
}
}
public FileObject buildFileObject(final URI uri) throws SdkException
{
final CloudObjectLocation coords = new CloudObjectLocation(S3Utils.checkURI(uri));
final String path = uri.getPath();
return new FileObject()
{
ResponseInputStream<GetObjectResponse> s3InputStream = null;
HeadObjectResponse objectMetadata = null;
@Override
public URI toUri()
{
return uri;
}View on GitHub (pinned to 9b90983fd2)