datadog 2.31.0 → 2.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +17 -7
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +11 -4
- data/ext/datadog_profiling_native_extension/collectors_thread_context.h +6 -0
- data/ext/datadog_profiling_native_extension/extconf.rb +5 -4
- data/ext/datadog_profiling_native_extension/http_transport.c +10 -5
- data/ext/libdatadog_api/di.c +48 -0
- data/ext/libdatadog_api/extconf.rb +7 -4
- data/ext/libdatadog_extconf_helpers.rb +37 -0
- data/lib/datadog/ai_guard/configuration.rb +105 -2
- data/lib/datadog/ai_guard/evaluation.rb +1 -0
- data/lib/datadog/ai_guard/ext.rb +1 -0
- data/lib/datadog/appsec/autoload.rb +1 -1
- data/lib/datadog/appsec/component.rb +1 -1
- data/lib/datadog/appsec/configuration.rb +414 -1
- data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +2 -1
- data/lib/datadog/appsec/contrib/rack/gateway/request.rb +1 -1
- data/lib/datadog/appsec/contrib/rails/patcher.rb +2 -2
- data/lib/datadog/appsec/metrics/telemetry.rb +13 -1
- data/lib/datadog/appsec/security_engine/runner.rb +1 -1
- data/lib/datadog/appsec/trace_keeper.rb +18 -6
- data/lib/datadog/appsec/utils/http/url_encoded.rb +2 -2
- data/lib/datadog/core/configuration/components.rb +1 -1
- data/lib/datadog/core/configuration/settings.rb +3 -0
- data/lib/datadog/core/configuration/supported_configurations.rb +2 -0
- data/lib/datadog/core/configuration.rb +1 -1
- data/lib/datadog/core/contrib/rails/utils.rb +1 -1
- data/lib/datadog/core/crashtracking/component.rb +3 -3
- data/lib/datadog/core/diagnostics/environment_logger.rb +3 -1
- data/lib/datadog/core/environment/container.rb +2 -2
- data/lib/datadog/core/feature_flags.rb +1 -1
- data/lib/datadog/core/metrics/client.rb +5 -5
- data/lib/datadog/core/remote/client.rb +1 -1
- data/lib/datadog/core/remote/component.rb +2 -2
- data/lib/datadog/core/runtime/metrics.rb +1 -1
- data/lib/datadog/core/telemetry/emitter.rb +1 -1
- data/lib/datadog/core/telemetry/event/app_started.rb +2 -2
- data/lib/datadog/core/transport/http.rb +2 -0
- data/lib/datadog/core/utils.rb +1 -1
- data/lib/datadog/core/workers/async.rb +1 -1
- data/lib/datadog/core.rb +1 -1
- data/lib/datadog/data_streams/configuration.rb +40 -1
- data/lib/datadog/data_streams/pathway_context.rb +1 -1
- data/lib/datadog/data_streams/processor.rb +1 -1
- data/lib/datadog/data_streams.rb +1 -1
- data/lib/datadog/di/base.rb +8 -5
- data/lib/datadog/di/code_tracker.rb +179 -1
- data/lib/datadog/di/component.rb +1 -1
- data/lib/datadog/di/configuration.rb +235 -2
- data/lib/datadog/di/instrumenter.rb +46 -26
- data/lib/datadog/di/probe_builder.rb +1 -1
- data/lib/datadog/di/probe_file_loader.rb +2 -2
- data/lib/datadog/di/probe_manager.rb +6 -6
- data/lib/datadog/di/probe_notification_builder.rb +1 -1
- data/lib/datadog/di/probe_notifier_worker.rb +2 -2
- data/lib/datadog/di/remote.rb +6 -6
- data/lib/datadog/di/serializer.rb +1 -1
- data/lib/datadog/di/transport/input.rb +3 -3
- data/lib/datadog/error_tracking/configuration.rb +55 -2
- data/lib/datadog/kit/enable_core_dumps.rb +1 -1
- data/lib/datadog/open_feature/component.rb +18 -1
- data/lib/datadog/open_feature/evaluation_engine.rb +3 -3
- data/lib/datadog/open_feature/exposures/reporter.rb +1 -1
- data/lib/datadog/open_feature/exposures/worker.rb +1 -1
- data/lib/datadog/open_feature/hooks/flag_eval_hook.rb +49 -0
- data/lib/datadog/open_feature/metrics/flag_eval_metrics.rb +149 -0
- data/lib/datadog/open_feature/provider.rb +19 -1
- data/lib/datadog/open_feature/remote.rb +1 -1
- data/lib/datadog/open_feature/transport.rb +1 -1
- data/lib/datadog/opentelemetry/metrics.rb +3 -3
- data/lib/datadog/opentelemetry/sdk/configurator.rb +1 -1
- data/lib/datadog/opentelemetry/sdk/metrics_exporter.rb +1 -1
- data/lib/datadog/profiling/collectors/code_provenance.rb +35 -9
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +31 -2
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +8 -2
- data/lib/datadog/profiling/collectors/info.rb +16 -3
- data/lib/datadog/profiling/component.rb +3 -5
- data/lib/datadog/profiling/exporter.rb +37 -12
- data/lib/datadog/profiling/ext.rb +0 -2
- data/lib/datadog/profiling/flush.rb +21 -12
- data/lib/datadog/profiling/http_transport.rb +12 -1
- data/lib/datadog/profiling/load_native_extension.rb +1 -1
- data/lib/datadog/profiling/profiler.rb +13 -1
- data/lib/datadog/profiling/scheduler.rb +2 -2
- data/lib/datadog/profiling/tasks/exec.rb +8 -3
- data/lib/datadog/profiling/tasks/help.rb +1 -0
- data/lib/datadog/profiling/tasks/setup.rb +2 -2
- data/lib/datadog/single_step_instrument.rb +1 -1
- data/lib/datadog/symbol_database/configuration.rb +65 -0
- data/lib/datadog/symbol_database/extractor.rb +915 -0
- data/lib/datadog/symbol_database/file_hash.rb +46 -0
- data/lib/datadog/symbol_database/logger.rb +43 -0
- data/lib/datadog/symbol_database/scope.rb +98 -0
- data/lib/datadog/symbol_database/service_version.rb +57 -0
- data/lib/datadog/symbol_database/symbol.rb +66 -0
- data/lib/datadog/symbol_database/transport/http/endpoint.rb +28 -0
- data/lib/datadog/symbol_database/transport/http.rb +45 -0
- data/lib/datadog/symbol_database/transport.rb +54 -0
- data/lib/datadog/symbol_database/uploader.rb +166 -0
- data/lib/datadog/symbol_database.rb +49 -0
- data/lib/datadog/tracing/buffer.rb +3 -3
- data/lib/datadog/tracing/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +5 -3
- data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/discard.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/perform.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +1 -1
- data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -1
- data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +2 -2
- data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/utils.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +2 -2
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +1 -1
- data/lib/datadog/tracing/contrib/component.rb +1 -1
- data/lib/datadog/tracing/contrib/configuration/resolver.rb +7 -4
- data/lib/datadog/tracing/contrib/dalli/quantize.rb +1 -1
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/excon/middleware.rb +2 -2
- data/lib/datadog/tracing/contrib/extensions.rb +9 -0
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +2 -2
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +5 -5
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +2 -2
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +2 -2
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +2 -2
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +6 -2
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +2 -2
- data/lib/datadog/tracing/contrib/kafka/instrumentation/consumer.rb +2 -2
- data/lib/datadog/tracing/contrib/kafka/instrumentation/producer.rb +2 -2
- data/lib/datadog/tracing/contrib/karafka/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +3 -3
- data/lib/datadog/tracing/contrib/opensearch/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/presto/instrumentation.rb +3 -3
- data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/rack/request_queue.rb +1 -1
- data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -1
- data/lib/datadog/tracing/contrib/rails/runner.rb +1 -1
- data/lib/datadog/tracing/contrib/rake/instrumentation.rb +2 -2
- data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -1
- data/lib/datadog/tracing/contrib/redis/tags.rb +1 -1
- data/lib/datadog/tracing/contrib/sidekiq/utils.rb +1 -1
- data/lib/datadog/tracing/contrib/stripe/request.rb +1 -1
- data/lib/datadog/tracing/contrib.rb +8 -0
- data/lib/datadog/tracing/diagnostics/environment_logger.rb +3 -1
- data/lib/datadog/tracing/distributed/baggage.rb +59 -5
- data/lib/datadog/tracing/distributed/datadog.rb +11 -11
- data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +1 -1
- data/lib/datadog/tracing/distributed/propagation.rb +2 -2
- data/lib/datadog/tracing/distributed/trace_context.rb +74 -32
- data/lib/datadog/tracing/event.rb +1 -1
- data/lib/datadog/tracing/metadata/tagging.rb +2 -2
- data/lib/datadog/tracing/pipeline.rb +1 -1
- data/lib/datadog/tracing/remote.rb +1 -1
- data/lib/datadog/tracing/sampling/rule.rb +1 -1
- data/lib/datadog/tracing/sampling/rule_sampler.rb +2 -2
- data/lib/datadog/tracing/sampling/span/rule_parser.rb +2 -2
- data/lib/datadog/tracing/span_operation.rb +3 -3
- data/lib/datadog/tracing/trace_operation.rb +4 -4
- data/lib/datadog/tracing/tracer.rb +5 -5
- data/lib/datadog/tracing/transport/io/client.rb +1 -1
- data/lib/datadog/tracing/workers.rb +2 -1
- data/lib/datadog/version.rb +1 -1
- metadata +18 -9
- data/lib/datadog/ai_guard/configuration/settings.rb +0 -113
- data/lib/datadog/appsec/configuration/settings.rb +0 -423
- data/lib/datadog/data_streams/configuration/settings.rb +0 -49
- data/lib/datadog/di/configuration/settings.rb +0 -243
- data/lib/datadog/error_tracking/configuration/settings.rb +0 -63
|
@@ -430,7 +430,7 @@ module Datadog
|
|
|
430
430
|
rescue => e
|
|
431
431
|
# `File#read` errors have clear and actionable messages, no need to add extra exception info.
|
|
432
432
|
Datadog.logger.warn(
|
|
433
|
-
"Cannot read span sampling rules file `#{rules_file}`: #{e.class}: #{e}." \
|
|
433
|
+
"Cannot read span sampling rules file `#{rules_file}`: #{e.class}: #{e.message}." \
|
|
434
434
|
'No span sampling rules will be applied.'
|
|
435
435
|
)
|
|
436
436
|
nil
|
|
@@ -43,7 +43,7 @@ module Datadog
|
|
|
43
43
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
|
44
44
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_CONTROLLER)
|
|
45
45
|
rescue => e
|
|
46
|
-
Datadog.logger.error("#{e.class}: #{e}")
|
|
46
|
+
Datadog.logger.error("#{e.class}: #{e.message}")
|
|
47
47
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
48
48
|
end
|
|
49
49
|
|
|
@@ -88,7 +88,7 @@ module Datadog
|
|
|
88
88
|
span.finish
|
|
89
89
|
end
|
|
90
90
|
rescue => e
|
|
91
|
-
Datadog.logger.error("#{e.class}: #{e}")
|
|
91
|
+
Datadog.logger.error("#{e.class}: #{e.message}")
|
|
92
92
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
93
93
|
end
|
|
94
94
|
|
|
@@ -121,7 +121,9 @@ module Datadog
|
|
|
121
121
|
result
|
|
122
122
|
# rubocop:disable Lint/RescueException
|
|
123
123
|
rescue Exception => e
|
|
124
|
-
payload[:exception]
|
|
124
|
+
# Rails ActiveSupport::Notifications convention — payload[:exception] is
|
|
125
|
+
# an array of [class_name_string, message_string] consumed by subscribers.
|
|
126
|
+
payload[:exception] = [e.class.name, e.message] # rubocop:disable CustomCops/ExceptionMessageCop
|
|
125
127
|
payload[:exception_object] = e
|
|
126
128
|
raise e
|
|
127
129
|
ensure
|
|
@@ -41,7 +41,7 @@ module Datadog
|
|
|
41
41
|
span.set_tag(Ext::TAG_JOB_ERROR, payload[:error])
|
|
42
42
|
span.set_tag(Ext::TAG_JOB_RETRY_WAIT, payload[:wait])
|
|
43
43
|
rescue => e
|
|
44
|
-
Datadog.logger.debug { "#{e.class}: #{e}" }
|
|
44
|
+
Datadog.logger.debug { "#{e.class}: #{e.message}" }
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
end
|
|
@@ -76,7 +76,7 @@ module Datadog
|
|
|
76
76
|
#
|
|
77
77
|
Datadog.logger.error(
|
|
78
78
|
'Failed to resolve ActiveRecord database configuration. ' \
|
|
79
|
-
"Cause: #{e.class
|
|
79
|
+
"Cause: #{e.class} Source: #{Array(e.backtrace).first}"
|
|
80
80
|
)
|
|
81
81
|
Core::Telemetry::Logger.report(e, description: 'Failed to resolve ActiveRecord database configuration')
|
|
82
82
|
|
|
@@ -96,7 +96,7 @@ module Datadog
|
|
|
96
96
|
rescue => e
|
|
97
97
|
Datadog.logger.error(
|
|
98
98
|
"Failed to resolve key #{matcher.inspect}. " \
|
|
99
|
-
"Cause: #{e.class
|
|
99
|
+
"Cause: #{e.class} Source: #{Array(e.backtrace).first}"
|
|
100
100
|
)
|
|
101
101
|
Core::Telemetry::Logger.report(e, description: 'Failed to resolve key')
|
|
102
102
|
|
|
@@ -49,7 +49,7 @@ module Datadog
|
|
|
49
49
|
span.set_tag(Ext::TAG_INSTANTIATION_CLASS_NAME, payload.fetch(:class_name))
|
|
50
50
|
span.set_tag(Ext::TAG_INSTANTIATION_RECORD_COUNT, payload.fetch(:record_count))
|
|
51
51
|
rescue => e
|
|
52
|
-
Datadog.logger.error("#{e.class}: #{e}")
|
|
52
|
+
Datadog.logger.error("#{e.class}: #{e.message}")
|
|
53
53
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
54
54
|
end
|
|
55
55
|
end
|
|
@@ -69,7 +69,7 @@ module Datadog
|
|
|
69
69
|
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, config[:host]) if config[:host]
|
|
70
70
|
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, config[:port]) if config[:port]
|
|
71
71
|
rescue => e
|
|
72
|
-
Datadog.logger.error("#{e.class}: #{e}")
|
|
72
|
+
Datadog.logger.error("#{e.class}: #{e.message}")
|
|
73
73
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
74
74
|
end
|
|
75
75
|
end
|
|
@@ -77,7 +77,7 @@ module Datadog
|
|
|
77
77
|
# in case.
|
|
78
78
|
Datadog.logger.debug(
|
|
79
79
|
"connection_id #{connection_id} does not represent a valid object. " \
|
|
80
|
-
"Cause: #{e.class}: #{e} Source: #{Array(e.backtrace).first}"
|
|
80
|
+
"Cause: #{e.class}: #{e.message} Source: #{Array(e.backtrace).first}"
|
|
81
81
|
)
|
|
82
82
|
end
|
|
83
83
|
else
|
|
@@ -125,7 +125,7 @@ module Datadog
|
|
|
125
125
|
@block&.call(span, name, id, payload)
|
|
126
126
|
rescue => e
|
|
127
127
|
Datadog.logger.debug(
|
|
128
|
-
"ActiveSupport::Notifications handler for '#{name}' failed: #{e.class}: #{e}"
|
|
128
|
+
"ActiveSupport::Notifications handler for '#{name}' failed: #{e.class}: #{e.message}"
|
|
129
129
|
)
|
|
130
130
|
end
|
|
131
131
|
end
|
|
@@ -147,7 +147,7 @@ module Datadog
|
|
|
147
147
|
callback.call(event, key, *args)
|
|
148
148
|
rescue => e
|
|
149
149
|
Datadog.logger.debug(
|
|
150
|
-
"ActiveSupport::Notifications '#{key}' callback for '#{event}' failed: #{e.class}: #{e}"
|
|
150
|
+
"ActiveSupport::Notifications '#{key}' callback for '#{event}' failed: #{e.class}: #{e.message}"
|
|
151
151
|
)
|
|
152
152
|
end
|
|
153
153
|
end
|
|
@@ -90,7 +90,7 @@ module Datadog
|
|
|
90
90
|
|
|
91
91
|
Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
|
|
92
92
|
rescue => e
|
|
93
|
-
Datadog.logger.error("#{e.class}: #{e}")
|
|
93
|
+
Datadog.logger.error("#{e.class}: #{e.message}")
|
|
94
94
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
95
95
|
end
|
|
96
96
|
# rubocop:enable Metrics/MethodLength
|
|
@@ -20,7 +20,7 @@ module Datadog
|
|
|
20
20
|
@registry.each do |name, callback|
|
|
21
21
|
callback.call(config)
|
|
22
22
|
rescue => e
|
|
23
|
-
Datadog.logger.warn("Error configuring integration #{name}: #{e}")
|
|
23
|
+
Datadog.logger.warn("Error configuring integration #{name}: #{e.class}: #{e.message}")
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
|
|
@@ -95,14 +95,17 @@ module Datadog
|
|
|
95
95
|
super(*args)
|
|
96
96
|
|
|
97
97
|
@cache_limit = cache_limit
|
|
98
|
-
|
|
98
|
+
# Workaround for Ruby VM < 3.2.8, < 3.3.8 and < 3.4.3 (see https://bugs.ruby-lang.org/issues/21170)
|
|
99
|
+
# We initialize the hash with 10 dummy entries + clear it to force Ruby to use an
|
|
100
|
+
# "st_table" representation for the Hash, not an "ar_table" (since Ruby will not
|
|
101
|
+
# shrink a Hash using an "st_table" back to an "ar_table")
|
|
102
|
+
@cache = Hash[*1..20]
|
|
103
|
+
@cache.clear
|
|
99
104
|
end
|
|
100
105
|
|
|
101
106
|
# (see Resolver#resolve)
|
|
102
107
|
def resolve(value)
|
|
103
|
-
|
|
104
|
-
@cache[value]
|
|
105
|
-
else
|
|
108
|
+
@cache.fetch(value) do
|
|
106
109
|
if @cache.size >= @cache_limit
|
|
107
110
|
@cache.shift # Remove the oldest entry if cache is full
|
|
108
111
|
end
|
|
@@ -16,7 +16,7 @@ module Datadog
|
|
|
16
16
|
command = Core::Utils.utf8_encode(command, binary: true, placeholder: placeholder)
|
|
17
17
|
Core::Utils.truncate(command, Ext::QUANTIZE_MAX_CMD_LENGTH)
|
|
18
18
|
rescue => e
|
|
19
|
-
Datadog.logger.debug("Error sanitizing Dalli operation: #{e}")
|
|
19
|
+
Datadog.logger.debug("Error sanitizing Dalli operation: #{e.class}: #{e.message}")
|
|
20
20
|
placeholder
|
|
21
21
|
end
|
|
22
22
|
end
|
|
@@ -98,7 +98,7 @@ module Datadog
|
|
|
98
98
|
Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
|
|
99
99
|
rescue => e
|
|
100
100
|
# TODO: Refactor the code to streamline the execution without ensure
|
|
101
|
-
Datadog.logger.error("#{e.class}: #{e}")
|
|
101
|
+
Datadog.logger.error("#{e.class}: #{e.message}")
|
|
102
102
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
103
103
|
ensure
|
|
104
104
|
# the call is still executed
|
|
@@ -40,7 +40,7 @@ module Datadog
|
|
|
40
40
|
span
|
|
41
41
|
end
|
|
42
42
|
rescue => e
|
|
43
|
-
Datadog.logger.debug { "#{e.class}: #{e}" }
|
|
43
|
+
Datadog.logger.debug { "#{e.class}: #{e.message}" }
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
@stack.request_call(datum)
|
|
@@ -180,7 +180,7 @@ module Datadog
|
|
|
180
180
|
end
|
|
181
181
|
end
|
|
182
182
|
rescue => e
|
|
183
|
-
Datadog.logger.debug { "#{e.class}: #{e}" }
|
|
183
|
+
Datadog.logger.debug { "#{e.class}: #{e.message}" }
|
|
184
184
|
end
|
|
185
185
|
|
|
186
186
|
def propagate!(trace, span, datum)
|
|
@@ -227,6 +227,15 @@ module Datadog
|
|
|
227
227
|
end
|
|
228
228
|
end
|
|
229
229
|
|
|
230
|
+
# Returns the subset of built-in integrations that are instrumented,
|
|
231
|
+
# excluding custom integrations registered through the public contrib API.
|
|
232
|
+
# This method is only for telemetry reporting.
|
|
233
|
+
# @!visibility private
|
|
234
|
+
def instrumented_built_in_integrations
|
|
235
|
+
instrumented = Set.new(instrumented_integrations.each_value)
|
|
236
|
+
Contrib::BUILT_IN_INTEGRATIONS.select { |integration| instrumented.include?(integration) }.freeze
|
|
237
|
+
end
|
|
238
|
+
|
|
230
239
|
# @!visibility private
|
|
231
240
|
def reset!
|
|
232
241
|
INSTRUMENTED_INTEGRATIONS_LOCK.synchronize do
|
|
@@ -83,7 +83,7 @@ module Datadog
|
|
|
83
83
|
|
|
84
84
|
Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
|
|
85
85
|
rescue => e
|
|
86
|
-
Datadog.logger.error("#{e.class}: #{e}")
|
|
86
|
+
Datadog.logger.error("#{e.class}: #{e.message}")
|
|
87
87
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
88
88
|
end
|
|
89
89
|
# rubocop:enable Metrics/AbcSize
|
|
@@ -98,7 +98,7 @@ module Datadog
|
|
|
98
98
|
Datadog.configuration.tracing.header_tags.response_tags(env[:response_headers])
|
|
99
99
|
)
|
|
100
100
|
rescue => e
|
|
101
|
-
Datadog.logger.error("#{e.class}: #{e}")
|
|
101
|
+
Datadog.logger.error("#{e.class}: #{e.message}")
|
|
102
102
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
103
103
|
end
|
|
104
104
|
# rubocop:enable Metrics/AbcSize
|
|
@@ -77,7 +77,7 @@ module Datadog
|
|
|
77
77
|
|
|
78
78
|
Thread.current[KEY_RUN] = true
|
|
79
79
|
rescue => e
|
|
80
|
-
Datadog.logger.error("#{e.class}: #{e}")
|
|
80
|
+
Datadog.logger.error("#{e.class}: #{e.message}")
|
|
81
81
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
82
82
|
end
|
|
83
83
|
|
|
@@ -121,7 +121,7 @@ module Datadog
|
|
|
121
121
|
span.finish(finish)
|
|
122
122
|
end
|
|
123
123
|
rescue => e
|
|
124
|
-
Datadog.logger.error("#{e.class}: #{e}")
|
|
124
|
+
Datadog.logger.error("#{e.class}: #{e.message}")
|
|
125
125
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
126
126
|
end
|
|
127
127
|
|
|
@@ -165,7 +165,7 @@ module Datadog
|
|
|
165
165
|
|
|
166
166
|
Thread.current[KEY_RENDER] = true
|
|
167
167
|
rescue => e
|
|
168
|
-
Datadog.logger.error("#{e.class}: #{e}")
|
|
168
|
+
Datadog.logger.error("#{e.class}: #{e.message}")
|
|
169
169
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
170
170
|
end
|
|
171
171
|
|
|
@@ -190,7 +190,7 @@ module Datadog
|
|
|
190
190
|
span.finish(finish)
|
|
191
191
|
end
|
|
192
192
|
rescue => e
|
|
193
|
-
Datadog.logger.error("#{e.class}: #{e}")
|
|
193
|
+
Datadog.logger.error("#{e.class}: #{e.message}")
|
|
194
194
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
195
195
|
end
|
|
196
196
|
|
|
@@ -229,7 +229,7 @@ module Datadog
|
|
|
229
229
|
span.finish(finish)
|
|
230
230
|
end
|
|
231
231
|
rescue => e
|
|
232
|
-
Datadog.logger.error("#{e.class}: #{e}")
|
|
232
|
+
Datadog.logger.error("#{e.class}: #{e.message}")
|
|
233
233
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
234
234
|
end
|
|
235
235
|
|
|
@@ -90,7 +90,7 @@ module Datadog
|
|
|
90
90
|
end
|
|
91
91
|
Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
|
|
92
92
|
rescue => e
|
|
93
|
-
Datadog.logger.debug("GRPC client trace failed: #{e}")
|
|
93
|
+
Datadog.logger.debug("GRPC client trace failed: #{e.class}: #{e.message}")
|
|
94
94
|
end
|
|
95
95
|
|
|
96
96
|
def find_deadline(call)
|
|
@@ -112,7 +112,7 @@ module Datadog
|
|
|
112
112
|
|
|
113
113
|
Core::Utils.extract_host_port(peer_address)
|
|
114
114
|
rescue => e
|
|
115
|
-
Datadog.logger.debug { "Could not parse host:port from #{call}: #{e}" }
|
|
115
|
+
Datadog.logger.debug { "Could not parse host:port from #{call}: #{e.class}: #{e.message}" }
|
|
116
116
|
nil
|
|
117
117
|
end
|
|
118
118
|
end
|
|
@@ -54,7 +54,7 @@ module Datadog
|
|
|
54
54
|
Tracing.continue_trace!(GRPC.extract(metadata))
|
|
55
55
|
rescue => e
|
|
56
56
|
Datadog.logger.debug(
|
|
57
|
-
"unable to propagate GRPC metadata to context: #{e}"
|
|
57
|
+
"unable to propagate GRPC metadata to context: #{e.class}: #{e.message}"
|
|
58
58
|
)
|
|
59
59
|
end
|
|
60
60
|
|
|
@@ -86,7 +86,7 @@ module Datadog
|
|
|
86
86
|
# Measure service stats
|
|
87
87
|
Contrib::Analytics.set_measured(span)
|
|
88
88
|
rescue => e
|
|
89
|
-
Datadog.logger.debug("GRPC server trace failed: #{e}")
|
|
89
|
+
Datadog.logger.debug("GRPC server trace failed: #{e.class}: #{e.message}")
|
|
90
90
|
end
|
|
91
91
|
end
|
|
92
92
|
end
|
|
@@ -93,7 +93,7 @@ module Datadog
|
|
|
93
93
|
|
|
94
94
|
Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
|
|
95
95
|
rescue => e
|
|
96
|
-
Datadog.logger.error("error preparing span from http request: #{e}")
|
|
96
|
+
Datadog.logger.error("error preparing span from http request: #{e.class}: #{e.message}")
|
|
97
97
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
98
98
|
end
|
|
99
99
|
|
|
@@ -108,7 +108,7 @@ module Datadog
|
|
|
108
108
|
Datadog.configuration.tracing.header_tags.response_tags(response)
|
|
109
109
|
)
|
|
110
110
|
rescue => e
|
|
111
|
-
Datadog.logger.error("error preparing span from http response: #{e}")
|
|
111
|
+
Datadog.logger.error("error preparing span from http response: #{e.class}: #{e.message}")
|
|
112
112
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
113
113
|
end
|
|
114
114
|
|
|
@@ -41,7 +41,9 @@ module Datadog
|
|
|
41
41
|
# Add additional request specific tags to the span.
|
|
42
42
|
annotate_span_with_request!(span, req, request_options)
|
|
43
43
|
rescue => e
|
|
44
|
-
Datadog.logger.error(
|
|
44
|
+
Datadog.logger.error(
|
|
45
|
+
"error preparing span for httpclient request: #{e.class}: #{e.message}, Source: #{e.backtrace}"
|
|
46
|
+
)
|
|
45
47
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
46
48
|
ensure
|
|
47
49
|
res = super
|
|
@@ -107,7 +109,9 @@ module Datadog
|
|
|
107
109
|
Datadog.configuration.tracing.header_tags.response_tags(response.header)
|
|
108
110
|
)
|
|
109
111
|
rescue => e
|
|
110
|
-
Datadog.logger.error(
|
|
112
|
+
Datadog.logger.error(
|
|
113
|
+
"error preparing span from httpclient response: #{e.class}: #{e.message}, Source: #{e.backtrace}"
|
|
114
|
+
)
|
|
111
115
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
112
116
|
end
|
|
113
117
|
|
|
@@ -41,7 +41,7 @@ module Datadog
|
|
|
41
41
|
# Add additional request specific tags to the span.
|
|
42
42
|
annotate_span_with_request!(span, req, request_options)
|
|
43
43
|
rescue => e
|
|
44
|
-
logger.error("error preparing span for http.rb request: #{e}, Source: #{e.backtrace}")
|
|
44
|
+
logger.error("error preparing span for http.rb request: #{e.class}: #{e.message}, Source: #{e.backtrace}")
|
|
45
45
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
46
46
|
ensure
|
|
47
47
|
res = super(req, options)
|
|
@@ -117,7 +117,7 @@ module Datadog
|
|
|
117
117
|
Datadog.configuration.tracing.header_tags.response_tags(response.headers)
|
|
118
118
|
)
|
|
119
119
|
rescue => e
|
|
120
|
-
logger.error("error preparing span from http.rb response: #{e}, Source: #{e.backtrace}")
|
|
120
|
+
logger.error("error preparing span from http.rb response: #{e.class}: #{e.message}, Source: #{e.backtrace}")
|
|
121
121
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
122
122
|
end
|
|
123
123
|
|
|
@@ -27,7 +27,7 @@ module Datadog
|
|
|
27
27
|
auto_instrumentation: true
|
|
28
28
|
) { |key| headers[key] }
|
|
29
29
|
rescue => e
|
|
30
|
-
Datadog.logger.debug("Error setting DSM checkpoint: #{e.class}: #{e}")
|
|
30
|
+
Datadog.logger.debug("Error setting DSM checkpoint: #{e.class}: #{e.message}")
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
yield(message) if block
|
|
@@ -49,7 +49,7 @@ module Datadog
|
|
|
49
49
|
auto_instrumentation: true
|
|
50
50
|
)
|
|
51
51
|
rescue => e
|
|
52
|
-
Datadog.logger.debug("Error setting DSM checkpoint: #{e.class}: #{e}")
|
|
52
|
+
Datadog.logger.debug("Error setting DSM checkpoint: #{e.class}: #{e.message}")
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
yield(batch) if block
|
|
@@ -30,7 +30,7 @@ module Datadog
|
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
rescue => e
|
|
33
|
-
Datadog.logger.debug("Error setting DSM checkpoint: #{e.class}: #{e}")
|
|
33
|
+
Datadog.logger.debug("Error setting DSM checkpoint: #{e.class}: #{e.message}")
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
|
|
@@ -51,7 +51,7 @@ module Datadog
|
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
53
|
rescue => e
|
|
54
|
-
Datadog.logger.debug("Error setting DSM checkpoint: #{e.class}: #{e}")
|
|
54
|
+
Datadog.logger.debug("Error setting DSM checkpoint: #{e.class}: #{e.message}")
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
|
|
@@ -49,7 +49,7 @@ module Datadog
|
|
|
49
49
|
auto_instrumentation: true
|
|
50
50
|
) { |key| headers[key] }
|
|
51
51
|
rescue => e
|
|
52
|
-
Datadog.logger.debug("Error setting DSM checkpoint: #{e.class}: #{e}")
|
|
52
|
+
Datadog.logger.debug("Error setting DSM checkpoint: #{e.class}: #{e.message}")
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
|
|
@@ -73,7 +73,7 @@ module Datadog
|
|
|
73
73
|
# set the resource with the quantized query
|
|
74
74
|
span.resource = serialized_query
|
|
75
75
|
rescue => e
|
|
76
|
-
Datadog.logger.debug("error when handling MongoDB 'started' event: #{e}")
|
|
76
|
+
Datadog.logger.debug("error when handling MongoDB 'started' event: #{e.class}: #{e.message}")
|
|
77
77
|
end
|
|
78
78
|
# rubocop:enable Metrics/AbcSize
|
|
79
79
|
|
|
@@ -85,7 +85,7 @@ module Datadog
|
|
|
85
85
|
# the framework itself, so we set only the error and the message
|
|
86
86
|
span.set_error(event)
|
|
87
87
|
rescue => e
|
|
88
|
-
Datadog.logger.debug("error when handling MongoDB 'failed' event: #{e}")
|
|
88
|
+
Datadog.logger.debug("error when handling MongoDB 'failed' event: #{e.class}: #{e.message}")
|
|
89
89
|
ensure
|
|
90
90
|
# whatever happens, the Span must be removed from the local storage and
|
|
91
91
|
# it must be finished to prevent any leak
|
|
@@ -101,7 +101,7 @@ module Datadog
|
|
|
101
101
|
rows = event.reply.fetch('n', nil)
|
|
102
102
|
span.set_tag(Ext::TAG_ROWS, rows) unless rows.nil?
|
|
103
103
|
rescue => e
|
|
104
|
-
Datadog.logger.debug("error when handling MongoDB 'succeeded' event: #{e}")
|
|
104
|
+
Datadog.logger.debug("error when handling MongoDB 'succeeded' event: #{e.class}: #{e.message}")
|
|
105
105
|
ensure
|
|
106
106
|
# whatever happens, the Span must be removed from the local storage and
|
|
107
107
|
# it must be finished to prevent any leak
|
|
@@ -84,7 +84,7 @@ module Datadog
|
|
|
84
84
|
span.resource = "#{method} #{quantized_url}"
|
|
85
85
|
Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
|
|
86
86
|
rescue => e
|
|
87
|
-
Datadog.logger.error("#{e.class}: #{e}")
|
|
87
|
+
Datadog.logger.error("#{e.class}: #{e.message}")
|
|
88
88
|
Datadog::Core::Telemetry::Logger.report(e)
|
|
89
89
|
# TODO: Refactor the code to streamline the execution without ensure
|
|
90
90
|
ensure
|
|
@@ -28,7 +28,7 @@ module Datadog
|
|
|
28
28
|
span.type = Tracing::Metadata::Ext::SQL::TYPE
|
|
29
29
|
span.set_tag(Ext::TAG_QUERY_ASYNC, false)
|
|
30
30
|
rescue => e
|
|
31
|
-
Datadog.logger.debug("error preparing span for presto: #{e}")
|
|
31
|
+
Datadog.logger.debug("error preparing span for presto: #{e.class}: #{e.message}")
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
super(query)
|
|
@@ -46,7 +46,7 @@ module Datadog
|
|
|
46
46
|
span.type = Tracing::Metadata::Ext::SQL::TYPE
|
|
47
47
|
span.set_tag(Ext::TAG_QUERY_ASYNC, !blk.nil?)
|
|
48
48
|
rescue => e
|
|
49
|
-
Datadog.logger.debug("error preparing span for presto: #{e}")
|
|
49
|
+
Datadog.logger.debug("error preparing span for presto: #{e.class}: #{e.message}")
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
super(query, &blk)
|
|
@@ -65,7 +65,7 @@ module Datadog
|
|
|
65
65
|
# ^ not an SQL type span, since there's no SQL query
|
|
66
66
|
span.set_tag(Ext::TAG_QUERY_ID, query_id)
|
|
67
67
|
rescue => e
|
|
68
|
-
Datadog.logger.debug("error preparing span for presto: #{e}")
|
|
68
|
+
Datadog.logger.debug("error preparing span for presto: #{e.class}: #{e.message}")
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
super(query_id)
|
|
@@ -41,7 +41,7 @@ module Datadog
|
|
|
41
41
|
# context of middleware patching outside a Rails server process (eg. a
|
|
42
42
|
# process that doesn't serve HTTP requests but has Rails environment
|
|
43
43
|
# loaded such as a Resque master process)
|
|
44
|
-
Datadog.logger.debug("Error patching middleware stack: #{e}")
|
|
44
|
+
Datadog.logger.debug("Error patching middleware stack: #{e.class}: #{e.message}")
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
def retain_middleware_name(middleware)
|
|
@@ -39,7 +39,7 @@ module Datadog
|
|
|
39
39
|
rescue => e
|
|
40
40
|
# in case of an Exception we don't create a
|
|
41
41
|
# `request.queuing` span
|
|
42
|
-
Datadog.logger.debug("[rack] unable to parse request queue headers: #{e}")
|
|
42
|
+
Datadog.logger.debug("[rack] unable to parse request queue headers: #{e.class}: #{e.message}")
|
|
43
43
|
nil
|
|
44
44
|
end
|
|
45
45
|
end
|
|
@@ -18,7 +18,7 @@ module Datadog
|
|
|
18
18
|
app_config.log_tags << proc { Tracing.log_correlation if Datadog.configuration.tracing.log_injection }
|
|
19
19
|
rescue => e
|
|
20
20
|
Datadog.logger.warn(
|
|
21
|
-
"Unable to add Datadog Trace context to ActiveSupport::TaggedLogging: #{e.class}: #{e}"
|
|
21
|
+
"Unable to add Datadog Trace context to ActiveSupport::TaggedLogging: #{e.class}: #{e.message}"
|
|
22
22
|
)
|
|
23
23
|
false
|
|
24
24
|
end
|
|
@@ -86,7 +86,7 @@ module Datadog
|
|
|
86
86
|
# Reads one more byte than the limit to allow us to check if the source exceeds the limit.
|
|
87
87
|
source = File.read(file, MAX_TAG_VALUE_SIZE + 1)
|
|
88
88
|
rescue => e
|
|
89
|
-
Datadog.logger.debug { "Failed to read file '#{file}' for Rails runner: #{e.class}: #{e}" }
|
|
89
|
+
Datadog.logger.debug { "Failed to read file '#{file}' for Rails runner: #{e.class}: #{e.message}" }
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
Tracing.trace(
|