apache/druid · error · ParseException

Failed to initialize descriptor at

Error message

Failed to initialize descriptor at [%s]

What it means

I/O failure wrapper in FileBasedProtobufBytesDecoder.loadFileDescriptorSet: reading or parsing the descriptor (from classpath or URL) threw IOException, so descriptor initialization at the configured path failed and protobuf decoding cannot proceed.

Solutions

  1. Check filesystem/URL access permissions and network stability for the descriptor location.
  2. Verify the descriptor file is not corrupt (parse it independently with protoc).
  3. Retry ingestion once the descriptor file is accessible.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at extensions-core/protobuf-extensions/src/main/java/org/apache/druid/data/input/protobuf/FileBasedProtobufBytesDecoder.java:97 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/5b7ff75a91d624e2. Report an issue: GitHub.

Appendix: source

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

            throw new ParseException(
                descriptorFilePath,
                "Descriptor not found at URL: [%s]", descriptorFilePath
            );
          }
          descriptorSet = DescriptorProtos.FileDescriptorSet.parseFrom(urlIn);
        }
      } else {
        descriptorSet = DescriptorProtos.FileDescriptorSet.parseFrom(fin);
      }

      if (descriptorSet.getFileCount() == 0) {
        throw new ParseException(null, "No file descriptors found in the descriptor set");
      }

      return descriptorSet;
    }
    catch (IOException e) {
      throw new ParseException(descriptorFilePath, e, "Failed to initialize descriptor at [%s]", descriptorFilePath);
    }
  }

  @Override
  public boolean equals(Object o)
  {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    if (!super.equals(o)) {
      return false;
    }
    FileBasedProtobufBytesDecoder that = (FileBasedProtobufBytesDecoder) o;
    return Objects.equals(descriptorFilePath, that.descriptorFilePath);
  }

View on GitHub (pinned to 9b90983fd2)