From 776bfdcb2358157b894b3552187b1ab49c6ae0d1 Mon Sep 17 00:00:00 2001 From: Ben Ye Date: Tue, 4 Jan 2022 10:01:53 -0800 Subject: [PATCH] add additional batch overhead in jaeger agent udp exporter (#2489) * add additional batch overhead in jaeger agent udp exporter Signed-off-by: Ben Ye * update changelog Signed-off-by: Ben Ye Co-authored-by: Tyler Yahn --- CHANGELOG.md | 4 ++++ exporters/jaeger/agent.go | 11 ++++++++--- exporters/jaeger/agent_test.go | 4 ++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bc1eef716d..3c524fc28b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ## [Unreleased] +### Changed + +- Jaeger exporter takes into additional 70 bytes overhead into consideration when sending UDP packets (#2489) + ### Deprecated - Deprecate module `"go.opentelemetry.io/otel/sdk/export/metric"`, new functionality available in "go.opentelemetry.io/otel/sdk/metric" module: diff --git a/exporters/jaeger/agent.go b/exporters/jaeger/agent.go index 5dbb5805c9b..ce53e4386b2 100644 --- a/exporters/jaeger/agent.go +++ b/exporters/jaeger/agent.go @@ -28,8 +28,13 @@ import ( "go.opentelemetry.io/otel/exporters/jaeger/internal/third_party/thrift/lib/go/thrift" ) -// udpPacketMaxLength is the max size of UDP packet we want to send, synced with jaeger-agent -const udpPacketMaxLength = 65000 +const ( + // udpPacketMaxLength is the max size of UDP packet we want to send, synced with jaeger-agent + udpPacketMaxLength = 65000 + // emitBatchOverhead is the additional overhead bytes used for enveloping the datagram, + // synced with jaeger-agent https://github.com/jaegertracing/jaeger-client-go/blob/master/transport_udp.go#L37 + emitBatchOverhead = 70 +) // agentClientUDP is a UDP client to Jaeger agent that implements gen.Agent interface. type agentClientUDP struct { @@ -67,7 +72,7 @@ func newAgentClientUDP(params agentClientUDPParams) (*agentClientUDP, error) { } if params.MaxPacketSize <= 0 { - params.MaxPacketSize = udpPacketMaxLength + params.MaxPacketSize = udpPacketMaxLength - emitBatchOverhead } if params.AttemptReconnecting && params.AttemptReconnectInterval <= 0 { diff --git a/exporters/jaeger/agent_test.go b/exporters/jaeger/agent_test.go index 62de111dae5..933d364e3df 100644 --- a/exporters/jaeger/agent_test.go +++ b/exporters/jaeger/agent_test.go @@ -73,7 +73,7 @@ func TestNewAgentClientUDPWithParamsDefaults(t *testing.T) { }) assert.NoError(t, err) assert.NotNil(t, agentClient) - assert.Equal(t, udpPacketMaxLength, agentClient.maxPacketSize) + assert.Equal(t, udpPacketMaxLength-emitBatchOverhead, agentClient.maxPacketSize) if assert.IsType(t, &reconnectingUDPConn{}, agentClient.connUDP) { assert.Equal(t, (*log.Logger)(nil), agentClient.connUDP.(*reconnectingUDPConn).logger) @@ -97,7 +97,7 @@ func TestNewAgentClientUDPWithParamsReconnectingDisabled(t *testing.T) { }) assert.NoError(t, err) assert.NotNil(t, agentClient) - assert.Equal(t, udpPacketMaxLength, agentClient.maxPacketSize) + assert.Equal(t, udpPacketMaxLength-emitBatchOverhead, agentClient.maxPacketSize) assert.IsType(t, &net.UDPConn{}, agentClient.connUDP)