Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions newrelic/api/transaction.py
Original file line number Diff line number Diff line change
Expand Up @@ -1117,9 +1117,9 @@ def _make_sampling_decision(self):
priority,
sampled,
full_granularity=True,
root_setting=self.settings.distributed_tracing.sampler.full_granularity._root,
remote_parent_sampled_setting=self.settings.distributed_tracing.sampler.full_granularity._remote_parent_sampled,
remote_parent_not_sampled_setting=self.settings.distributed_tracing.sampler.full_granularity._remote_parent_not_sampled,
root_setting=self.settings.distributed_tracing.sampler._root,
remote_parent_sampled_setting=self.settings.distributed_tracing.sampler._remote_parent_sampled,
remote_parent_not_sampled_setting=self.settings.distributed_tracing.sampler._remote_parent_not_sampled,
)
_logger.debug("Full granularity sampling decision was %s with priority=%s.", sampled, priority)
if computed_sampled or not self.settings.distributed_tracing.sampler.partial_granularity.enabled:
Expand Down
83 changes: 9 additions & 74 deletions newrelic/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -329,51 +329,6 @@ def _process_setting(section, option, getter, mapper):
_raise_configuration_error(section, option)


def _process_dt_setting(section, option_p1, option_p2, getter):
try:
# The type of a value is dictated by the getter
# function supplied.

value1 = getattr(_config_object, getter)(section, option_p1)
value2 = getattr(_config_object, getter)(section, option_p2)

# Now need to apply the option from the
# configuration file to the internal settings
# object. Walk the object path and assign it.

target = _settings
fields = option_p1.split(".", 1)

while True:
if len(fields) == 1:
value = value1 or value2 or "default"
# Store the value at the underscored location so if option_p1 is
# distributed_tracing.sampler.full_granularity.remote_parent_sampled
# store it at location
# distributed_tracing.sampler.full_granularity._remote_parent_sampled
setattr(target, f"_{fields[0]}", value)
break
target = getattr(target, fields[0])
fields = fields[1].split(".", 1)

# Cache the configuration so can be dumped out to
# log file when whole main configuration has been
# processed. This ensures that the log file and log
# level entries have been set.

_cache_object.append((option_p1, value1))
_cache_object.append((option_p2, value2))

except configparser.NoSectionError:
pass

except configparser.NoOptionError:
pass

except Exception:
_raise_configuration_error(section, option_p1)


def _process_dt_hidden_setting(section, option, getter):
try:
# The type of a value is dictated by the getter
Expand Down Expand Up @@ -546,42 +501,22 @@ def _process_configuration(section):
_process_setting(section, "distributed_tracing.enabled", "getboolean", None)
_process_setting(section, "distributed_tracing.exclude_newrelic_header", "getboolean", None)
_process_setting(section, "distributed_tracing.sampler.adaptive_sampling_target", "getint", None)
_process_dt_hidden_setting(section, "distributed_tracing.sampler.full_granularity.root", "get")
_process_dt_hidden_setting(section, "distributed_tracing.sampler.root", "get")
_process_dt_sampler_setting(section, "distributed_tracing.sampler.root.adaptive.sampling_target", "getint")
_process_dt_sampler_setting(section, "distributed_tracing.sampler.root.trace_id_ratio_based.ratio", "getratio")
_process_dt_hidden_setting(section, "distributed_tracing.sampler.remote_parent_sampled", "get")
_process_dt_sampler_setting(
section, "distributed_tracing.sampler.full_granularity.root.adaptive.sampling_target", "getint"
section, "distributed_tracing.sampler.remote_parent_sampled.adaptive.sampling_target", "getint"
)
_process_dt_sampler_setting(
section, "distributed_tracing.sampler.full_granularity.root.trace_id_ratio_based.ratio", "getratio"
)
_process_dt_setting(
section,
"distributed_tracing.sampler.full_granularity.remote_parent_sampled",
"distributed_tracing.sampler.remote_parent_sampled",
"get",
section, "distributed_tracing.sampler.remote_parent_sampled.trace_id_ratio_based.ratio", "getratio"
)
_process_dt_hidden_setting(section, "distributed_tracing.sampler.remote_parent_not_sampled", "get")
_process_dt_sampler_setting(
section, "distributed_tracing.sampler.full_granularity.remote_parent_sampled.adaptive.sampling_target", "getint"
section, "distributed_tracing.sampler.remote_parent_not_sampled.adaptive.sampling_target", "getint"
)
_process_dt_sampler_setting(
section,
"distributed_tracing.sampler.full_granularity.remote_parent_sampled.trace_id_ratio_based.ratio",
"getratio",
)
_process_dt_setting(
section,
"distributed_tracing.sampler.full_granularity.remote_parent_not_sampled",
"distributed_tracing.sampler.remote_parent_not_sampled",
"get",
)
_process_dt_sampler_setting(
section,
"distributed_tracing.sampler.full_granularity.remote_parent_not_sampled.adaptive.sampling_target",
"getint",
)
_process_dt_sampler_setting(
section,
"distributed_tracing.sampler.full_granularity.remote_parent_not_sampled.trace_id_ratio_based.ratio",
"getratio",
section, "distributed_tracing.sampler.remote_parent_not_sampled.trace_id_ratio_based.ratio", "getratio"
)
_process_setting(section, "distributed_tracing.sampler.full_granularity.enabled", "getboolean", None)
_process_setting(section, "distributed_tracing.sampler.partial_granularity.enabled", "getboolean", None)
Expand Down
126 changes: 52 additions & 74 deletions newrelic/core/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -334,48 +334,48 @@ class DistributedTracingSettings(Settings):


