{"record":{"id":"aef18f71abc9eaba","repo":"apache/druid","slug":"invalid-protobuf-descriptor","errorCode":null,"errorMessage":"Invalid protobuf descriptor","messagePattern":"Invalid protobuf descriptor","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":160,"sourceCode":"          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,\n          \"Protobuf message type [%s] not found in the descriptor set. Available types: %s\",\n          protoMessageType,\n          availableTypes\n      );\n    }\n    catch (Descriptors.DescriptorValidationException e) {\n      throw new ParseException(null, e, \"Invalid protobuf descriptor\");\n    }\n  }\n\n  @Nullable\n  private Descriptors.Descriptor findMessageByName(\n      final Descriptors.FileDescriptor fileDescriptor,\n      final String messageTypeName\n  )\n  {\n    // Try simple name match first\n    for (final var messageType : fileDescriptor.getMessageTypes()) {\n      if (messageType.getName().equals(messageTypeName) || messageType.getFullName().equals(messageTypeName)) {\n        return messageType;\n      }\n\n      // Try nested types (e.g., \"ParentMessage.NestedMessage\")\n      final var nested = findNestedMessage(messageType, messageTypeName);\n      if (nested != null) {","sourceCodeStart":142,"sourceCodeEnd":178,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/extensions-core/protobuf-extensions/src/main/java/org/apache/druid/data/input/protobuf/DescriptorBasedProtobufBytesDecoder.java#L142-L178","documentation":"Descriptor-validation failure in DescriptorBasedProtobufBytesDecoder.buildMessageDescriptor: building the file descriptors threw DescriptorValidationException, meaning the descriptor set is internally inconsistent (unresolved dependencies, invalid field definitions), so no usable message descriptor can be produced.","triggerScenarios":"Thrown at extensions-core/protobuf-extensions/src/main/java/org/apache/druid/data/input/protobuf/DescriptorBasedProtobufBytesDecoder.java:160 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Regenerate the FileDescriptorSet including all dependency .proto files.","Check the validation exception cause for the specific invalid field/type definition.","Ensure protoc output is complete and not hand-edited."],"exampleFix":null,"handlingStrategy":"try-catch","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"}