{"record":{"id":"9203aa1522fa2991","repo":"apache/druid","slug":"unknown-loader-type-s-known-types-are-s","errorCode":null,"errorMessage":"Unknown loader type[%s].  Known types are %s","messagePattern":"Unknown loader type\\[(.+?)\\]\\.  Known types are (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"extensions-core/lookups-cached-global/src/main/java/org/apache/druid/server/lookup/namespace/UriCacheGenerator.java","lineNumber":79,"sourceCode":"  {\n    this.pullers = pullers;\n    this.maxMemory = runtimeInfo.getMaxHeapSizeBytes();\n  }\n\n  @Override\n  @Nullable\n  public String generateCache(\n      final UriExtractionNamespace extractionNamespace,\n      final CacheScheduler.EntryImpl<UriExtractionNamespace> entryId,\n      @Nullable final String lastVersion,\n      final CacheHandler cache\n  ) throws Exception\n  {\n    final boolean doSearch = extractionNamespace.getUriPrefix() != null;\n    final URI originalUri = doSearch ? extractionNamespace.getUriPrefix() : extractionNamespace.getUri();\n    final SearchableVersionedDataFinder<URI> pullerRaw = pullers.get(originalUri.getScheme());\n    if (pullerRaw == null) {\n      throw new IAE(\n          \"Unknown loader type[%s].  Known types are %s\",\n          originalUri.getScheme(),\n          pullers.keySet()\n      );\n    }\n    if (!(pullerRaw instanceof URIDataPuller)) {\n      throw new IAE(\n          \"Cannot load data from location [%s]. Data pulling from [%s] not supported\",\n          originalUri,\n          originalUri.getScheme()\n      );\n    }\n    final URIDataPuller puller = (URIDataPuller) pullerRaw;\n    final URI uri;\n    if (doSearch) {\n      final Pattern versionRegex;\n\n      if (extractionNamespace.getFileRegex() != null) {","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/extensions-core/lookups-cached-global/src/main/java/org/apache/druid/server/lookup/namespace/UriCacheGenerator.java#L61-L97","documentation":"UriCacheGenerator resolves a SearchableVersionedDataFinder based on the URI scheme of the configured uriPrefix/uri. If no registered puller handles that scheme, it throws this IAE listing the known schemes (e.g. file, http, s3), indicating a missing or misconfigured loader.","triggerScenarios":"generateCache() computing pullers.get(originalUri.getScheme()) which returns null — i.e. the lookup URI uses a scheme with no registered URI finder extension.","commonSituations":"Typo in the URI scheme (gs:// vs s3://); missing druid-s3-lookups or other extension providing the finder; using an unsupported scheme like ftp://.","solutions":["Set the lookup uri/uriPrefix to a scheme with a registered finder (file, http/https, s3, etc.).","Load the extension providing the finder for your scheme (e.g. druid-s3-lookups) via druid.extensions.loadList.","Print/inspect the known types in the error message and align your URI scheme with one of them."],"exampleFix":"// before\n\"uriPrefix\": \"gs://my-bucket/lookups/\"   // no gs finder registered\n// after\n\"uriPrefix\": \"s3://my-bucket/lookups/\"   // druid-s3-lookups loaded","handlingStrategy":"validation","validationCode":"Set<String> knownSchemes = pullers.keySet();\nif (!knownSchemes.contains(URI.create(lookupUri).getScheme())) throw new IllegalArgumentException(\"Unsupported scheme; known: \" + knownSchemes);","typeGuard":null,"tryCatchPattern":"try { scheduler.schedule(uriNamespace); } catch (IllegalArgumentException e) { if (e.getMessage().startsWith(\"Unknown loader type\")) { /* fix uri scheme or load extension */ } else { throw e; } }","preventionTips":["Match uri scheme against a supported finder (file, http, s3)","Load the extension providing the finder for your storage backend","Avoid typos like gs:// when only s3:// is configured"],"tags":["uri","lookup","config"],"backgroundTag":"invalid-argument-value","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"}