{"record":{"id":"efb5795c60ae2c41","repo":"apache/druid","slug":"no-message-types-found-in-the-descriptor-set","errorCode":null,"errorMessage":"No message types found in the descriptor set","messagePattern":"No message types found in the descriptor set","errorType":"exception","errorClass":"ParseException","httpStatus":null,"severity":"error","filePath":"extensions-core/protobuf-extensions/src/main/java/org/apache/druid/data/input/protobuf/DescriptorBasedProtobufBytesDecoder.java","lineNumber":135,"sourceCode":"  protected Descriptors.Descriptor buildMessageDescriptor(\n      final DescriptorProtos.FileDescriptorSet descriptorSet\n  )\n  {\n    try {\n      // Build all descriptors with dependency resolution\n      final var allDescriptors = new HashMap<String, Descriptors.FileDescriptor>();\n      for (final var fileProto : descriptorSet.getFileList()) {\n        buildFileDescriptor(fileProto, descriptorSet, allDescriptors);\n      }\n\n      // If protoMessageType has not been set, return the first message type found\n      if (protoMessageType == null) {\n        for (final var fileDescriptor : allDescriptors.values()) {\n          if (!fileDescriptor.getMessageTypes().isEmpty()) {\n            return fileDescriptor.getMessageTypes().get(0);\n          }\n        }\n        throw new ParseException(null, \"No message types found in the descriptor set\");\n      }\n\n      // Otherwise, find the specific message type by name\n      for (final var fileDescriptor : allDescriptors.values()) {\n        final var desc = findMessageByName(fileDescriptor, protoMessageType);\n        if (desc != null) {\n          return desc;\n        }\n      }\n\n      // Something went wrong... collect all available types for better error message\n      final var availableTypes = new TreeSet<String>();\n      for (final var fileDescriptor : allDescriptors.values()) {\n        collectAvailableTypes(fileDescriptor, availableTypes);\n      }\n\n      throw new ParseException(\n          null,","sourceCodeStart":117,"sourceCodeEnd":153,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/extensions-core/protobuf-extensions/src/main/java/org/apache/druid/data/input/protobuf/DescriptorBasedProtobufBytesDecoder.java#L117-L153","documentation":"Descriptor-resolution failure in DescriptorBasedProtobufBytesDecoder.buildMessageDescriptor: the loaded FileDescriptorSet contains no message types at all, and no protoMessageType can be resolved from it, so the decoder cannot know which message schema to parse with.","triggerScenarios":"Thrown at extensions-core/protobuf-extensions/src/main/java/org/apache/druid/data/input/protobuf/DescriptorBasedProtobufBytesDecoder.java:135 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Regenerate the descriptor set from a valid .proto file containing message definitions.","Check that the descriptor file was not truncated or replaced with an empty file.","Verify the protoc version used to produce the descriptor set."],"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"}