From 1edf5c94c9897997238ea524be8ea74eed88da8b Mon Sep 17 00:00:00 2001 From: Francis Bogsanyi Date: Tue, 15 Oct 2019 20:19:12 -0400 Subject: [PATCH 1/4] Shorten recording_events? to recording? --- api/lib/opentelemetry/trace/span.rb | 4 ++-- api/test/opentelemetry/trace/span_test.rb | 4 ++-- .../sdk/trace/export/batch_span_processor.rb | 2 +- .../sdk/trace/export/simple_span_processor.rb | 6 +++--- .../sdk/trace/multi_span_processor.rb | 4 ++-- .../sdk/trace/noop_span_processor.rb | 4 ++-- sdk/lib/opentelemetry/sdk/trace/span.rb | 2 +- .../trace/export/batch_span_processor_test.rb | 10 +++++----- .../trace/export/simple_span_processor_test.rb | 4 ++-- sdk/test/opentelemetry/sdk/trace/span_test.rb | 4 ++-- sdk/test/opentelemetry/sdk/trace/tracer_test.rb | 16 ++++++++-------- 11 files changed, 30 insertions(+), 30 deletions(-) diff --git a/api/lib/opentelemetry/trace/span.rb b/api/lib/opentelemetry/trace/span.rb index f48c476022..ef6663c849 100644 --- a/api/lib/opentelemetry/trace/span.rb +++ b/api/lib/opentelemetry/trace/span.rb @@ -33,12 +33,12 @@ def initialize(span_context: nil) @context = span_context || SpanContext.new end - # Return the flag whether this span is recording events + # Return whether this span is recording. # # @return [Boolean] true if this Span is active and recording information # like events with the #add_event operation and attributes using # #set_attribute. - def recording_events? + def recording? false end diff --git a/api/test/opentelemetry/trace/span_test.rb b/api/test/opentelemetry/trace/span_test.rb index 80c527025c..3c8ccfcc71 100644 --- a/api/test/opentelemetry/trace/span_test.rb +++ b/api/test/opentelemetry/trace/span_test.rb @@ -18,9 +18,9 @@ end end - describe '#recording_events?' do + describe '#recording?' do it 'returns false' do - span.recording_events?.must_equal(false) + span.recording?.must_equal(false) end end diff --git a/sdk/lib/opentelemetry/sdk/trace/export/batch_span_processor.rb b/sdk/lib/opentelemetry/sdk/trace/export/batch_span_processor.rb index 311724936e..b610cf577e 100644 --- a/sdk/lib/opentelemetry/sdk/trace/export/batch_span_processor.rb +++ b/sdk/lib/opentelemetry/sdk/trace/export/batch_span_processor.rb @@ -57,7 +57,7 @@ def on_start(span) # adds a span to the batcher, threadsafe may block on lock def on_finish(span) - return unless span.recording_events? + return unless span.recording? lock do n = spans.size + 1 - max_queue_size diff --git a/sdk/lib/opentelemetry/sdk/trace/export/simple_span_processor.rb b/sdk/lib/opentelemetry/sdk/trace/export/simple_span_processor.rb index 1774fbd533..042c37e9d0 100644 --- a/sdk/lib/opentelemetry/sdk/trace/export/simple_span_processor.rb +++ b/sdk/lib/opentelemetry/sdk/trace/export/simple_span_processor.rb @@ -28,7 +28,7 @@ def initialize(span_exporter) @span_exporter = span_exporter end - # Called when a {Span} is started, if the {Span#recording_events?} + # Called when a {Span} is started, if the {Span#recording?} # returns true. # # This method is called synchronously on the execution thread, should @@ -39,7 +39,7 @@ def on_start(span) # Do nothing. end - # Called when a {Span} is ended, if the {Span#recording_events?} + # Called when a {Span} is ended, if the {Span#recording?} # returns true. # # This method is called synchronously on the execution thread, should @@ -47,7 +47,7 @@ def on_start(span) # # @param [Span] span the {Span} that just ended. def on_finish(span) - return unless span.recording_events? + return unless span.recording? @span_exporter.export([span.to_span_data]) rescue => e # rubocop:disable Style/RescueStandardError diff --git a/sdk/lib/opentelemetry/sdk/trace/multi_span_processor.rb b/sdk/lib/opentelemetry/sdk/trace/multi_span_processor.rb index f0f9bc5bc4..4d5f1c5403 100644 --- a/sdk/lib/opentelemetry/sdk/trace/multi_span_processor.rb +++ b/sdk/lib/opentelemetry/sdk/trace/multi_span_processor.rb @@ -19,7 +19,7 @@ def initialize(span_processors) @span_processors = span_processors.to_a.freeze end - # Called when a {Span} is started, if the {Span#recording_events?} + # Called when a {Span} is started, if the {Span#recording?} # returns true. # # This method is called synchronously on the execution thread, should @@ -30,7 +30,7 @@ def on_start(span) @span_processors.each { |processor| processor.on_start(span) } end - # Called when a {Span} is ended, if the {Span#recording_events?} + # Called when a {Span} is ended, if the {Span#recording?} # returns true. # # This method is called synchronously on the execution thread, should diff --git a/sdk/lib/opentelemetry/sdk/trace/noop_span_processor.rb b/sdk/lib/opentelemetry/sdk/trace/noop_span_processor.rb index 0addc585b0..944fd51cfc 100644 --- a/sdk/lib/opentelemetry/sdk/trace/noop_span_processor.rb +++ b/sdk/lib/opentelemetry/sdk/trace/noop_span_processor.rb @@ -13,7 +13,7 @@ module Trace class NoopSpanProcessor include Singleton - # Called when a {Span} is started, if the {Span#recording_events?} + # Called when a {Span} is started, if the {Span#recording?} # returns true. # # This method is called synchronously on the execution thread, should @@ -22,7 +22,7 @@ class NoopSpanProcessor # @param [Span] span the {Span} that just started. def on_start(span); end - # Called when a {Span} is ended, if the {Span#recording_events?} + # Called when a {Span} is ended, if the {Span#recording?} # returns true. # # This method is called synchronously on the execution thread, should diff --git a/sdk/lib/opentelemetry/sdk/trace/span.rb b/sdk/lib/opentelemetry/sdk/trace/span.rb index 69ddcf9f1a..380c6135ae 100644 --- a/sdk/lib/opentelemetry/sdk/trace/span.rb +++ b/sdk/lib/opentelemetry/sdk/trace/span.rb @@ -47,7 +47,7 @@ def events # @return [Boolean] true if this Span is active and recording information # like events with the #add_event operation and attributes using # #set_attribute. - def recording_events? + def recording? true end diff --git a/sdk/test/opentelemetry/sdk/trace/export/batch_span_processor_test.rb b/sdk/test/opentelemetry/sdk/trace/export/batch_span_processor_test.rb index 5a45a198a7..24345b76a6 100644 --- a/sdk/test/opentelemetry/sdk/trace/export/batch_span_processor_test.rb +++ b/sdk/test/opentelemetry/sdk/trace/export/batch_span_processor_test.rb @@ -38,15 +38,15 @@ def shutdown; end end class TestSpan - def initialize(id = nil, recording_events = true) + def initialize(id = nil, recording = true) @id = id - @recording_events = recording_events + @recording = recording end attr_reader :id - def recording_events? - @recording_events + def recording? + @recording end def to_span_data @@ -94,7 +94,7 @@ def to_span_data te.batches[1].size.must_equal(1) end - it 'should batch only recording_events samples' do + it 'should batch only recording samples' do te = TestExporter.new bsp = BatchSpanProcessor.new(exporter: te, max_queue_size: 6, max_export_batch_size: 3) diff --git a/sdk/test/opentelemetry/sdk/trace/export/simple_span_processor_test.rb b/sdk/test/opentelemetry/sdk/trace/export/simple_span_processor_test.rb index c1cfac5247..6b0516d2c0 100644 --- a/sdk/test/opentelemetry/sdk/trace/export/simple_span_processor_test.rb +++ b/sdk/test/opentelemetry/sdk/trace/export/simple_span_processor_test.rb @@ -11,7 +11,7 @@ def stub_span_builder(recording: false) span = OpenTelemetry::Trace::Span.new(span_context: ctx) def span.to_span_data; end - span.define_singleton_method(:recording_events?) { recording } + span.define_singleton_method(:recording?) { recording } span end @@ -61,7 +61,7 @@ def mock.nil? ) mock_span = Minitest::Mock.new - mock_span.expect :recording_events?, true + mock_span.expect :recording?, true mock_span.expect :to_span_data, nil processor_noop.on_start(mock_span) diff --git a/sdk/test/opentelemetry/sdk/trace/span_test.rb b/sdk/test/opentelemetry/sdk/trace/span_test.rb index b58d394625..ea67e17c0a 100644 --- a/sdk/test/opentelemetry/sdk/trace/span_test.rb +++ b/sdk/test/opentelemetry/sdk/trace/span_test.rb @@ -42,9 +42,9 @@ end end - describe '#recording_events?' do + describe '#recording?' do it 'returns true' do - span.must_be :recording_events? + span.must_be :recording? end end diff --git a/sdk/test/opentelemetry/sdk/trace/tracer_test.rb b/sdk/test/opentelemetry/sdk/trace/tracer_test.rb index 920c113652..b1151bfb2b 100644 --- a/sdk/test/opentelemetry/sdk/trace/tracer_test.rb +++ b/sdk/test/opentelemetry/sdk/trace/tracer_test.rb @@ -97,21 +97,21 @@ tracer.active_trace_config = TraceConfig.new(sampler: Samplers::ALWAYS_OFF) span = tracer.start_root_span('root') span.context.trace_flags.wont_be :sampled? - span.wont_be :recording_events? + span.wont_be :recording? end it 'returns an unsampled span if sampler says record, but do not sample' do tracer.active_trace_config = TraceConfig.new(sampler: record_sampler) span = tracer.start_root_span('root') span.context.trace_flags.wont_be :sampled? - span.must_be :recording_events? + span.must_be :recording? end it 'returns a sampled span if sampler says sample' do tracer.active_trace_config = TraceConfig.new(sampler: Samplers::ALWAYS_ON) span = tracer.start_root_span('root') span.context.trace_flags.must_be :sampled? - span.must_be :recording_events? + span.must_be :recording? end it 'calls the sampler with all parameters except parent_context' do @@ -138,7 +138,7 @@ tracer.shutdown span = tracer.start_root_span('root') span.context.trace_flags.wont_be :sampled? - span.wont_be :recording_events? + span.wont_be :recording? end it 'creates a span with all supplied parameters' do @@ -220,21 +220,21 @@ tracer.active_trace_config = TraceConfig.new(sampler: Samplers::ALWAYS_OFF) span = tracer.start_span('op', with_parent_context: context) span.context.trace_flags.wont_be :sampled? - span.wont_be :recording_events? + span.wont_be :recording? end it 'returns an unsampled span if sampler says record, but do not sample' do tracer.active_trace_config = TraceConfig.new(sampler: record_sampler) span = tracer.start_span('op', with_parent_context: context) span.context.trace_flags.wont_be :sampled? - span.must_be :recording_events? + span.must_be :recording? end it 'returns a sampled span if sampler says sample' do tracer.active_trace_config = TraceConfig.new(sampler: Samplers::ALWAYS_ON) span = tracer.start_span('op', with_parent_context: context) span.context.trace_flags.must_be :sampled? - span.must_be :recording_events? + span.must_be :recording? end it 'calls the sampler with all parameters' do @@ -258,7 +258,7 @@ tracer.shutdown span = tracer.start_span('op', with_parent_context: context) span.context.trace_flags.wont_be :sampled? - span.wont_be :recording_events? + span.wont_be :recording? span.context.trace_id.must_equal(context.trace_id) end From 329f9a25438bbaabcacffa8c37587a902de31536 Mon Sep 17 00:00:00 2001 From: Francis Bogsanyi Date: Tue, 15 Oct 2019 21:02:12 -0400 Subject: [PATCH 2/4] Exporters should only see sampled spans --- .../sdk/trace/export/batch_span_processor.rb | 4 ++-- .../sdk/trace/export/simple_span_processor.rb | 2 +- .../sdk/trace/samplers/probability_sampler.rb | 8 ++++---- sdk/lib/opentelemetry/sdk/trace/samplers/result.rb | 4 ++-- sdk/lib/opentelemetry/sdk/trace/tracer.rb | 2 +- .../sdk/trace/export/batch_span_processor_test.rb | 4 +++- .../sdk/trace/export/simple_span_processor_test.rb | 11 ++++++++--- .../opentelemetry/sdk/trace/samplers/result_test.rb | 8 ++++---- sdk/test/opentelemetry/sdk/trace/samplers_test.rb | 6 +++--- 9 files changed, 28 insertions(+), 21 deletions(-) diff --git a/sdk/lib/opentelemetry/sdk/trace/export/batch_span_processor.rb b/sdk/lib/opentelemetry/sdk/trace/export/batch_span_processor.rb index b610cf577e..50bcc4be4d 100644 --- a/sdk/lib/opentelemetry/sdk/trace/export/batch_span_processor.rb +++ b/sdk/lib/opentelemetry/sdk/trace/export/batch_span_processor.rb @@ -56,8 +56,8 @@ def on_start(span) end # adds a span to the batcher, threadsafe may block on lock - def on_finish(span) - return unless span.recording? + def on_finish(span) # rubocop:disable Metrics/AbcSize + return unless span.context.trace_flags.sampled? lock do n = spans.size + 1 - max_queue_size diff --git a/sdk/lib/opentelemetry/sdk/trace/export/simple_span_processor.rb b/sdk/lib/opentelemetry/sdk/trace/export/simple_span_processor.rb index 042c37e9d0..5761199728 100644 --- a/sdk/lib/opentelemetry/sdk/trace/export/simple_span_processor.rb +++ b/sdk/lib/opentelemetry/sdk/trace/export/simple_span_processor.rb @@ -47,7 +47,7 @@ def on_start(span) # # @param [Span] span the {Span} that just ended. def on_finish(span) - return unless span.recording? + return unless span.context.trace_flags.sampled? @span_exporter.export([span.to_span_data]) rescue => e # rubocop:disable Style/RescueStandardError diff --git a/sdk/lib/opentelemetry/sdk/trace/samplers/probability_sampler.rb b/sdk/lib/opentelemetry/sdk/trace/samplers/probability_sampler.rb index 4d123cb87c..4a8ec32d90 100644 --- a/sdk/lib/opentelemetry/sdk/trace/samplers/probability_sampler.rb +++ b/sdk/lib/opentelemetry/sdk/trace/samplers/probability_sampler.rb @@ -34,12 +34,12 @@ def call(trace_id:, span_id:, parent_context:, hint:, links:, name:, kind:, attr hint = nil if @ignored_hints.include?(hint) - sampled_flag = sample?(hint, trace_id, parent_context) - record_events = hint == HINT_RECORD || sampled_flag + sampled = sample?(hint, trace_id, parent_context) + recording = hint == HINT_RECORD || sampled - if sampled_flag && record_events + if sampled && recording RECORD_AND_PROPAGATE - elsif record_events + elsif recording RECORD else NOT_RECORD diff --git a/sdk/lib/opentelemetry/sdk/trace/samplers/result.rb b/sdk/lib/opentelemetry/sdk/trace/samplers/result.rb index d603a90368..cbb87c8554 100644 --- a/sdk/lib/opentelemetry/sdk/trace/samplers/result.rb +++ b/sdk/lib/opentelemetry/sdk/trace/samplers/result.rb @@ -43,10 +43,10 @@ def sampled? @decision == Decision::RECORD_AND_PROPAGATE end - # Returns true if this span should record events. + # Returns true if this span should record events, attributes, status, etc. # # @return [Boolean] recording decision - def record_events? + def recording? @decision != Decision::NOT_RECORD end end diff --git a/sdk/lib/opentelemetry/sdk/trace/tracer.rb b/sdk/lib/opentelemetry/sdk/trace/tracer.rb index 8b930c9ec3..924db17b1b 100644 --- a/sdk/lib/opentelemetry/sdk/trace/tracer.rb +++ b/sdk/lib/opentelemetry/sdk/trace/tracer.rb @@ -93,7 +93,7 @@ def start_span(name, with_parent: nil, with_parent_context: nil, attributes: nil private def internal_create_span(result, name, kind, trace_id, span_id, parent_span_id, attributes, links, start_timestamp) - if result.record_events? && !@stopped + if result.recording? && !@stopped trace_flags = result.sampled? ? OpenTelemetry::Trace::TraceFlags::SAMPLED : OpenTelemetry::Trace::TraceFlags::DEFAULT context = OpenTelemetry::Trace::SpanContext.new(trace_id: trace_id, trace_flags: trace_flags) attributes = attributes&.merge(result.attributes) || result.attributes diff --git a/sdk/test/opentelemetry/sdk/trace/export/batch_span_processor_test.rb b/sdk/test/opentelemetry/sdk/trace/export/batch_span_processor_test.rb index 24345b76a6..d2256a87d8 100644 --- a/sdk/test/opentelemetry/sdk/trace/export/batch_span_processor_test.rb +++ b/sdk/test/opentelemetry/sdk/trace/export/batch_span_processor_test.rb @@ -39,11 +39,13 @@ def shutdown; end class TestSpan def initialize(id = nil, recording = true) + trace_flags = recording ? OpenTelemetry::Trace::TraceFlags::SAMPLED : OpenTelemetry::Trace::TraceFlags::DEFAULT + @context = OpenTelemetry::Trace::SpanContext.new(trace_flags: trace_flags) @id = id @recording = recording end - attr_reader :id + attr_reader :id, :context def recording? @recording diff --git a/sdk/test/opentelemetry/sdk/trace/export/simple_span_processor_test.rb b/sdk/test/opentelemetry/sdk/trace/export/simple_span_processor_test.rb index 6b0516d2c0..20f25a2466 100644 --- a/sdk/test/opentelemetry/sdk/trace/export/simple_span_processor_test.rb +++ b/sdk/test/opentelemetry/sdk/trace/export/simple_span_processor_test.rb @@ -7,7 +7,8 @@ require 'test_helper' def stub_span_builder(recording: false) - ctx = OpenTelemetry::Trace::SpanContext.new + trace_flags = recording ? OpenTelemetry::Trace::TraceFlags::SAMPLED : OpenTelemetry::Trace::TraceFlags::DEFAULT + ctx = OpenTelemetry::Trace::SpanContext.new(trace_flags: trace_flags) span = OpenTelemetry::Trace::Span.new(span_context: ctx) def span.to_span_data; end @@ -55,13 +56,17 @@ def mock.nil? mock_span_exporter.verify end - it 'calls #to_span_data on recorded spans in #on_finish' do + it 'calls #to_span_data on sampled spans in #on_finish' do processor_noop = export::SimpleSpanProcessor.new( export::NoopSpanExporter.new ) + mock_trace_flags = Minitest::Mock.new + mock_trace_flags.expect :sampled?, true + mock_span_context = Minitest::Mock.new + mock_span_context.expect :trace_flags, mock_trace_flags mock_span = Minitest::Mock.new - mock_span.expect :recording?, true + mock_span.expect :context, mock_span_context mock_span.expect :to_span_data, nil processor_noop.on_start(mock_span) diff --git a/sdk/test/opentelemetry/sdk/trace/samplers/result_test.rb b/sdk/test/opentelemetry/sdk/trace/samplers/result_test.rb index 0a5fcf1317..02d4f519de 100644 --- a/sdk/test/opentelemetry/sdk/trace/samplers/result_test.rb +++ b/sdk/test/opentelemetry/sdk/trace/samplers/result_test.rb @@ -60,17 +60,17 @@ end end - describe '#record_events?' do + describe '#recording?' do it 'returns true when decision is RECORD_AND_PROPAGATE' do - Result.new(decision: Decision::RECORD_AND_PROPAGATE).must_be :record_events? + Result.new(decision: Decision::RECORD_AND_PROPAGATE).must_be :recording? end it 'returns true when decision is RECORD' do - Result.new(decision: Decision::RECORD).must_be :record_events? + Result.new(decision: Decision::RECORD).must_be :recording? end it 'returns false when decision is NOT_RECORD' do - Result.new(decision: Decision::NOT_RECORD).wont_be :record_events? + Result.new(decision: Decision::NOT_RECORD).wont_be :recording? end end end diff --git a/sdk/test/opentelemetry/sdk/trace/samplers_test.rb b/sdk/test/opentelemetry/sdk/trace/samplers_test.rb index 122b73697b..ad6aa76924 100644 --- a/sdk/test/opentelemetry/sdk/trace/samplers_test.rb +++ b/sdk/test/opentelemetry/sdk/trace/samplers_test.rb @@ -123,11 +123,11 @@ record_result = call_sampler(sampler, hint: OpenTelemetry::Trace::SamplingHint::RECORD) record_and_propagate_result = call_sampler(sampler, hint: OpenTelemetry::Trace::SamplingHint::RECORD_AND_PROPAGATE) not_record_result.wont_be :sampled? - not_record_result.wont_be :record_events? + not_record_result.wont_be :recording? record_result.wont_be :sampled? - record_result.must_be :record_events? + record_result.must_be :recording? record_and_propagate_result.must_be :sampled? - record_and_propagate_result.must_be :record_events? + record_and_propagate_result.must_be :recording? end it 'does not allow invalid hints in ignore_hints' do From 5111e51c4136d0c68c09ed13de46063b6cbf13b3 Mon Sep 17 00:00:00 2001 From: Francis Bogsanyi Date: Tue, 15 Oct 2019 21:10:52 -0400 Subject: [PATCH 3/4] s/_AND_PROPAGATE/_AND_SAMPLED/g --- api/lib/opentelemetry/trace/sampling_hint.rb | 2 +- sdk/lib/opentelemetry/sdk/trace/samplers.rb | 14 +++++++------- .../opentelemetry/sdk/trace/samplers/decision.rb | 2 +- .../sdk/trace/samplers/probability_sampler.rb | 10 +++++----- sdk/lib/opentelemetry/sdk/trace/samplers/result.rb | 4 ++-- .../sdk/trace/samplers/result_test.rb | 10 +++++----- sdk/test/opentelemetry/sdk/trace/samplers_test.rb | 2 +- 7 files changed, 22 insertions(+), 22 deletions(-) diff --git a/api/lib/opentelemetry/trace/sampling_hint.rb b/api/lib/opentelemetry/trace/sampling_hint.rb index 872a91dab6..52af681997 100644 --- a/api/lib/opentelemetry/trace/sampling_hint.rb +++ b/api/lib/opentelemetry/trace/sampling_hint.rb @@ -16,7 +16,7 @@ module SamplingHint RECORD = :__record__ # Suggest to record events and propagate. - RECORD_AND_PROPAGATE = :__record_and_propagate__ + RECORD_AND_SAMPLED = :__record_and_propagate__ end end end diff --git a/sdk/lib/opentelemetry/sdk/trace/samplers.rb b/sdk/lib/opentelemetry/sdk/trace/samplers.rb index 1897a9b92e..2247692b34 100644 --- a/sdk/lib/opentelemetry/sdk/trace/samplers.rb +++ b/sdk/lib/opentelemetry/sdk/trace/samplers.rb @@ -38,31 +38,31 @@ module Trace # to the {Span} to be created. Can be nil. # @return [Result] The sampling result. module Samplers - RECORD_AND_PROPAGATE = Result.new(decision: Decision::RECORD_AND_PROPAGATE) + RECORD_AND_SAMPLED = Result.new(decision: Decision::RECORD_AND_SAMPLED) NOT_RECORD = Result.new(decision: Decision::NOT_RECORD) RECORD = Result.new(decision: Decision::RECORD) - SAMPLING_HINTS = [Decision::NOT_RECORD, Decision::RECORD, Decision::RECORD_AND_PROPAGATE].freeze + SAMPLING_HINTS = [Decision::NOT_RECORD, Decision::RECORD, Decision::RECORD_AND_SAMPLED].freeze APPLY_PROBABILITY_TO_SYMBOLS = %i[root_spans root_spans_and_remote_parent all_spans].freeze - private_constant(:RECORD_AND_PROPAGATE, :NOT_RECORD, :RECORD, :SAMPLING_HINTS, :APPLY_PROBABILITY_TO_SYMBOLS) + private_constant(:RECORD_AND_SAMPLED, :NOT_RECORD, :RECORD, :SAMPLING_HINTS, :APPLY_PROBABILITY_TO_SYMBOLS) # rubocop:disable Lint/UnusedBlockArgument # Ignores all values in hint and returns a {Result} with - # {Decision::RECORD_AND_PROPAGATE}. - ALWAYS_ON = ->(trace_id:, span_id:, parent_context:, hint:, links:, name:, kind:, attributes:) { RECORD_AND_PROPAGATE } + # {Decision::RECORD_AND_SAMPLED}. + ALWAYS_ON = ->(trace_id:, span_id:, parent_context:, hint:, links:, name:, kind:, attributes:) { RECORD_AND_SAMPLED } # Ignores all values in hint and returns a {Result} with # {Decision::NOT_RECORD}. ALWAYS_OFF = ->(trace_id:, span_id:, parent_context:, hint:, links:, name:, kind:, attributes:) { NOT_RECORD } # Ignores all values in hint and returns a {Result} with - # {Decision::RECORD_AND_PROPAGATE} if the parent context is sampled or + # {Decision::RECORD_AND_SAMPLED} if the parent context is sampled or # {Decision::NOT_RECORD} otherwise, or if there is no parent context. # rubocop:disable Style/Lambda ALWAYS_PARENT = ->(trace_id:, span_id:, parent_context:, hint:, links:, name:, kind:, attributes:) do if parent_context&.trace_flags&.sampled? - RECORD_AND_PROPAGATE + RECORD_AND_SAMPLED else NOT_RECORD end diff --git a/sdk/lib/opentelemetry/sdk/trace/samplers/decision.rb b/sdk/lib/opentelemetry/sdk/trace/samplers/decision.rb index 0064b03720..247242035c 100644 --- a/sdk/lib/opentelemetry/sdk/trace/samplers/decision.rb +++ b/sdk/lib/opentelemetry/sdk/trace/samplers/decision.rb @@ -18,7 +18,7 @@ module Decision RECORD = OpenTelemetry::Trace::SamplingHint::RECORD # Decision to record events and propagate. - RECORD_AND_PROPAGATE = OpenTelemetry::Trace::SamplingHint::RECORD_AND_PROPAGATE + RECORD_AND_SAMPLED = OpenTelemetry::Trace::SamplingHint::RECORD_AND_SAMPLED end end end diff --git a/sdk/lib/opentelemetry/sdk/trace/samplers/probability_sampler.rb b/sdk/lib/opentelemetry/sdk/trace/samplers/probability_sampler.rb index 4a8ec32d90..519369944f 100644 --- a/sdk/lib/opentelemetry/sdk/trace/samplers/probability_sampler.rb +++ b/sdk/lib/opentelemetry/sdk/trace/samplers/probability_sampler.rb @@ -12,10 +12,10 @@ module Samplers # # Implements sampling based on a probability. class ProbabilitySampler - HINT_RECORD_AND_PROPAGATE = OpenTelemetry::Trace::SamplingHint::RECORD_AND_PROPAGATE + HINT_RECORD_AND_SAMPLED = OpenTelemetry::Trace::SamplingHint::RECORD_AND_SAMPLED HINT_RECORD = OpenTelemetry::Trace::SamplingHint::RECORD - private_constant(:HINT_RECORD_AND_PROPAGATE, :HINT_RECORD) + private_constant(:HINT_RECORD_AND_SAMPLED, :HINT_RECORD) def initialize(probability, ignore_hints:, ignore_parent:, apply_to_remote_parent:, apply_to_all_spans:) @probability = probability @@ -38,7 +38,7 @@ def call(trace_id:, span_id:, parent_context:, hint:, links:, name:, kind:, attr recording = hint == HINT_RECORD || sampled if sampled && recording - RECORD_AND_PROPAGATE + RECORD_AND_SAMPLED elsif recording RECORD else @@ -50,9 +50,9 @@ def call(trace_id:, span_id:, parent_context:, hint:, links:, name:, kind:, attr def sample?(hint, trace_id, parent_context) if parent_context.nil? - hint == HINT_RECORD_AND_PROPAGATE || sample_trace_id?(trace_id) + hint == HINT_RECORD_AND_SAMPLED || sample_trace_id?(trace_id) else - parent_sampled?(parent_context) || hint == HINT_RECORD_AND_PROPAGATE || sample_trace_id_for_child?(parent_context, trace_id) + parent_sampled?(parent_context) || hint == HINT_RECORD_AND_SAMPLED || sample_trace_id_for_child?(parent_context, trace_id) end end diff --git a/sdk/lib/opentelemetry/sdk/trace/samplers/result.rb b/sdk/lib/opentelemetry/sdk/trace/samplers/result.rb index cbb87c8554..177a746b9d 100644 --- a/sdk/lib/opentelemetry/sdk/trace/samplers/result.rb +++ b/sdk/lib/opentelemetry/sdk/trace/samplers/result.rb @@ -14,7 +14,7 @@ module Samplers # root span. class Result EMPTY_HASH = {}.freeze - DECISIONS = [Decision::RECORD, Decision::NOT_RECORD, Decision::RECORD_AND_PROPAGATE].freeze + DECISIONS = [Decision::RECORD, Decision::NOT_RECORD, Decision::RECORD_AND_SAMPLED].freeze private_constant(:EMPTY_HASH, :DECISIONS) # Returns a frozen hash of attributes to be attached span. @@ -40,7 +40,7 @@ def initialize(decision:, attributes: nil) # # @return [Boolean] sampling decision def sampled? - @decision == Decision::RECORD_AND_PROPAGATE + @decision == Decision::RECORD_AND_SAMPLED end # Returns true if this span should record events, attributes, status, etc. diff --git a/sdk/test/opentelemetry/sdk/trace/samplers/result_test.rb b/sdk/test/opentelemetry/sdk/trace/samplers/result_test.rb index 02d4f519de..47fab3e0c8 100644 --- a/sdk/test/opentelemetry/sdk/trace/samplers/result_test.rb +++ b/sdk/test/opentelemetry/sdk/trace/samplers/result_test.rb @@ -35,7 +35,7 @@ describe '#initialize' do it 'accepts Decision constants' do Result.new(decision: Decision::RECORD).wont_be_nil - Result.new(decision: Decision::RECORD_AND_PROPAGATE).wont_be_nil + Result.new(decision: Decision::RECORD_AND_SAMPLED).wont_be_nil Result.new(decision: Decision::NOT_RECORD).wont_be_nil end @@ -47,8 +47,8 @@ end describe '#sampled?' do - it 'returns true when decision is RECORD_AND_PROPAGATE' do - Result.new(decision: Decision::RECORD_AND_PROPAGATE).must_be :sampled? + it 'returns true when decision is RECORD_AND_SAMPLED' do + Result.new(decision: Decision::RECORD_AND_SAMPLED).must_be :sampled? end it 'returns false when decision is RECORD' do @@ -61,8 +61,8 @@ end describe '#recording?' do - it 'returns true when decision is RECORD_AND_PROPAGATE' do - Result.new(decision: Decision::RECORD_AND_PROPAGATE).must_be :recording? + it 'returns true when decision is RECORD_AND_SAMPLED' do + Result.new(decision: Decision::RECORD_AND_SAMPLED).must_be :recording? end it 'returns true when decision is RECORD' do diff --git a/sdk/test/opentelemetry/sdk/trace/samplers_test.rb b/sdk/test/opentelemetry/sdk/trace/samplers_test.rb index ad6aa76924..c6acd16a57 100644 --- a/sdk/test/opentelemetry/sdk/trace/samplers_test.rb +++ b/sdk/test/opentelemetry/sdk/trace/samplers_test.rb @@ -121,7 +121,7 @@ sampler = Samplers.probability(0, ignore_hints: nil) not_record_result = call_sampler(sampler, hint: OpenTelemetry::Trace::SamplingHint::NOT_RECORD) record_result = call_sampler(sampler, hint: OpenTelemetry::Trace::SamplingHint::RECORD) - record_and_propagate_result = call_sampler(sampler, hint: OpenTelemetry::Trace::SamplingHint::RECORD_AND_PROPAGATE) + record_and_propagate_result = call_sampler(sampler, hint: OpenTelemetry::Trace::SamplingHint::RECORD_AND_SAMPLED) not_record_result.wont_be :sampled? not_record_result.wont_be :recording? record_result.wont_be :sampled? From 3a760cb26b4471dff6b446ef80b5f0b3c8c35a7d Mon Sep 17 00:00:00 2001 From: Francis Bogsanyi Date: Wed, 16 Oct 2019 09:40:19 -0400 Subject: [PATCH 4/4] Fix remaining references to "propagate" --- api/lib/opentelemetry/trace/sampling_hint.rb | 8 ++++---- sdk/lib/opentelemetry/sdk/trace/samplers/decision.rb | 6 +++--- sdk/test/opentelemetry/sdk/trace/samplers_test.rb | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/api/lib/opentelemetry/trace/sampling_hint.rb b/api/lib/opentelemetry/trace/sampling_hint.rb index 52af681997..e37c8cca59 100644 --- a/api/lib/opentelemetry/trace/sampling_hint.rb +++ b/api/lib/opentelemetry/trace/sampling_hint.rb @@ -9,14 +9,14 @@ module Trace # Hints to influence sampling decisions. The default option for span # creation is to not provide any suggestion. module SamplingHint - # Suggest to not record events and not propagate. + # Suggest to not record events and not sample. NOT_RECORD = :__not_record__ - # Suggest to record events and not propagate. + # Suggest to record events and not sample. RECORD = :__record__ - # Suggest to record events and propagate. - RECORD_AND_SAMPLED = :__record_and_propagate__ + # Suggest to record events and sample. + RECORD_AND_SAMPLED = :__record_and_sampled__ end end end diff --git a/sdk/lib/opentelemetry/sdk/trace/samplers/decision.rb b/sdk/lib/opentelemetry/sdk/trace/samplers/decision.rb index 247242035c..9ea72b0dfd 100644 --- a/sdk/lib/opentelemetry/sdk/trace/samplers/decision.rb +++ b/sdk/lib/opentelemetry/sdk/trace/samplers/decision.rb @@ -11,13 +11,13 @@ module Samplers # The Decision module contains a set of constants to be used in the # decision part of a sampling {Result}. module Decision - # Decision to not record events and not propagate. + # Decision to not record events and not sample. NOT_RECORD = OpenTelemetry::Trace::SamplingHint::NOT_RECORD - # Decision to record events and not propagate. + # Decision to record events and not sample. RECORD = OpenTelemetry::Trace::SamplingHint::RECORD - # Decision to record events and propagate. + # Decision to record events and sample. RECORD_AND_SAMPLED = OpenTelemetry::Trace::SamplingHint::RECORD_AND_SAMPLED end end diff --git a/sdk/test/opentelemetry/sdk/trace/samplers_test.rb b/sdk/test/opentelemetry/sdk/trace/samplers_test.rb index c6acd16a57..1fc5622a45 100644 --- a/sdk/test/opentelemetry/sdk/trace/samplers_test.rb +++ b/sdk/test/opentelemetry/sdk/trace/samplers_test.rb @@ -121,13 +121,13 @@ sampler = Samplers.probability(0, ignore_hints: nil) not_record_result = call_sampler(sampler, hint: OpenTelemetry::Trace::SamplingHint::NOT_RECORD) record_result = call_sampler(sampler, hint: OpenTelemetry::Trace::SamplingHint::RECORD) - record_and_propagate_result = call_sampler(sampler, hint: OpenTelemetry::Trace::SamplingHint::RECORD_AND_SAMPLED) + record_and_sampled_result = call_sampler(sampler, hint: OpenTelemetry::Trace::SamplingHint::RECORD_AND_SAMPLED) not_record_result.wont_be :sampled? not_record_result.wont_be :recording? record_result.wont_be :sampled? record_result.must_be :recording? - record_and_propagate_result.must_be :sampled? - record_and_propagate_result.must_be :recording? + record_and_sampled_result.must_be :sampled? + record_and_sampled_result.must_be :recording? end it 'does not allow invalid hints in ignore_hints' do