diff --git a/exporters/common/src/main/java/io/opentelemetry/exporter/internal/marshal/MarshalerUtil.java b/exporters/common/src/main/java/io/opentelemetry/exporter/internal/marshal/MarshalerUtil.java index 4b714086f9b..494853723dc 100644 --- a/exporters/common/src/main/java/io/opentelemetry/exporter/internal/marshal/MarshalerUtil.java +++ b/exporters/common/src/main/java/io/opentelemetry/exporter/internal/marshal/MarshalerUtil.java @@ -115,7 +115,7 @@ private static int sizeRepeatedFixed64(ProtoFieldInfo field, int numValues) { public static int sizeRepeatedString(ProtoFieldInfo field, byte[][] utf8Bytes) { int size = 0; for (byte[] i : utf8Bytes) { - size += MarshalerUtil.sizeBytes(field, i); + size += sizeBytes(field, i, /* skipEmpty= */ false); } return size; } @@ -384,7 +384,12 @@ public static int sizeFixed32(ProtoFieldInfo field, int message) { /** Returns the size of a bytes field. */ public static int sizeBytes(ProtoFieldInfo field, byte[] message) { - if (message.length == 0) { + return sizeBytes(field, message, /* skipEmpty= */ true); + } + + /** Returns the size of a bytes field. */ + public static int sizeBytes(ProtoFieldInfo field, byte[] message, boolean skipEmpty) { + if (message.length == 0 && skipEmpty) { return 0; } return field.getTagSize() + CodedOutputStream.computeByteArraySizeNoTag(message);