class DistributedTracingSamplerSettings(Settings):
pass


class DistributedTracingSamplerFullGranularitySettings(Settings):
_root = "default"
_remote_parent_sampled = "default"
_remote_parent_not_sampled = "default"


class DistributedTracingSamplerFullGranularityRootSettings:
class DistributedTracingSamplerFullGranularitySettings(Settings):
pass


class DistributedTracingSamplerFullGranularityRootAdaptiveSettings:
class DistributedTracingSamplerRootSettings:
pass


class DistributedTracingSamplerFullGranularityRootTraceIdRatioBasedSettings:
class DistributedTracingSamplerRootAdaptiveSettings:
pass


class DistributedTracingSamplerFullGranularityRemoteParentSampledSettings:
class DistributedTracingSamplerRootTraceIdRatioBasedSettings:
pass


class DistributedTracingSamplerFullGranularityRemoteParentSampledAdaptiveSettings:
class DistributedTracingSamplerRemoteParentSampledSettings:
pass


class DistributedTracingSamplerFullGranularityRemoteParentSampledTraceIdRatioBasedSettings:
class DistributedTracingSamplerRemoteParentSampledAdaptiveSettings:
pass


class DistributedTracingSamplerFullGranularityRemoteParentNotSampledSettings:
class DistributedTracingSamplerRemoteParentSampledTraceIdRatioBasedSettings:
pass


class DistributedTracingSamplerFullGranularityRemoteParentNotSampledAdaptiveSettings:
class DistributedTracingSamplerRemoteParentNotSampledSettings:
pass


class DistributedTracingSamplerFullGranularityRemoteParentNotSampledTraceIdRatioBasedSettings:
class DistributedTracingSamplerRemoteParentNotSampledAdaptiveSettings:
pass


class DistributedTracingSamplerRemoteParentNotSampledTraceIdRatioBasedSettings:
pass


