apache/druid · error · IllegalArgumentException (IAE)
Do not know how to load file type at
Error message
Do not know how to load file type at [%s]
What it means
Content-type guard in S3DataSegmentPuller.getSegmentFiles: while listing a segment's S3 prefix, an object was found whose key has a file type the puller does not know how to load (unrecognized extension/index file), so segment download aborts because the expected segment files are missing or misnamed in the bucket.
Solutions
- Verify the S3 location actually contains a complete Druid segment (index.zip/druid-*.tar.gz layout).
- Check for a partially uploaded or manually moved segment directory.
- Re-push the segment from deep storage or re-run the affected task.
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPuller.java:130 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/b43b692f103c4296.
Report an issue: GitHub.
Appendix: source
Thrown at extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPuller.java:130
.prefix(s3Coords.getPath())
.build();
final ListObjectsV2Response list = S3Utils.retryS3Operation(
() -> s3Client.listObjectsV2(request)
);
FileUtils.FileCopyResult copyResult = new FileUtils.FileCopyResult();
for (S3Object objectSummary : list.contents()) {
final CloudObjectLocation objectLocation = S3Utils.summaryToCloudObjectLocation(objectSummary, s3Coords.getBucket());
final URI uri = objectLocation.toUri(S3StorageDruidModule.SCHEME);
final ByteSource byteSource = getByteSource(uri);
final File outFile = new File(outDir, Paths.get(objectLocation.getPath()).getFileName().toString());
outFile.createNewFile();
final FileUtils.FileCopyResult result = FileUtils.retryCopy(byteSource, outFile, S3Utils.S3RETRY, 3);
copyResult.addFiles(result.getFiles());
}
log.info("Loaded %d bytes from [%s] to [%s]", copyResult.size(), s3Coords.toString(), outDir.getAbsolutePath());
return copyResult;
}
throw new IAE("Do not know how to load file type at [%s]", s3Coords.toUri(S3StorageDruidModule.SCHEME));
}
catch (Exception e) {
try {
FileUtils.deleteDirectory(outDir);
}
catch (IOException ioe) {
log.warn(
ioe,
"Failed to remove output directory [%s] for segment pulled from [%s]",
outDir.getAbsolutePath(),
s3Coords.toString()
);
}
throw new SegmentLoadingException(e, e.getMessage());
}
}
@NonnullView on GitHub (pinned to 9b90983fd2)