{"record":{"id":"d0f1a31f49f24d03","repo":"apache/druid","slug":"descriptor-not-found-at-url-s","errorCode":null,"errorMessage":"Descriptor not found at URL: [%s]","messagePattern":"Descriptor not found at URL: \\[(.+?)\\]","errorType":"exception","errorClass":"ParseException","httpStatus":null,"severity":"error","filePath":"extensions-core/protobuf-extensions/src/main/java/org/apache/druid/data/input/protobuf/FileBasedProtobufBytesDecoder.java","lineNumber":79,"sourceCode":"    InputStream fin;\n    DescriptorProtos.FileDescriptorSet descriptorSet;\n    try {\n      fin = this.getClass().getClassLoader().getResourceAsStream(descriptorFilePath);\n      if (fin == null) {\n        URL url;\n        try {\n          url = new URL(descriptorFilePath);\n        }\n        catch (MalformedURLException e) {\n          throw new ParseException(\n              descriptorFilePath,\n              e,\n              \"Descriptor not found in class path or malformed URL: [%s]\", descriptorFilePath\n              );\n        }\n        try (InputStream urlIn = url.openConnection().getInputStream()) {\n          if (urlIn == null) {\n            throw new ParseException(\n                descriptorFilePath,\n                \"Descriptor not found at URL: [%s]\", descriptorFilePath\n            );\n          }\n          descriptorSet = DescriptorProtos.FileDescriptorSet.parseFrom(urlIn);\n        }\n      } else {\n        descriptorSet = DescriptorProtos.FileDescriptorSet.parseFrom(fin);\n      }\n\n      if (descriptorSet.getFileCount() == 0) {\n        throw new ParseException(null, \"No file descriptors found in the descriptor set\");\n      }\n\n      return descriptorSet;\n    }\n    catch (IOException e) {\n      throw new ParseException(descriptorFilePath, e, \"Failed to initialize descriptor at [%s]\", descriptorFilePath);","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/extensions-core/protobuf-extensions/src/main/java/org/apache/druid/data/input/protobuf/FileBasedProtobufBytesDecoder.java#L61-L97","documentation":"Descriptor-fetch failure in FileBasedProtobufBytesDecoder.loadFileDescriptorSet: the descriptorFilePath was interpreted as a URL but opening the connection's input stream returned null or failed, so the descriptor could not be downloaded/read from that URL.","triggerScenarios":"Thrown at extensions-core/protobuf-extensions/src/main/java/org/apache/druid/data/input/protobuf/FileBasedProtobufBytesDecoder.java:79 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the URL is reachable from the ingestion process (network, auth).","Check that the URL serves the FileDescriptorSet content, not an error page.","Place the descriptor on the classpath instead if remote access is unreliable."],"exampleFix":null,"handlingStrategy":"validation","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"}