Sha256: 055ba72f1f8fc9bd557fafd580e3f8bb86784a0d0eed2676f1b65f118f0a0758
Contents?: true
Size: 1.43 KB
Versions: 21
Compression:
Stored size: 1.43 KB
Contents
# frozen_string_literal: true require_relative '../../../core/transport/ext' module Datadog module Tracing module Contrib module HTTP # HTTP integration circuit breaker behavior # For avoiding recursive traces. module CircuitBreaker def should_skip_tracing?(request) return true if internal_request?(request) # we don't want a "shotgun" effect with two nested traces for one # logical get, and request is likely to call itself recursively active = Tracing.active_span return true if active && (active.name == Ext::SPAN_REQUEST) false end # We don't want to trace our own call to the API (they use net/http) # TODO: We don't want this kind of soft-check on HTTP requests. # Remove this when transport implements its own "skip tracing" mechanism. def internal_request?(request) !!(request[Datadog::Core::Transport::Ext::HTTP::HEADER_META_TRACER_VERSION] || request[Datadog::Core::Transport::Ext::HTTP::HEADER_DD_INTERNAL_UNTRACED_REQUEST]) end def should_skip_distributed_tracing?(client_config) return !client_config[:distributed_tracing] if client_config && client_config.key?(:distributed_tracing) !Datadog.configuration.tracing[:http][:distributed_tracing] end end end end end end
Version data entries
21 entries across 21 versions & 2 rubygems