{"record":{"id":"b43b692f103c4296","repo":"apache/druid","slug":"do-not-know-how-to-load-file-type-at-s","errorCode":null,"errorMessage":"Do not know how to load file type at [%s]","messagePattern":"Do not know how to load file type at \\[(.+?)\\]","errorType":"exception","errorClass":"IllegalArgumentException (IAE)","httpStatus":null,"severity":"error","filePath":"extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPuller.java","lineNumber":130,"sourceCode":"            .prefix(s3Coords.getPath())\n            .build();\n        final ListObjectsV2Response list = S3Utils.retryS3Operation(\n            () -> s3Client.listObjectsV2(request)\n        );\n        FileUtils.FileCopyResult copyResult = new FileUtils.FileCopyResult();\n        for (S3Object objectSummary : list.contents()) {\n          final CloudObjectLocation objectLocation = S3Utils.summaryToCloudObjectLocation(objectSummary, s3Coords.getBucket());\n          final URI uri = objectLocation.toUri(S3StorageDruidModule.SCHEME);\n          final ByteSource byteSource = getByteSource(uri);\n          final File outFile = new File(outDir, Paths.get(objectLocation.getPath()).getFileName().toString());\n          outFile.createNewFile();\n          final FileUtils.FileCopyResult result = FileUtils.retryCopy(byteSource, outFile, S3Utils.S3RETRY, 3);\n          copyResult.addFiles(result.getFiles());\n        }\n        log.info(\"Loaded %d bytes from [%s] to [%s]\", copyResult.size(), s3Coords.toString(), outDir.getAbsolutePath());\n        return copyResult;\n      }\n      throw new IAE(\"Do not know how to load file type at [%s]\", s3Coords.toUri(S3StorageDruidModule.SCHEME));\n    }\n    catch (Exception e) {\n      try {\n        FileUtils.deleteDirectory(outDir);\n      }\n      catch (IOException ioe) {\n        log.warn(\n            ioe,\n            \"Failed to remove output directory [%s] for segment pulled from [%s]\",\n            outDir.getAbsolutePath(),\n            s3Coords.toString()\n        );\n      }\n      throw new SegmentLoadingException(e, e.getMessage());\n    }\n  }\n\n  @Nonnull","sourceCodeStart":112,"sourceCodeEnd":148,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPuller.java#L112-L148","documentation":"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.","triggerScenarios":"Thrown at extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPuller.java:130 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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."],"exampleFix":null,"handlingStrategy":"type-guard","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"}