Expand Down Expand Up @@ -596,30 +596,26 @@ class OpentelemetrySettings(Settings):
_settings.distributed_tracing = DistributedTracingSettings()
_settings.distributed_tracing.sampler = DistributedTracingSamplerSettings()
_settings.distributed_tracing.sampler.full_granularity = DistributedTracingSamplerFullGranularitySettings()
_settings.distributed_tracing.sampler.full_granularity.root = DistributedTracingSamplerFullGranularityRootSettings()
_settings.distributed_tracing.sampler.full_granularity.root.adaptive = (
DistributedTracingSamplerFullGranularityRootAdaptiveSettings()
)
_settings.distributed_tracing.sampler.full_granularity.root.trace_id_ratio_based = (
DistributedTracingSamplerFullGranularityRootTraceIdRatioBasedSettings()
)
_settings.distributed_tracing.sampler.full_granularity.remote_parent_sampled = (
DistributedTracingSamplerFullGranularityRemoteParentSampledSettings()
_settings.distributed_tracing.sampler.root = DistributedTracingSamplerRootSettings()
_settings.distributed_tracing.sampler.root.adaptive = DistributedTracingSamplerRootAdaptiveSettings()
_settings.distributed_tracing.sampler.root.trace_id_ratio_based = (
DistributedTracingSamplerRootTraceIdRatioBasedSettings()
)
_settings.distributed_tracing.sampler.full_granularity.remote_parent_sampled.adaptive = (
DistributedTracingSamplerFullGranularityRemoteParentSampledAdaptiveSettings()
_settings.distributed_tracing.sampler.remote_parent_sampled = DistributedTracingSamplerRemoteParentSampledSettings()
_settings.distributed_tracing.sampler.remote_parent_sampled.adaptive = (
DistributedTracingSamplerRemoteParentSampledAdaptiveSettings()
)
_settings.distributed_tracing.sampler.full_granularity.remote_parent_sampled.trace_id_ratio_based = (
DistributedTracingSamplerFullGranularityRemoteParentSampledTraceIdRatioBasedSettings()
_settings.distributed_tracing.sampler.remote_parent_sampled.trace_id_ratio_based = (
DistributedTracingSamplerRemoteParentSampledTraceIdRatioBasedSettings()
)
_settings.distributed_tracing.sampler.full_granularity.remote_parent_not_sampled = (
DistributedTracingSamplerFullGranularityRemoteParentNotSampledSettings()
_settings.distributed_tracing.sampler.remote_parent_not_sampled = (
DistributedTracingSamplerRemoteParentNotSampledSettings()
)
_settings.distributed_tracing.sampler.full_granularity.remote_parent_not_sampled.adaptive = (
DistributedTracingSamplerFullGranularityRemoteParentNotSampledAdaptiveSettings()
_settings.distributed_tracing.sampler.remote_parent_not_sampled.adaptive = (
DistributedTracingSamplerRemoteParentNotSampledAdaptiveSettings()
)
_settings.distributed_tracing.sampler.full_granularity.remote_parent_not_sampled.trace_id_ratio_based = (
DistributedTracingSamplerFullGranularityRemoteParentNotSampledTraceIdRatioBasedSettings()
_settings.distributed_tracing.sampler.remote_parent_not_sampled.trace_id_ratio_based = (
DistributedTracingSamplerRemoteParentNotSampledTraceIdRatioBasedSettings()
)
_settings.distributed_tracing.sampler.partial_granularity = DistributedTracingSamplerPartialGranularitySettings()
_settings.distributed_tracing.sampler.partial_granularity.root = (
Expand Down Expand Up @@ -1020,86 +1016,68 @@ def default_otlp_host(host):
_settings.distributed_tracing.sampler.full_granularity.enabled = _environ_as_bool(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_ENABLED", default=True
)
_settings.distributed_tracing.sampler.full_granularity._root = (
_settings.distributed_tracing.sampler._root = (
(
"trace_id_ratio_based"
if _environ_as_ratio(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_ROOT_TRACE_ID_RATIO_BASED_RATIO", None
)
if _environ_as_ratio("NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_ROOT_TRACE_ID_RATIO_BASED_RATIO", None)
else None
)
or (
"adaptive"
if os.environ.get("NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_ROOT_ADAPTIVE_SAMPLING_TARGET", None)
if os.environ.get("NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_ROOT_ADAPTIVE_SAMPLING_TARGET", None)
else None
)
or _environ_as_sampler("NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_ROOT", "default")
or _environ_as_sampler("NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_ROOT", "default")
)
_settings.distributed_tracing.sampler.full_granularity.root.adaptive.sampling_target = _environ_as_int(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_ROOT_ADAPTIVE_SAMPLING_TARGET", None
_settings.distributed_tracing.sampler.root.adaptive.sampling_target = _environ_as_int(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_ROOT_ADAPTIVE_SAMPLING_TARGET", None
)
_settings.distributed_tracing.sampler.full_granularity.root.trace_id_ratio_based.ratio = _environ_as_ratio(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_ROOT_TRACE_ID_RATIO_BASED_RATIO", None
_settings.distributed_tracing.sampler.root.trace_id_ratio_based.ratio = _environ_as_ratio(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_ROOT_TRACE_ID_RATIO_BASED_RATIO", None
)
_settings.distributed_tracing.sampler.full_granularity._remote_parent_sampled = (
_settings.distributed_tracing.sampler._remote_parent_sampled = (
(
"trace_id_ratio_based"
if _environ_as_ratio(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_REMOTE_PARENT_SAMPLED_TRACE_ID_RATIO_BASED_RATIO",
None,
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_SAMPLED_TRACE_ID_RATIO_BASED_RATIO", None
)
else None
)
or (
"adaptive"
if os.environ.get(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_REMOTE_PARENT_SAMPLED_ADAPTIVE_SAMPLING_TARGET",
None,
)
if os.environ.get("NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_SAMPLED_ADAPTIVE_SAMPLING_TARGET", None)
else None
)
or _environ_as_sampler("NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_REMOTE_PARENT_SAMPLED", None)
or os.environ.get("NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_SAMPLED", "default")
or _environ_as_sampler("NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_SAMPLED", "default")
)
_settings.distributed_tracing.sampler.full_granularity.remote_parent_sampled.adaptive.sampling_target = _environ_as_int(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_REMOTE_PARENT_SAMPLED_ADAPTIVE_SAMPLING_TARGET", None
_settings.distributed_tracing.sampler.remote_parent_sampled.adaptive.sampling_target = _environ_as_int(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_SAMPLED_ADAPTIVE_SAMPLING_TARGET", None
)
_settings.distributed_tracing.sampler.full_granularity.remote_parent_sampled.trace_id_ratio_based.ratio = (
_environ_as_ratio(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_REMOTE_PARENT_SAMPLED_TRACE_ID_RATIO_BASED_RATIO", None
)
_settings.distributed_tracing.sampler.remote_parent_sampled.trace_id_ratio_based.ratio = _environ_as_ratio(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_SAMPLED_TRACE_ID_RATIO_BASED_RATIO", None
)
_settings.distributed_tracing.sampler.full_granularity._remote_parent_not_sampled = (
_settings.distributed_tracing.sampler._remote_parent_not_sampled = (
(
"trace_id_ratio_based"
if _environ_as_ratio(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_REMOTE_PARENT_NOT_SAMPLED_TRACE_ID_RATIO_BASED_RATIO",
None,
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_NOT_SAMPLED_TRACE_ID_RATIO_BASED_RATIO", None
)
else None
)
or (
"adaptive"
if os.environ.get(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_REMOTE_PARENT_NOT_SAMPLED_ADAPTIVE_SAMPLING_TARGET",
None,
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_NOT_SAMPLED_ADAPTIVE_SAMPLING_TARGET", None
)
else None
)
or _environ_as_sampler("NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_REMOTE_PARENT_NOT_SAMPLED", None)
or os.environ.get("NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_NOT_SAMPLED", "default")
or _environ_as_sampler("NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_NOT_SAMPLED", "default")
)
_settings.distributed_tracing.sampler.full_granularity.remote_parent_not_sampled.adaptive.sampling_target = (
_environ_as_int(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_REMOTE_PARENT_NOT_SAMPLED_ADAPTIVE_SAMPLING_TARGET",
None,
)
_settings.distributed_tracing.sampler.remote_parent_not_sampled.adaptive.sampling_target = _environ_as_int(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_NOT_SAMPLED_ADAPTIVE_SAMPLING_TARGET", None
)
_settings.distributed_tracing.sampler.full_granularity.remote_parent_not_sampled.trace_id_ratio_based.ratio = (
_environ_as_ratio(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_FULL_GRANULARITY_REMOTE_PARENT_NOT_SAMPLED_TRACE_ID_RATIO_BASED_RATIO",
None,
)
_settings.distributed_tracing.sampler.remote_parent_not_sampled.trace_id_ratio_based.ratio = _environ_as_ratio(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_REMOTE_PARENT_NOT_SAMPLED_TRACE_ID_RATIO_BASED_RATIO", None
)
_settings.distributed_tracing.sampler.partial_granularity.enabled = _environ_as_bool(
"NEW_RELIC_DISTRIBUTED_TRACING_SAMPLER_PARTIAL_GRANULARITY_ENABLED", default=False
Expand Down
Loading
Loading