From c3ef2d501f046b57ea824e620143cd5792ac7fed Mon Sep 17 00:00:00 2001 From: Steven Bouwkamp Date: Thu, 16 Oct 2025 16:06:59 -0400 Subject: [PATCH 1/8] Remove pii_safe Messages sent to our backend from the tracing libraries must be constant messages. --- lib/datadog/core/telemetry/logger.rb | 4 +-- lib/datadog/core/telemetry/logging.rb | 9 ++---- .../collectors/cpu_and_wall_time_worker.rb | 2 +- .../collectors/idle_sampling_helper.rb | 2 +- sig/datadog/core/telemetry/logger.rbs | 2 +- sig/datadog/core/telemetry/logging.rbs | 2 +- spec/datadog/core/telemetry/logger_spec.rb | 12 ++------ spec/datadog/core/telemetry/logging_spec.rb | 28 ------------------- 8 files changed, 11 insertions(+), 50 deletions(-) diff --git a/lib/datadog/core/telemetry/logger.rb b/lib/datadog/core/telemetry/logger.rb index b38d81a3ead..b89aedfadca 100644 --- a/lib/datadog/core/telemetry/logger.rb +++ b/lib/datadog/core/telemetry/logger.rb @@ -14,8 +14,8 @@ module Telemetry # read: lib/datadog/core/telemetry/logging.rb module Logger class << self - def report(exception, level: :error, description: nil, pii_safe: false) - instance&.report(exception, level: level, description: description, pii_safe: pii_safe) + def report(exception, level: :error, description: nil) + instance&.report(exception, level: level, description: description) end def error(description) diff --git a/lib/datadog/core/telemetry/logging.rb b/lib/datadog/core/telemetry/logging.rb index e35cf92dad0..e1019beca4a 100644 --- a/lib/datadog/core/telemetry/logging.rb +++ b/lib/datadog/core/telemetry/logging.rb @@ -45,16 +45,13 @@ def self.from(exception) end end - def report(exception, level: :error, description: nil, pii_safe: false) + def report(exception, level: :error, description: nil) # Anonymous exceptions to be logged as message = +"#{exception.class.name || exception.class.inspect}" # standard:disable Style/RedundantInterpolation - exception_message = pii_safe ? exception.message : nil - - if description || exception_message + if description message << ':' - message << " #{description}" if description - message << " (#{exception.message})" if exception_message + message << " #{description}" end event = Event::Log.new( diff --git a/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb b/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb index 130b036a8b3..aa88ec2de9c 100644 --- a/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +++ b/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb @@ -82,7 +82,7 @@ def start(on_failure_proc: nil) "Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}" ) on_failure_proc&.call - Datadog::Core::Telemetry::Logger.report(e, description: "CpuAndWallTimeWorker thread error", pii_safe: true) + Datadog::Core::Telemetry::Logger.report(e, description: "CpuAndWallTimeWorker thread error") end @worker_thread.name = self.class.name # Repeated from above to make sure thread gets named asap @worker_thread.thread_variable_set(:fork_safe, true) diff --git a/lib/datadog/profiling/collectors/idle_sampling_helper.rb b/lib/datadog/profiling/collectors/idle_sampling_helper.rb index 8be5748fcef..6d33ca03e4c 100644 --- a/lib/datadog/profiling/collectors/idle_sampling_helper.rb +++ b/lib/datadog/profiling/collectors/idle_sampling_helper.rb @@ -41,7 +41,7 @@ def start "IdleSamplingHelper thread error. " \ "Cause: #{e.class.name} #{e.message} Location: #{Array(e.backtrace).first}" ) - Datadog::Core::Telemetry::Logger.report(e, description: "IdleSamplingHelper thread error", pii_safe: true) + Datadog::Core::Telemetry::Logger.report(e, description: "IdleSamplingHelper thread error") end @worker_thread.name = self.class.name # Repeated from above to make sure thread gets named asap @worker_thread.thread_variable_set(:fork_safe, true) diff --git a/sig/datadog/core/telemetry/logger.rbs b/sig/datadog/core/telemetry/logger.rbs index 214488d0d29..b32bf487c1c 100644 --- a/sig/datadog/core/telemetry/logger.rbs +++ b/sig/datadog/core/telemetry/logger.rbs @@ -2,7 +2,7 @@ module Datadog module Core module Telemetry module Logger - def self.report: (Exception exception, ?level: Symbol, ?description: String?, ?pii_safe: bool) -> void + def self.report: (Exception exception, ?level: Symbol, ?description: String?) -> void def self.error: (String description) -> void diff --git a/sig/datadog/core/telemetry/logging.rbs b/sig/datadog/core/telemetry/logging.rbs index d5cf10547e7..f64aa023f3c 100644 --- a/sig/datadog/core/telemetry/logging.rbs +++ b/sig/datadog/core/telemetry/logging.rbs @@ -12,7 +12,7 @@ module Datadog def self.from: (Exception exception) -> String? end - def report: (Exception exception, ?level: Symbol, ?description: String?, ?pii_safe: bool) -> void + def report: (Exception exception, ?level: Symbol, ?description: String?) -> void def error: (String description) -> void end diff --git a/spec/datadog/core/telemetry/logger_spec.rb b/spec/datadog/core/telemetry/logger_spec.rb index 92941fcd391..e67798f225e 100644 --- a/spec/datadog/core/telemetry/logger_spec.rb +++ b/spec/datadog/core/telemetry/logger_spec.rb @@ -15,7 +15,7 @@ it do expect(Datadog.logger).not_to receive(:warn) - expect(telemetry).to receive(:report).with(exception, level: :error, description: 'Oops...', pii_safe: false) + expect(telemetry).to receive(:report).with(exception, level: :error, description: 'Oops...') described_class.report(exception, level: :error, description: 'Oops...') end @@ -23,20 +23,12 @@ context 'when only given an exception' do it do expect(Datadog.logger).not_to receive(:warn) - expect(telemetry).to receive(:report).with(exception, level: :error, description: nil, pii_safe: false) + expect(telemetry).to receive(:report).with(exception, level: :error, description: nil) described_class.report(exception) end end - context 'when pii_safe is true' do - it do - expect(Datadog.logger).not_to receive(:warn) - expect(telemetry).to receive(:report).with(exception, level: :error, description: nil, pii_safe: true) - - described_class.report(exception, pii_safe: true) - end - end end context 'when there is no telemetry component configured' do diff --git a/spec/datadog/core/telemetry/logging_spec.rb b/spec/datadog/core/telemetry/logging_spec.rb index 36d50b96651..d7ad1ab0ea4 100644 --- a/spec/datadog/core/telemetry/logging_spec.rb +++ b/spec/datadog/core/telemetry/logging_spec.rb @@ -80,34 +80,6 @@ def log!(_event) end end - context 'when pii_safe is true' do - it 'sends a log event to via telemetry including the exception message' do - expect(component).to receive(:log!).with(instance_of(Datadog::Core::Telemetry::Event::Log)) do |event| - expect(event.message).to eq('StandardError: (Test exception message without pii)') - end - - component.report( - StandardError.new('Test exception message without pii'), - level: :error, - pii_safe: true, - ) - end - - context 'when a description is provided' do - it 'sends a log event to via telemetry including the description' do - expect(component).to receive(:log!).with(instance_of(Datadog::Core::Telemetry::Event::Log)) do |event| - expect(event.message).to eq('StandardError: Test description (Test exception message without pii)') - end - - component.report( - StandardError.new('Test exception message without pii'), - description: 'Test description', - level: :error, - pii_safe: true, - ) - end - end - end end describe '.error' do From 855bae00badbb0b4be70e058751f6c684e6069ec Mon Sep 17 00:00:00 2001 From: Steven Bouwkamp Date: Thu, 16 Oct 2025 16:42:19 -0400 Subject: [PATCH 2/8] Fix linting errors --- spec/datadog/core/telemetry/logger_spec.rb | 1 - spec/datadog/core/telemetry/logging_spec.rb | 1 - 2 files changed, 2 deletions(-) diff --git a/spec/datadog/core/telemetry/logger_spec.rb b/spec/datadog/core/telemetry/logger_spec.rb index e67798f225e..d40b5fdaf58 100644 --- a/spec/datadog/core/telemetry/logger_spec.rb +++ b/spec/datadog/core/telemetry/logger_spec.rb @@ -28,7 +28,6 @@ described_class.report(exception) end end - end context 'when there is no telemetry component configured' do diff --git a/spec/datadog/core/telemetry/logging_spec.rb b/spec/datadog/core/telemetry/logging_spec.rb index d7ad1ab0ea4..f3a2547bbb3 100644 --- a/spec/datadog/core/telemetry/logging_spec.rb +++ b/spec/datadog/core/telemetry/logging_spec.rb @@ -79,7 +79,6 @@ def log!(_event) end end end - end describe '.error' do From 5836b828cea0566c5da5decf187b5ec10b7e4fcc Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Fri, 17 Oct 2025 15:34:15 +0200 Subject: [PATCH 3/8] Test that exception message is *not* included --- spec/datadog/core/telemetry/logging_spec.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spec/datadog/core/telemetry/logging_spec.rb b/spec/datadog/core/telemetry/logging_spec.rb index f3a2547bbb3..363bc1b380f 100644 --- a/spec/datadog/core/telemetry/logging_spec.rb +++ b/spec/datadog/core/telemetry/logging_spec.rb @@ -26,6 +26,7 @@ def log!(_event) logs: [{message: 'RuntimeError', level: 'ERROR', count: 1, stack_trace: a_string_including("\n/spec/")}] ) + expect(event.payload[:logs].map { |log| log[:message] }).not_to include('p@ssw0rd') end begin @@ -46,6 +47,7 @@ def log!(_event) logs: [{message: 'RuntimeError: Must not contain PII', level: 'ERROR', count: 1, stack_trace: a_string_including("\n/spec/")}] ) + expect(event.payload[:logs].map { |log| log[:message] }).not_to include('p@ssw0rd') end begin @@ -68,6 +70,7 @@ def log!(_event) logs: [{message: /# Date: Tue, 21 Oct 2025 12:39:06 +0200 Subject: [PATCH 4/8] Reduce client timeout for ElasticSearch tests This will prevent failing tests from consuming allotted CI budget thus preventing test results to beproperly reported. --- spec/datadog/tracing/contrib/elasticsearch/patcher_spec.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/datadog/tracing/contrib/elasticsearch/patcher_spec.rb b/spec/datadog/tracing/contrib/elasticsearch/patcher_spec.rb index 802d34870ab..9e5db8ed03a 100644 --- a/spec/datadog/tracing/contrib/elasticsearch/patcher_spec.rb +++ b/spec/datadog/tracing/contrib/elasticsearch/patcher_spec.rb @@ -31,7 +31,8 @@ adapter: :net_http, transport_options: { headers: headers - } + }, + request_timeout: 5 ) end let(:configuration_options) { {} } From 38516c35000e861c82d08e685c152ac977a629f4 Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Tue, 21 Oct 2025 15:17:59 +0200 Subject: [PATCH 5/8] Display debug information Runs after tests have failed (for diagnosis) or succeeded (for comparison) Only free disk space for now, but we could add more. --- .github/actions/build-test/action.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/actions/build-test/action.yml b/.github/actions/build-test/action.yml index 641391bdac8..7919345c729 100644 --- a/.github/actions/build-test/action.yml +++ b/.github/actions/build-test/action.yml @@ -30,6 +30,12 @@ runs: env: COVERAGE_DIR: coverage/versions/${{ inputs.alias }}/${{ inputs.container-id }} + - name: Display debug info + if: ${{ !cancelled() }} + shell: bash + run: | + df -h + - name: Debug with SSH connection if: ${{ failure() && runner.debug == '1' }} uses: mxschmitt/action-tmate@7b6a61a73bbb9793cb80ad69b8dd8ac19261834c # v3.19.0 From c8670d66c454b0b4378f269cef0b7b3f3ff95af0 Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Tue, 21 Oct 2025 15:43:57 +0200 Subject: [PATCH 6/8] Simplify some code --- lib/datadog/core/telemetry/logging.rb | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/datadog/core/telemetry/logging.rb b/lib/datadog/core/telemetry/logging.rb index e1019beca4a..036bb78d8f4 100644 --- a/lib/datadog/core/telemetry/logging.rb +++ b/lib/datadog/core/telemetry/logging.rb @@ -49,10 +49,7 @@ def report(exception, level: :error, description: nil) # Anonymous exceptions to be logged as message = +"#{exception.class.name || exception.class.inspect}" # standard:disable Style/RedundantInterpolation - if description - message << ':' - message << " #{description}" - end + message << ": #{description}" if description event = Event::Log.new( message: message, From 23dc3c873529cf588f8ae8b05b48bcf105f8b3d9 Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Tue, 21 Oct 2025 15:53:35 +0200 Subject: [PATCH 7/8] Ignore some more files --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index b3be35587aa..126e84655d6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ +.DS_Store *.gem *.rbc *.swp +*~ *.vim /.config /coverage/ From fb3cbec4462b735e422f5a99bc1e8d121ddc9a6e Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Tue, 21 Oct 2025 15:54:02 +0200 Subject: [PATCH 8/8] Update Nix --- flake.lock | 8 ++++---- flake.nix | 4 +++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index c40f8135caf..ad74b77f72f 100644 --- a/flake.lock +++ b/flake.lock @@ -34,16 +34,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1742305402, - "narHash": "sha256-56UcjoVVkB7rAbiY9Y79Th4pOlx0e1hv6Cfny8rlP8U=", + "lastModified": 1760704990, + "narHash": "sha256-UJIhnoDIMuuzpO/VuTQwVbfFv2rogHqSE30xdUtK2Cg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6c8e4e4546146ddf05e9433ca560fa6260d00a14", + "rev": "b146f60d59cdc9c1559f604b480675a89b00ef6b", "type": "github" }, "original": { "owner": "nixos", - "ref": "release-24.11", + "ref": "release-25.05", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index 33fa8f9ad2b..284dc843be0 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,6 @@ { inputs = { - nixpkgs.url = "github:nixos/nixpkgs/release-24.11"; + nixpkgs.url = "github:nixos/nixpkgs/release-25.05"; # cross-platform convenience flake-utils.url = "github:numtide/flake-utils"; @@ -36,6 +36,8 @@ # enable implicitly resolving gems to bundled version export RUBYGEMS_GEMDEPS="$(pwd)/Gemfile" + + export SKIP_SIMPLECOV=1 ''; deps = [