Module: NewRelic::Agent::Configuration::SamplerConfigValidator

Defined in:
lib/new_relic/agent/configuration/sampler_config_validator.rb

Overview

Handles validation for the ‘distributed_tracing.sampler.*` configs Focuses on validating the trace id ratio based ratios

Class Method Summary collapse

Class Method Details

.reset_warnings!Object

used for testing



47
48
49
# File 'lib/new_relic/agent/configuration/sampler_config_validator.rb', line 47

def reset_warnings!
  @sampler_strategy_warnings = {}
end

.valid_ratio?(ratio) ⇒ Boolean

Returns:



42
43
44
# File 'lib/new_relic/agent/configuration/sampler_config_validator.rb', line 42

def valid_ratio?(ratio)
  ratio.is_a?(Float) && (0.0..1.0).cover?(ratio)
end

.validate_sampler_strategy_with_ratio(strategy_key, ratio_key) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/new_relic/agent/configuration/sampler_config_validator.rb', line 21

def validate_sampler_strategy_with_ratio(strategy_key, ratio_key)
  proc do |strategy|
    next strategy unless strategy == 'trace_id_ratio_based'

    ratio = NewRelic::Agent.config[ratio_key]

    next strategy if valid_ratio?(ratio)

    unless @sampler_strategy_warnings[strategy_key]
      NewRelic::Agent.logger.warn(
        "Invalid or missing ratio for #{ratio_key} (value: #{ratio.inspect}). " \
        "Falling back to 'default' for #{strategy_key}."
      )

      @sampler_strategy_warnings[strategy_key] = true
    end

    'default'
  end
end

.validate_sampling_ratio(ratio) ⇒ Object



14
15
16
17
18
19
# File 'lib/new_relic/agent/configuration/sampler_config_validator.rb', line 14

def validate_sampling_ratio(ratio)
  return nil if ratio.nil?
  return nil unless valid_ratio?(ratio)

  ratio
end