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)