diff --git a/exporter/jaeger/lib/opentelemetry/exporter/jaeger/encoder.rb b/exporter/jaeger/lib/opentelemetry/exporter/jaeger/encoder.rb index 2be8c66a20..b10c740956 100644 --- a/exporter/jaeger/lib/opentelemetry/exporter/jaeger/encoder.rb +++ b/exporter/jaeger/lib/opentelemetry/exporter/jaeger/encoder.rb @@ -43,9 +43,13 @@ def encoded_process(resource) end def encoded_tags(attributes) - attributes&.map do |key, value| - encoded_tag(key, value) - end || EMPTY_ARRAY + if attributes + attributes.find_all { |_key, value| value }.map do |key, value| + encoded_tag(key, value) + end + else + EMPTY_ARRAY + end end def encoded_tag(key, value) diff --git a/exporter/jaeger/test/opentelemetry/exporters/jaeger/encoder_test.rb b/exporter/jaeger/test/opentelemetry/exporters/jaeger/encoder_test.rb index 4d2714463a..c36de119c7 100644 --- a/exporter/jaeger/test/opentelemetry/exporters/jaeger/encoder_test.rb +++ b/exporter/jaeger/test/opentelemetry/exporters/jaeger/encoder_test.rb @@ -85,6 +85,14 @@ ) end + it 'ignores nil values' do + attributes = { 'a_nil' => nil } + span_data = create_span_data(attributes: attributes) + encoded_span = Encoder.encoded_span(span_data) + _(encoded_span.tags.length).must_equal(0) + end + + describe 'instrumentation library' do it 'encodes library and version when set' do lib = OpenTelemetry::SDK::InstrumentationLibrary.new('mylib', '0.1.0')