{"record":{"id":"476554130ab8deae","repo":"apache/druid","slug":"unable-to-decode-from-proto","errorCode":null,"errorMessage":"Unable to decode from Proto","messagePattern":"Unable to decode from Proto","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"extensions-contrib/ddsketch/src/main/java/org/apache/druid/query/aggregation/ddsketch/DDSketchObjectStrategy.java","lineNumber":55,"sourceCode":"  {\n    return DDSketch.class;\n  }\n\n  @Override\n  public DDSketch fromByteBuffer(ByteBuffer buffer, int numBytes)\n  {\n    if (numBytes == 0) {\n      return null;\n    }\n    ByteBuffer readOnlyBuffer = buffer.asReadOnlyBuffer();\n    readOnlyBuffer.limit(buffer.position() + numBytes);\n    try {\n      com.datadoghq.sketch.ddsketch.proto.DDSketch proto = com.datadoghq.sketch.ddsketch.proto.DDSketch.parseFrom(readOnlyBuffer);\n      DDSketch recovered = DDSketchProtoBinding.fromProto(() -> new CollapsingLowestDenseStore(1000), proto);\n      return recovered;\n    } \n    catch (InvalidProtocolBufferException e) {\n      throw new UnsupportedOperationException(\"Unable to decode from Proto\");\n    }\n  }\n\n  @Override\n  public byte[] toBytes(@Nullable DDSketch val)\n  {\n    if (val == null) {\n      return EMPTY_BYTES;\n    }\n    return DDSketchProtoBinding.toProto(val).toByteArray();\n  }\n\n  @Override\n  public int compare(DDSketch o1, DDSketch o2)\n  {\n    return DDSketchAggregatorFactory.COMPARATOR.compare(o1, o2);\n  }\n","sourceCodeStart":37,"sourceCodeEnd":73,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/extensions-contrib/ddsketch/src/main/java/org/apache/druid/query/aggregation/ddsketch/DDSketchObjectStrategy.java#L37-L73","documentation":"fromByteBuffer parses serialized DDSketch protobuf bytes read from a segment; malformed or truncated protobuf (InvalidProtocolBufferException) is converted to this IAE, indicating corrupted or incompatible serialized sketch data.","triggerScenarios":"Thrown at extensions-contrib/ddsketch/src/main/java/org/apache/druid/query/aggregation/ddsketch/DDSketchObjectStrategy.java:55 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the blob was written by a compatible ddsketch serde version.","Re-ingest the corrupted data; do not hand-edit serialized sketches."],"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"}