From 7b243abef8183732ec96a2294bb36c901af54b18 Mon Sep 17 00:00:00 2001 From: Jonathan Halliday Date: Fri, 13 Jun 2025 10:57:12 +0100 Subject: [PATCH] profiles dictionary table encoding consistency improvement. --- .../proto/profiles/v1development/profiles.proto | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/opentelemetry/proto/profiles/v1development/profiles.proto b/opentelemetry/proto/profiles/v1development/profiles.proto index e5269c5b..01ccf89f 100644 --- a/opentelemetry/proto/profiles/v1development/profiles.proto +++ b/opentelemetry/proto/profiles/v1development/profiles.proto @@ -93,10 +93,15 @@ option go_package = "go.opentelemetry.io/proto/otlp/profiles/v1development"; // ProfilesDictionary represents the profiles data shared across the // entire message being sent. message ProfilesDictionary { + + // Note all fields in this message MUST have a zero value encoded as the first element. + // This allows for _index fields pointing into the dictionary to use a 0 pointer value to indicate 'null' / 'not set' + // without requiring 'optional' encoding, which would be less compact. + // Unless otherwise defined, a 'zero value' message value is one with all default field values, + // so as to minimize wire encoded size. + // Mappings from address ranges to the image/binary/library mapped // into that address range referenced by locations via Location.mapping_index. - // mapping_table[0] must always be set to a zero value default mapping, - // so that _index fields can use 0 to indicate null/unset. repeated Mapping mapping_table = 1; // Locations referenced by samples via Profile.location_indices. @@ -106,8 +111,6 @@ message ProfilesDictionary { repeated Function function_table = 3; // Links referenced by samples via Sample.link_index. - // link_table[0] must always be set to a zero value default link, - // so that _index fields can use 0 to indicate null/unset. repeated Link link_table = 4; // A common table for strings referenced by various messages.