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: 6 additions & 0 deletions .github/actions/build-test/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
.DS_Store
*.gem
*.rbc
*.swp
*~
*.vim
/.config
/coverage/
Expand Down
8 changes: 4 additions & 4 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion flake.nix
Original file line number Diff line number Diff line change
@@ -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";
Expand Down Expand Up @@ -36,6 +36,8 @@

# enable implicitly resolving gems to bundled version
export RUBYGEMS_GEMDEPS="$(pwd)/Gemfile"

export SKIP_SIMPLECOV=1
'';

deps = [
Expand Down
4 changes: 2 additions & 2 deletions lib/datadog/core/telemetry/logger.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
10 changes: 2 additions & 8 deletions lib/datadog/core/telemetry/logging.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,17 +45,11 @@ 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 <Class:0x00007f8b1c0b3b40>
message = +"#{exception.class.name || exception.class.inspect}" # standard:disable Style/RedundantInterpolation

exception_message = pii_safe ? exception.message : nil

if description || exception_message
message << ':'
message << " #{description}" if description
message << " (#{exception.message})" if exception_message
end
message << ": #{description}" if description

event = Event::Log.new(
message: message,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion lib/datadog/profiling/collectors/idle_sampling_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion sig/datadog/core/telemetry/logger.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion sig/datadog/core/telemetry/logging.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
13 changes: 2 additions & 11 deletions spec/datadog/core/telemetry/logger_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,28 +15,19 @@

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

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
Expand Down
32 changes: 3 additions & 29 deletions spec/datadog/core/telemetry/logging_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -68,6 +70,7 @@ def log!(_event)
logs: [{message: /#<Class:/, 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

customer_exception = Class.new(StandardError)
Expand All @@ -79,35 +82,6 @@ def log!(_event)
end
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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@
adapter: :net_http,
transport_options: {
headers: headers
}
},
request_timeout: 5
)
end
let(:configuration_options) { {} }
Expand Down
Loading