Skip to content

Commit 05d35a2

Browse files
authored
Remove raises of strings from dynamic instrumentation code (#4997)
1 parent 7d06c15 commit 05d35a2

File tree

7 files changed

+24
-21
lines changed

7 files changed

+24
-21
lines changed

lib/datadog/di/component.rb

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,22 +29,6 @@ def build(settings, agent_settings, logger, telemetry: nil)
2929
end
3030
end
3131

32-
def build!(settings, agent_settings, logger, telemetry: nil)
33-
unless settings.respond_to?(:dynamic_instrumentation) && settings.dynamic_instrumentation.enabled
34-
raise "Requested DI component but DI is not enabled in settings"
35-
end
36-
37-
unless settings.respond_to?(:remote) && settings.remote.enabled
38-
raise "Requested DI component but remote config is not enabled in settings"
39-
end
40-
41-
unless environment_supported?(settings, logger)
42-
raise "DI does not support the environment (development or Ruby version too low or not MRI)"
43-
end
44-
45-
new(settings, agent_settings, logger, code_tracker: DI.code_tracker, telemetry: telemetry)
46-
end
47-
4832
# Checks whether the runtime environment is supported by
4933
# dynamic instrumentation. Currently we only require that, if Rails
5034
# is used, that Rails environment is not development because

lib/datadog/di/error.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ module DI
1010
#
1111
# @api private
1212
class Error < StandardError
13+
# Internal Dynamic Instrumentation error ("should never happen").
14+
class InternalError < Error
15+
end
16+
1317
# Probe does not contain a line number (i.e., is not a line probe).
1418
class MissingLineNumber < Error
1519
end

lib/datadog/di/instrumenter.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -409,9 +409,11 @@ def hook_line(probe, &block)
409409
# TODO test this path
410410
end
411411

412-
# TODO internal check - remove or use a proper exception
412+
# Internal sanity check - untargeted trace points create a huge
413+
# performance impact, and we absolutely do not want to set them
414+
# accidentally.
413415
if !iseq && !permit_untargeted_trace_points
414-
raise "Trying to use an untargeted trace point when user did not permit it"
416+
raise Error::InternalError, "Trying to use an untargeted trace point when user did not permit it"
415417
end
416418

417419
lock.synchronize do

sig/datadog/di/component.rbs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ module Datadog
2727

2828
def self.build: (untyped settings, untyped agent_settings, Core::Logger logger, ?telemetry: untyped?) -> (nil | untyped)
2929

30-
def self.build!: (untyped settings, untyped agent_settings, Core::Logger logger, ?telemetry: untyped?) -> untyped
3130
def self.environment_supported?: (untyped settings, Core::Logger logger) -> (false | true)
3231

3332
def initialize: (untyped settings, untyped agent_settings, Core::Logger logger, ?code_tracker: untyped?, ?telemetry: untyped?) -> void

sig/datadog/di/error.rbs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
module Datadog
22
module DI
33
class Error < StandardError
4+
class InternalError < Error
5+
end
46
class MissingLineNumber < Error
57
end
68
class AgentCommunicationError < Error

spec/datadog/di/integration/everything_from_remote_config_spec.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,13 @@ def target_method
6161
let(:receiver) { remote.receivers(telemetry)[0] }
6262

6363
let(:component) do
64-
Datadog::DI::Component.build!(settings, agent_settings, logger)
64+
# TODO should this use Component.new? We have to manually pass in
65+
# the code tracker in that case.
66+
Datadog::DI::Component.build(settings, agent_settings, logger).tap do |component|
67+
if component.nil?
68+
raise "Component failed to create - unsuitable environment? Check log entries"
69+
end
70+
end
6571
end
6672

6773
let(:propagate_all_exceptions) { true }

spec/datadog/di/integration/instrumentation_spec.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,13 @@ def exception_method
9090
end
9191

9292
let(:component) do
93-
Datadog::DI::Component.build!(settings, agent_settings, logger)
93+
# TODO should this use Component.new? We have to manually pass in
94+
# the code tracker in that case.
95+
Datadog::DI::Component.build(settings, agent_settings, logger).tap do |component|
96+
if component.nil?
97+
raise "Component failed to create - unsuitable environment? Check log entries"
98+
end
99+
end
94100
end
95101

96102
let(:expected_installed_payload) do

0 commit comments

Comments
 (0)