datadog 2.18.0 → 2.19.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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +47 -1
  3. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +51 -10
  4. data/ext/datadog_profiling_native_extension/collectors_stack.c +58 -49
  5. data/ext/datadog_profiling_native_extension/collectors_stack.h +2 -1
  6. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +5 -6
  7. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +1 -1
  8. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +37 -26
  9. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +0 -1
  10. data/ext/datadog_profiling_native_extension/ruby_helpers.h +1 -1
  11. data/lib/datadog/appsec/api_security/route_extractor.rb +7 -1
  12. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +1 -1
  13. data/lib/datadog/core/configuration/settings.rb +20 -0
  14. data/lib/datadog/core/telemetry/component.rb +8 -4
  15. data/lib/datadog/core/telemetry/event/app_started.rb +21 -3
  16. data/lib/datadog/di/instrumenter.rb +11 -18
  17. data/lib/datadog/di/probe_notification_builder.rb +21 -16
  18. data/lib/datadog/di/serializer.rb +6 -2
  19. data/lib/datadog/di.rb +0 -6
  20. data/lib/datadog/kit/appsec/events/v2.rb +195 -0
  21. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +2 -0
  22. data/lib/datadog/profiling/collectors/info.rb +41 -0
  23. data/lib/datadog/profiling/component.rb +1 -0
  24. data/lib/datadog/profiling/exporter.rb +9 -3
  25. data/lib/datadog/profiling/sequence_tracker.rb +44 -0
  26. data/lib/datadog/profiling/tag_builder.rb +2 -0
  27. data/lib/datadog/profiling.rb +1 -0
  28. data/lib/datadog/single_step_instrument.rb +9 -0
  29. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +7 -1
  30. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +13 -0
  31. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +16 -6
  32. data/lib/datadog/tracing/contrib/rails/patcher.rb +4 -1
  33. data/lib/datadog/tracing/contrib/rails/runner.rb +61 -40
  34. data/lib/datadog/tracing/diagnostics/environment_logger.rb +3 -1
  35. data/lib/datadog/tracing/span_event.rb +1 -1
  36. data/lib/datadog/tracing/span_operation.rb +22 -0
  37. data/lib/datadog/version.rb +1 -1
  38. data/lib/datadog.rb +7 -0
  39. metadata +8 -6
@@ -297,6 +297,28 @@ module Datadog
297
297
  set_error_tags(e)
298
298
  end
299
299
 
300
+ # Record an exception during the execution of this span. Multiple exceptions
301
+ # can be recorded on a span.
302
+ #
303
+ # @param [Exception] exception The exception to record
304
+ # @param [optional Hash{String => String, Numeric, Boolean, Array<String, Numeric, Boolean>}]
305
+ # attributes One or more key:value pairs, where the keys must be
306
+ # strings and the values may be (array of) string, boolean or numeric
307
+ # type.
308
+ #
309
+ # @return [void]
310
+ def record_exception(exception, attributes: {})
311
+ exc = Core::Error.build_from(exception)
312
+
313
+ event_attributes = {
314
+ 'exception.type' => exc.type,
315
+ 'exception.message' => exc.message,
316
+ 'exception.stacktrace' => exc.backtrace,
317
+ }
318
+
319
+ @span_events << SpanEvent.new('exception', attributes: event_attributes.merge!(attributes)) # steep:ignore
320
+ end
321
+
300
322
  # Return a string representation of the span.
301
323
  def to_s
302
324
  "SpanOperation(name:#{@name},sid:#{@id},tid:#{@trace_id},pid:#{@parent_id})"
@@ -3,7 +3,7 @@
3
3
  module Datadog
4
4
  module VERSION
5
5
  MAJOR = 2
6
- MINOR = 18
6
+ MINOR = 19
7
7
  PATCH = 0
8
8
  PRE = nil
9
9
  BUILD = nil
data/lib/datadog.rb CHANGED
@@ -8,5 +8,12 @@ require_relative 'datadog/tracing/contrib'
8
8
  require_relative 'datadog/profiling'
9
9
  require_relative 'datadog/appsec'
10
10
  require_relative 'datadog/di'
11
+
12
+ # Line probes will not work on Ruby < 2.6 because of lack of :script_compiled
13
+ # trace point. Activate DI automatically on supported Ruby versions but
14
+ # always load its settings so that, for example, turning DI off when
15
+ # we are on Ruby 2.5 does not produce exceptions.
16
+ require_relative 'datadog/di/boot' if RUBY_VERSION >= '2.6' && RUBY_ENGINE != 'jruby'
17
+
11
18
  require_relative 'datadog/error_tracking'
12
19
  require_relative 'datadog/kit'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datadog
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.18.0
4
+ version: 2.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-07-04 00:00:00.000000000 Z
11
+ date: 2025-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -50,14 +50,14 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: 1.24.1.0.0
53
+ version: 1.24.1.0.3
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: 1.24.1.0.0
60
+ version: 1.24.1.0.3
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: libdatadog
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -465,6 +465,7 @@ files:
465
465
  - lib/datadog/error_tracking/filters.rb
466
466
  - lib/datadog/kit.rb
467
467
  - lib/datadog/kit/appsec/events.rb
468
+ - lib/datadog/kit/appsec/events/v2.rb
468
469
  - lib/datadog/kit/enable_core_dumps.rb
469
470
  - lib/datadog/kit/identity.rb
470
471
  - lib/datadog/opentelemetry.rb
@@ -498,6 +499,7 @@ files:
498
499
  - lib/datadog/profiling/preload.rb
499
500
  - lib/datadog/profiling/profiler.rb
500
501
  - lib/datadog/profiling/scheduler.rb
502
+ - lib/datadog/profiling/sequence_tracker.rb
501
503
  - lib/datadog/profiling/stack_recorder.rb
502
504
  - lib/datadog/profiling/tag_builder.rb
503
505
  - lib/datadog/profiling/tasks/exec.rb
@@ -993,8 +995,8 @@ licenses:
993
995
  - Apache-2.0
994
996
  metadata:
995
997
  allowed_push_host: https://rubygems.org
996
- changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.18.0/CHANGELOG.md
997
- source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.18.0
998
+ changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.19.0/CHANGELOG.md
999
+ source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.19.0
998
1000
  post_install_message:
999
1001
  rdoc_options: []
1000
1002
  require_paths: