apache/druid · error · ParseException

Protobuf message type

Error message

Protobuf message type [%s] not found in the descriptor set. Available types: %s

What it means

Schema lookup failure in DescriptorBasedProtobufBytesDecoder.buildMessageDescriptor: the configured protoMessageType was not found in any file descriptor of the set; the error lists all available message types to help correct the configuration.

Solutions

  1. Set protoMessageType to one of the types listed in the error message.
  2. Remove protoMessageType to auto-select the first message type in the set.
  3. Regenerate the descriptor if the expected message is missing from it.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at extensions-core/protobuf-extensions/src/main/java/org/apache/druid/data/input/protobuf/DescriptorBasedProtobufBytesDecoder.java:152 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07). Data as JSON: /api/errors/92dcce879c431b65. Report an issue: GitHub.

Appendix: source

Thrown at extensions-core/protobuf-extensions/src/main/java/org/apache/druid/data/input/protobuf/DescriptorBasedProtobufBytesDecoder.java:152

        }
        throw new ParseException(null, "No message types found in the descriptor set");
      }

      // Otherwise, find the specific message type by name
      for (final var fileDescriptor : allDescriptors.values()) {
        final var desc = findMessageByName(fileDescriptor, protoMessageType);
        if (desc != null) {
          return desc;
        }
      }

      // Something went wrong... collect all available types for better error message
      final var availableTypes = new TreeSet<String>();
      for (final var fileDescriptor : allDescriptors.values()) {
        collectAvailableTypes(fileDescriptor, availableTypes);
      }

      throw new ParseException(
          null,
          "Protobuf message type [%s] not found in the descriptor set. Available types: %s",
          protoMessageType,
          availableTypes
      );
    }
    catch (Descriptors.DescriptorValidationException e) {
      throw new ParseException(null, e, "Invalid protobuf descriptor");
    }
  }

  @Nullable
  private Descriptors.Descriptor findMessageByName(
      final Descriptors.FileDescriptor fileDescriptor,
      final String messageTypeName
  )
  {
    // Try simple name match first

View on GitHub (pinned to 9b90983fd2)