ddtrace 0.45.0 → 0.47.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 +5 -5
- data/.circleci/config.yml +131 -12
- data/.circleci/images/primary/{Dockerfile-jruby-9.2 → Dockerfile-jruby-9.2-latest} +2 -1
- data/.circleci/images/primary/Dockerfile-jruby-9.2.0.0 +73 -0
- data/.circleci/images/primary/Dockerfile-truffleruby-21.0.0 +73 -0
- data/.github/workflows/create-next-milestone.yml +2 -2
- data/.rubocop.yml +250 -7
- data/.rubocop_todo.yml +397 -0
- data/.simplecov +6 -0
- data/Appraisals +16 -1
- data/CHANGELOG.md +150 -1
- data/Gemfile +53 -3
- data/LICENSE-3rdparty.csv +2 -0
- data/Rakefile +5 -23
- data/ddtrace.gemspec +6 -36
- data/docker-compose.yml +75 -7
- data/docs/DevelopmentGuide.md +28 -0
- data/docs/GettingStarted.md +69 -17
- data/integration/README.md +68 -0
- data/integration/apps/rack/.dockerignore +1 -0
- data/integration/apps/rack/.envrc.sample +1 -0
- data/integration/apps/rack/.gitignore +4 -0
- data/integration/apps/rack/.rspec +1 -0
- data/integration/apps/rack/Dockerfile +25 -0
- data/integration/apps/rack/Dockerfile-ci +11 -0
- data/integration/apps/rack/Gemfile +24 -0
- data/integration/apps/rack/README.md +93 -0
- data/integration/apps/rack/app/acme.rb +80 -0
- data/integration/apps/rack/app/datadog.rb +17 -0
- data/integration/apps/rack/bin/run +22 -0
- data/integration/apps/rack/bin/setup +17 -0
- data/integration/apps/rack/bin/test +24 -0
- data/integration/apps/rack/config.ru +6 -0
- data/integration/apps/rack/config/puma.rb +14 -0
- data/integration/apps/rack/config/unicorn.rb +23 -0
- data/integration/apps/rack/docker-compose.ci.yml +62 -0
- data/integration/apps/rack/docker-compose.yml +78 -0
- data/integration/apps/rack/script/build-images +38 -0
- data/integration/apps/rack/script/ci +50 -0
- data/integration/apps/rack/spec/integration/basic_spec.rb +10 -0
- data/integration/apps/rack/spec/spec_helper.rb +16 -0
- data/integration/apps/rack/spec/support/integration_helper.rb +22 -0
- data/integration/apps/rails-five/.dockerignore +1 -0
- data/integration/apps/rails-five/.env +3 -0
- data/integration/apps/rails-five/.envrc.sample +1 -0
- data/integration/apps/rails-five/.gitignore +30 -0
- data/integration/apps/rails-five/Dockerfile +25 -0
- data/integration/apps/rails-five/Dockerfile-ci +11 -0
- data/integration/apps/rails-five/Gemfile +104 -0
- data/integration/apps/rails-five/README.md +94 -0
- data/integration/apps/rails-five/Rakefile +6 -0
- data/integration/apps/rails-five/app/channels/application_cable/channel.rb +4 -0
- data/integration/apps/rails-five/app/channels/application_cable/connection.rb +4 -0
- data/integration/apps/rails-five/app/controllers/application_controller.rb +2 -0
- data/integration/apps/rails-five/app/controllers/basic_controller.rb +36 -0
- data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
- data/integration/apps/rails-five/app/controllers/health_controller.rb +9 -0
- data/integration/apps/rails-five/app/controllers/jobs_controller.rb +12 -0
- data/integration/apps/rails-five/app/jobs/application_job.rb +2 -0
- data/integration/apps/rails-five/app/jobs/test_job.rb +12 -0
- data/integration/apps/rails-five/app/mailers/application_mailer.rb +4 -0
- data/integration/apps/rails-five/app/models/application_record.rb +3 -0
- data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
- data/integration/apps/rails-five/app/models/test.rb +2 -0
- data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +13 -0
- data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +1 -0
- data/integration/apps/rails-five/bin/bundle +3 -0
- data/integration/apps/rails-five/bin/rails +9 -0
- data/integration/apps/rails-five/bin/rake +9 -0
- data/integration/apps/rails-five/bin/run +24 -0
- data/integration/apps/rails-five/bin/setup +27 -0
- data/integration/apps/rails-five/bin/spring +17 -0
- data/integration/apps/rails-five/bin/test +21 -0
- data/integration/apps/rails-five/bin/update +28 -0
- data/integration/apps/rails-five/config.ru +5 -0
- data/integration/apps/rails-five/config/application.rb +97 -0
- data/integration/apps/rails-five/config/boot.rb +4 -0
- data/integration/apps/rails-five/config/cable.yml +10 -0
- data/integration/apps/rails-five/config/credentials.yml.enc +1 -0
- data/integration/apps/rails-five/config/database.yml +28 -0
- data/integration/apps/rails-five/config/environment.rb +5 -0
- data/integration/apps/rails-five/config/environments/development.rb +51 -0
- data/integration/apps/rails-five/config/environments/production.rb +82 -0
- data/integration/apps/rails-five/config/environments/test.rb +43 -0
- data/integration/apps/rails-five/config/initializers/datadog.rb +18 -0
- data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +4 -0
- data/integration/apps/rails-five/config/initializers/resque.rb +4 -0
- data/integration/apps/rails-five/config/initializers/rollbar.rb +5 -0
- data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +14 -0
- data/integration/apps/rails-five/config/locales/en.yml +33 -0
- data/integration/apps/rails-five/config/puma.rb +24 -0
- data/integration/apps/rails-five/config/routes.rb +11 -0
- data/integration/apps/rails-five/config/spring.rb +6 -0
- data/integration/apps/rails-five/config/unicorn.rb +29 -0
- data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +11 -0
- data/integration/apps/rails-five/db/schema.rb +23 -0
- data/integration/apps/rails-five/db/seeds.rb +7 -0
- data/integration/apps/rails-five/docker-compose.ci.yml +98 -0
- data/integration/apps/rails-five/docker-compose.yml +100 -0
- data/integration/apps/rails-five/lib/tasks/.keep +0 -0
- data/integration/apps/rails-five/log/.keep +0 -0
- data/integration/apps/rails-five/public/robots.txt +1 -0
- data/integration/apps/rails-five/script/build-images +35 -0
- data/integration/apps/rails-five/script/ci +50 -0
- data/integration/apps/rails-five/spec/integration/basic_spec.rb +10 -0
- data/integration/apps/rails-five/spec/spec_helper.rb +16 -0
- data/integration/apps/rails-five/spec/support/integration_helper.rb +22 -0
- data/integration/apps/rails-five/storage/.keep +0 -0
- data/integration/apps/rails-five/tmp/.keep +0 -0
- data/integration/apps/rails-five/vendor/.keep +0 -0
- data/integration/apps/ruby/.dockerignore +1 -0
- data/integration/apps/ruby/.envrc.sample +1 -0
- data/integration/apps/ruby/.gitignore +2 -0
- data/integration/apps/ruby/Dockerfile +25 -0
- data/integration/apps/ruby/Dockerfile-ci +11 -0
- data/integration/apps/ruby/Gemfile +11 -0
- data/integration/apps/ruby/README.md +70 -0
- data/integration/apps/ruby/agent.yaml +3 -0
- data/integration/apps/ruby/app/datadog.rb +13 -0
- data/integration/apps/ruby/app/fibonacci.rb +58 -0
- data/integration/apps/ruby/bin/run +20 -0
- data/integration/apps/ruby/bin/setup +17 -0
- data/integration/apps/ruby/bin/test +21 -0
- data/integration/apps/ruby/docker-compose.ci.yml +51 -0
- data/integration/apps/ruby/docker-compose.yml +63 -0
- data/integration/apps/ruby/script/build-images +38 -0
- data/integration/apps/ruby/script/ci +50 -0
- data/integration/images/agent/Dockerfile +2 -0
- data/integration/images/agent/agent.yaml +3 -0
- data/integration/images/include/datadog/analyzer.rb +71 -0
- data/integration/images/include/datadog/demo_env.rb +101 -0
- data/integration/images/include/http-health-check +33 -0
- data/integration/images/ruby/2.0/Dockerfile +54 -0
- data/integration/images/ruby/2.1/Dockerfile +54 -0
- data/integration/images/ruby/2.2/Dockerfile +54 -0
- data/integration/images/ruby/2.3/Dockerfile +70 -0
- data/integration/images/ruby/2.4/Dockerfile +54 -0
- data/integration/images/ruby/2.5/Dockerfile +54 -0
- data/integration/images/ruby/2.6/Dockerfile +54 -0
- data/integration/images/ruby/2.7/Dockerfile +54 -0
- data/integration/images/ruby/3.0/Dockerfile +54 -0
- data/integration/images/wrk/Dockerfile +33 -0
- data/integration/images/wrk/scripts/entrypoint.sh +17 -0
- data/integration/images/wrk/scripts/scenarios/basic/default.lua +1 -0
- data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +1 -0
- data/integration/script/build-images +43 -0
- data/lib/ddtrace.rb +0 -5
- data/lib/ddtrace/analytics.rb +2 -0
- data/lib/ddtrace/buffer.rb +4 -4
- data/lib/ddtrace/configuration.rb +92 -23
- data/lib/ddtrace/configuration/base.rb +1 -1
- data/lib/ddtrace/configuration/components.rb +2 -2
- data/lib/ddtrace/configuration/option_definition.rb +1 -3
- data/lib/ddtrace/configuration/options.rb +4 -7
- data/lib/ddtrace/configuration/settings.rb +17 -3
- data/lib/ddtrace/context.rb +5 -6
- data/lib/ddtrace/context_provider.rb +0 -1
- data/lib/ddtrace/contrib/action_cable/event.rb +1 -0
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +1 -3
- data/lib/ddtrace/contrib/action_view/event.rb +1 -1
- data/lib/ddtrace/contrib/action_view/utils.rb +1 -1
- data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +101 -18
- data/lib/ddtrace/contrib/active_record/utils.rb +1 -0
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +2 -1
- data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +1 -0
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +9 -5
- data/lib/ddtrace/contrib/auto_instrument.rb +1 -0
- data/lib/ddtrace/contrib/aws/patcher.rb +1 -0
- data/lib/ddtrace/contrib/aws/services.rb +2 -0
- data/lib/ddtrace/contrib/configurable.rb +63 -39
- data/lib/ddtrace/contrib/configuration/resolver.rb +70 -5
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +19 -20
- data/lib/ddtrace/contrib/configuration/settings.rb +7 -6
- data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +0 -10
- data/lib/ddtrace/contrib/cucumber/ext.rb +0 -2
- data/lib/ddtrace/contrib/cucumber/formatter.rb +5 -11
- data/lib/ddtrace/contrib/dalli/patcher.rb +0 -38
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -1
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -0
- data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +5 -5
- data/lib/ddtrace/contrib/excon/middleware.rb +2 -6
- data/lib/ddtrace/contrib/extensions.rb +27 -3
- data/lib/ddtrace/contrib/faraday/middleware.rb +1 -3
- data/lib/ddtrace/contrib/faraday/patcher.rb +0 -36
- data/lib/ddtrace/contrib/grape/endpoint.rb +8 -15
- data/lib/ddtrace/contrib/grape/patcher.rb +0 -42
- data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +8 -8
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +1 -0
- data/lib/ddtrace/contrib/grpc/patcher.rb +0 -36
- data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -3
- data/lib/ddtrace/contrib/http/instrumentation.rb +5 -5
- data/lib/ddtrace/contrib/httpclient/instrumentation.rb +14 -19
- data/lib/ddtrace/contrib/httpclient/patcher.rb +5 -2
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +14 -20
- data/lib/ddtrace/contrib/httprb/patcher.rb +5 -2
- data/lib/ddtrace/contrib/mongodb/instrumentation.rb +2 -0
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -3
- data/lib/ddtrace/contrib/patcher.rb +9 -6
- data/lib/ddtrace/contrib/presto/patcher.rb +5 -2
- data/lib/ddtrace/contrib/qless/qless_job.rb +1 -0
- data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +1 -0
- data/lib/ddtrace/contrib/que/ext.rb +19 -19
- data/lib/ddtrace/contrib/que/tracer.rb +1 -1
- data/lib/ddtrace/contrib/racecar/event.rb +1 -0
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +3 -3
- data/lib/ddtrace/contrib/rack/middlewares.rb +5 -10
- data/lib/ddtrace/contrib/rack/patcher.rb +1 -3
- data/lib/ddtrace/contrib/rails/patcher.rb +6 -2
- data/lib/ddtrace/contrib/rake/instrumentation.rb +4 -2
- data/lib/ddtrace/contrib/redis/configuration/resolver.rb +11 -4
- data/lib/ddtrace/contrib/redis/quantize.rb +1 -0
- data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
- data/lib/ddtrace/contrib/redis/vendor/resolver.rb +6 -7
- data/lib/ddtrace/contrib/registry.rb +2 -2
- data/lib/ddtrace/contrib/resque/integration.rb +1 -1
- data/lib/ddtrace/contrib/resque/resque_job.rb +2 -0
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -3
- data/lib/ddtrace/contrib/rspec/configuration/settings.rb +0 -10
- data/lib/ddtrace/contrib/rspec/example.rb +24 -10
- data/lib/ddtrace/contrib/rspec/ext.rb +0 -3
- data/lib/ddtrace/contrib/rspec/integration.rb +1 -1
- data/lib/ddtrace/contrib/rspec/patcher.rb +0 -2
- data/lib/ddtrace/contrib/sequel/utils.rb +5 -6
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -1
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +2 -7
- data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -1
- data/lib/ddtrace/contrib/sinatra/env.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +3 -3
- data/lib/ddtrace/contrib/sneakers/ext.rb +11 -11
- data/lib/ddtrace/contrib/sneakers/tracer.rb +2 -4
- data/lib/ddtrace/contrib/status_code_matcher.rb +5 -3
- data/lib/ddtrace/correlation.rb +1 -0
- data/lib/ddtrace/diagnostics/environment_logger.rb +2 -1
- data/lib/ddtrace/distributed_tracing/headers/headers.rb +1 -0
- data/lib/ddtrace/distributed_tracing/headers/helpers.rb +1 -3
- data/lib/ddtrace/ext/ci.rb +2 -2
- data/lib/ddtrace/ext/distributed.rb +1 -1
- data/lib/ddtrace/ext/http.rb +1 -1
- data/lib/ddtrace/ext/runtime.rb +3 -1
- data/lib/ddtrace/forced_tracing.rb +2 -0
- data/lib/ddtrace/logger.rb +1 -1
- data/lib/ddtrace/metrics.rb +10 -6
- data/lib/ddtrace/opentracer/distributed_headers.rb +3 -0
- data/lib/ddtrace/opentracer/span.rb +2 -6
- data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
- data/lib/ddtrace/patcher.rb +25 -4
- data/lib/ddtrace/pin.rb +8 -61
- data/lib/ddtrace/pipeline/span_filter.rb +1 -1
- data/lib/ddtrace/propagation/grpc_propagator.rb +1 -0
- data/lib/ddtrace/quantization/http.rb +1 -0
- data/lib/ddtrace/runtime/cgroup.rb +2 -2
- data/lib/ddtrace/runtime/container.rb +27 -29
- data/lib/ddtrace/runtime/identity.rb +8 -0
- data/lib/ddtrace/sampler.rb +1 -1
- data/lib/ddtrace/sampling/rule_sampler.rb +1 -0
- data/lib/ddtrace/span.rb +7 -7
- data/lib/ddtrace/sync_writer.rb +12 -12
- data/lib/ddtrace/tracer.rb +7 -5
- data/lib/ddtrace/transport/http.rb +15 -8
- data/lib/ddtrace/transport/http/adapters/net.rb +27 -8
- data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -4
- data/lib/ddtrace/transport/http/builder.rb +7 -1
- data/lib/ddtrace/transport/http/env.rb +8 -0
- data/lib/ddtrace/transport/http/traces.rb +2 -3
- data/lib/ddtrace/transport/io.rb +1 -1
- data/lib/ddtrace/transport/io/response.rb +1 -3
- data/lib/ddtrace/transport/io/traces.rb +6 -0
- data/lib/ddtrace/transport/traces.rb +18 -1
- data/lib/ddtrace/utils/compression.rb +27 -0
- data/lib/ddtrace/utils/object_set.rb +41 -0
- data/lib/ddtrace/utils/only_once.rb +40 -0
- data/lib/ddtrace/utils/sequence.rb +17 -0
- data/lib/ddtrace/utils/string_table.rb +45 -0
- data/lib/ddtrace/utils/time.rb +32 -1
- data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
- data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
- data/lib/ddtrace/vendor/multipart-post/multipart.rb +12 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +8 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +116 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +57 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +135 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +9 -0
- data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +32 -0
- data/lib/ddtrace/version.rb +1 -1
- data/lib/ddtrace/workers.rb +5 -0
- data/lib/ddtrace/workers/async.rb +11 -3
- data/lib/ddtrace/workers/loop.rb +17 -3
- data/lib/ddtrace/workers/polling.rb +1 -0
- data/lib/ddtrace/workers/queue.rb +1 -0
- data/lib/ddtrace/workers/trace_writer.rb +10 -10
- data/lib/ddtrace/writer.rb +7 -4
- metadata +152 -402
- data/lib/ddtrace/augmentation.rb +0 -13
- data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
- data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
- data/lib/ddtrace/augmentation/shim.rb +0 -102
- data/lib/ddtrace/contrib/rspec/example_group.rb +0 -61
- data/lib/ddtrace/monkey.rb +0 -58
|
@@ -51,6 +51,7 @@ module Datadog
|
|
|
51
51
|
|
|
52
52
|
def endpoint_run(name, start, finish, id, payload)
|
|
53
53
|
return unless Thread.current[KEY_RUN]
|
|
54
|
+
|
|
54
55
|
Thread.current[KEY_RUN] = false
|
|
55
56
|
|
|
56
57
|
return unless enabled?
|
|
@@ -76,18 +77,14 @@ module Datadog
|
|
|
76
77
|
end
|
|
77
78
|
|
|
78
79
|
# Set analytics sample rate
|
|
79
|
-
if analytics_enabled?
|
|
80
|
-
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate)
|
|
81
|
-
end
|
|
80
|
+
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
|
|
82
81
|
|
|
83
82
|
# Measure service stats
|
|
84
83
|
Contrib::Analytics.set_measured(span)
|
|
85
84
|
|
|
86
85
|
# catch thrown exceptions
|
|
87
86
|
|
|
88
|
-
if exception_is_error?(payload[:exception_object])
|
|
89
|
-
span.set_error(payload[:exception_object])
|
|
90
|
-
end
|
|
87
|
+
span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object])
|
|
91
88
|
|
|
92
89
|
# override the current span with this notification values
|
|
93
90
|
span.set_tag(Ext::TAG_ROUTE_ENDPOINT, api_view) unless api_view.nil?
|
|
@@ -122,6 +119,7 @@ module Datadog
|
|
|
122
119
|
|
|
123
120
|
def endpoint_render(name, start, finish, id, payload)
|
|
124
121
|
return unless Thread.current[KEY_RENDER]
|
|
122
|
+
|
|
125
123
|
Thread.current[KEY_RENDER] = false
|
|
126
124
|
|
|
127
125
|
return unless enabled?
|
|
@@ -134,9 +132,7 @@ module Datadog
|
|
|
134
132
|
# Measure service stats
|
|
135
133
|
Contrib::Analytics.set_measured(span)
|
|
136
134
|
|
|
137
|
-
if exception_is_error?(payload[:exception_object])
|
|
138
|
-
span.set_error(payload[:exception_object])
|
|
139
|
-
end
|
|
135
|
+
span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object])
|
|
140
136
|
ensure
|
|
141
137
|
span.start(start)
|
|
142
138
|
span.finish(finish)
|
|
@@ -163,17 +159,13 @@ module Datadog
|
|
|
163
159
|
|
|
164
160
|
begin
|
|
165
161
|
# Set analytics sample rate
|
|
166
|
-
if analytics_enabled?
|
|
167
|
-
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate)
|
|
168
|
-
end
|
|
162
|
+
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
|
|
169
163
|
|
|
170
164
|
# Measure service stats
|
|
171
165
|
Contrib::Analytics.set_measured(span)
|
|
172
166
|
|
|
173
167
|
# catch thrown exceptions
|
|
174
|
-
if exception_is_error?(payload[:exception_object])
|
|
175
|
-
span.set_error(payload[:exception_object])
|
|
176
|
-
end
|
|
168
|
+
span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object])
|
|
177
169
|
|
|
178
170
|
span.set_tag(Ext::TAG_FILTER_TYPE, type.to_s)
|
|
179
171
|
ensure
|
|
@@ -226,6 +218,7 @@ module Datadog
|
|
|
226
218
|
return false unless exception
|
|
227
219
|
return true unless matcher
|
|
228
220
|
return true unless exception.respond_to?('status')
|
|
221
|
+
|
|
229
222
|
matcher.include?(exception.status)
|
|
230
223
|
end
|
|
231
224
|
|
|
@@ -22,51 +22,9 @@ module Datadog
|
|
|
22
22
|
# Patch endpoints
|
|
23
23
|
::Grape::Endpoint.send(:include, Instrumentation)
|
|
24
24
|
|
|
25
|
-
add_pin!
|
|
26
|
-
|
|
27
25
|
# Subscribe to ActiveSupport events
|
|
28
26
|
Datadog::Contrib::Grape::Endpoint.subscribe
|
|
29
27
|
end
|
|
30
|
-
|
|
31
|
-
def add_pin!
|
|
32
|
-
# Attach a Pin object globally and set the service once
|
|
33
|
-
pin = DeprecatedPin.new(
|
|
34
|
-
get_option(:service_name),
|
|
35
|
-
app: Ext::APP,
|
|
36
|
-
app_type: Datadog::Ext::AppTypes::WEB,
|
|
37
|
-
tracer: -> { get_option(:tracer) }
|
|
38
|
-
)
|
|
39
|
-
pin.onto(::Grape)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def get_option(option)
|
|
43
|
-
Datadog.configuration[:grape].get_option(option)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Implementation of deprecated Pin, which raises warnings when accessed.
|
|
47
|
-
# To be removed when support for Datadog::Pin with Grape is removed.
|
|
48
|
-
class DeprecatedPin < Datadog::Pin
|
|
49
|
-
include Datadog::DeprecatedPin
|
|
50
|
-
|
|
51
|
-
DEPRECATION_WARNING = %(
|
|
52
|
-
Use of Datadog::Pin with Grape is DEPRECATED.
|
|
53
|
-
Upgrade to the configuration API using the migration guide here:
|
|
54
|
-
https://github.com/DataDog/dd-trace-rb/releases/tag/v0.11.0).freeze
|
|
55
|
-
|
|
56
|
-
def tracer=(tracer)
|
|
57
|
-
Datadog.configuration[:grape][:tracer] = tracer
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def service_name=(service_name)
|
|
61
|
-
Datadog.configuration[:grape][:service_name] = service_name
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def log_deprecation_warning(method_name)
|
|
65
|
-
do_once(method_name) do
|
|
66
|
-
Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}")
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
28
|
end
|
|
71
29
|
end
|
|
72
30
|
end
|
|
@@ -15,20 +15,20 @@ module Datadog
|
|
|
15
15
|
add_datadog_pin! { |c| yield(c) if block_given? }
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
def request_response(**keywords)
|
|
19
|
-
trace(keywords)
|
|
18
|
+
def request_response(**keywords, &block)
|
|
19
|
+
trace(keywords, &block)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
def client_streamer(**keywords)
|
|
23
|
-
trace(keywords)
|
|
22
|
+
def client_streamer(**keywords, &block)
|
|
23
|
+
trace(keywords, &block)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
def server_streamer(**keywords)
|
|
27
|
-
trace(keywords)
|
|
26
|
+
def server_streamer(**keywords, &block)
|
|
27
|
+
trace(keywords, &block)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
def bidi_streamer(**keywords)
|
|
31
|
-
trace(keywords)
|
|
30
|
+
def bidi_streamer(**keywords, &block)
|
|
31
|
+
trace(keywords, &block)
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
private
|
|
@@ -19,49 +19,13 @@ module Datadog
|
|
|
19
19
|
require 'ddtrace/contrib/grpc/datadog_interceptor'
|
|
20
20
|
require 'ddtrace/contrib/grpc/intercept_with_datadog'
|
|
21
21
|
|
|
22
|
-
add_pin!
|
|
23
|
-
|
|
24
22
|
prepend_interceptor
|
|
25
23
|
end
|
|
26
24
|
|
|
27
|
-
def add_pin!
|
|
28
|
-
DeprecatedPin.new(
|
|
29
|
-
get_option(:service_name),
|
|
30
|
-
app: Ext::APP,
|
|
31
|
-
app_type: Datadog::Ext::AppTypes::WEB,
|
|
32
|
-
tracer: -> { get_option(:tracer) }
|
|
33
|
-
).onto(::GRPC)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
25
|
def prepend_interceptor
|
|
37
26
|
::GRPC::InterceptionContext
|
|
38
27
|
.send(:prepend, Datadog::Contrib::GRPC::InterceptWithDatadog)
|
|
39
28
|
end
|
|
40
|
-
|
|
41
|
-
def get_option(option)
|
|
42
|
-
Datadog.configuration[:grpc].get_option(option)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# Implementation of deprecated Pin, which raises warnings when accessed.
|
|
46
|
-
# To be removed when support for Datadog::Pin with GRPC is removed.
|
|
47
|
-
class DeprecatedPin < Datadog::Pin
|
|
48
|
-
include Datadog::DeprecatedPin
|
|
49
|
-
|
|
50
|
-
DEPRECATION_WARNING = %(
|
|
51
|
-
Use of Datadog::Pin with GRPC is DEPRECATED.
|
|
52
|
-
Upgrade to the configuration API using the migration guide here:
|
|
53
|
-
https://github.com/DataDog/dd-trace-rb/releases/tag/v0.11.0).freeze
|
|
54
|
-
|
|
55
|
-
def service_name=(service_name)
|
|
56
|
-
Datadog.configuration[:grpc][:service_name] = service_name
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def log_deprecation_warning(method_name)
|
|
60
|
-
do_once(method_name) do
|
|
61
|
-
Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}")
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
29
|
end
|
|
66
30
|
end
|
|
67
31
|
end
|
|
@@ -27,9 +27,7 @@ module Datadog
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def should_skip_distributed_tracing?(pin)
|
|
30
|
-
if pin.config && pin.config.key?(:distributed_tracing)
|
|
31
|
-
return !pin.config[:distributed_tracing]
|
|
32
|
-
end
|
|
30
|
+
return !pin.config[:distributed_tracing] if pin.config && pin.config.key?(:distributed_tracing)
|
|
33
31
|
|
|
34
32
|
!Datadog.configuration[:http][:distributed_tracing]
|
|
35
33
|
end
|
|
@@ -19,7 +19,7 @@ module Datadog
|
|
|
19
19
|
|
|
20
20
|
# Span hook invoked after request is completed.
|
|
21
21
|
def self.after_request(&block)
|
|
22
|
-
if
|
|
22
|
+
if block
|
|
23
23
|
# Set hook
|
|
24
24
|
@after_request = block
|
|
25
25
|
else
|
|
@@ -32,15 +32,14 @@ module Datadog
|
|
|
32
32
|
module InstanceMethods
|
|
33
33
|
include Datadog::Contrib::HttpAnnotationHelper
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
# :yield: +response+
|
|
36
|
+
def request(req, body = nil, &block)
|
|
36
37
|
host, = host_and_port(req)
|
|
37
38
|
request_options = datadog_configuration(host)
|
|
38
39
|
pin = datadog_pin(request_options)
|
|
39
40
|
return super(req, body, &block) unless pin && pin.tracer
|
|
40
41
|
|
|
41
|
-
if Datadog::Contrib::HTTP.should_skip_tracing?(req, pin.tracer)
|
|
42
|
-
return super(req, body, &block)
|
|
43
|
-
end
|
|
42
|
+
return super(req, body, &block) if Datadog::Contrib::HTTP.should_skip_tracing?(req, pin.tracer)
|
|
44
43
|
|
|
45
44
|
pin.tracer.trace(Ext::SPAN_REQUEST, on_error: method(:annotate_span_with_error!)) do |span|
|
|
46
45
|
begin
|
|
@@ -108,6 +107,7 @@ module Datadog
|
|
|
108
107
|
|
|
109
108
|
def set_analytics_sample_rate(span, request_options)
|
|
110
109
|
return unless analytics_enabled?(request_options)
|
|
110
|
+
|
|
111
111
|
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate(request_options))
|
|
112
112
|
end
|
|
113
113
|
|
|
@@ -88,14 +88,12 @@ module Datadog
|
|
|
88
88
|
service = config[:service_name]
|
|
89
89
|
tracer = config[:tracer]
|
|
90
90
|
|
|
91
|
-
@datadog_pin ||=
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
)
|
|
98
|
-
end
|
|
91
|
+
@datadog_pin ||= Datadog::Pin.new(
|
|
92
|
+
service,
|
|
93
|
+
app: Ext::APP,
|
|
94
|
+
app_type: Datadog::Ext::HTTP::TYPE_OUTBOUND,
|
|
95
|
+
tracer: -> { config[:tracer] }
|
|
96
|
+
)
|
|
99
97
|
|
|
100
98
|
if @datadog_pin.service_name == default_datadog_pin.service_name && @datadog_pin.service_name != service
|
|
101
99
|
@datadog_pin.service = service
|
|
@@ -111,14 +109,12 @@ module Datadog
|
|
|
111
109
|
config = Datadog.configuration[:httpclient]
|
|
112
110
|
service = config[:service_name]
|
|
113
111
|
|
|
114
|
-
@default_datadog_pin ||=
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
)
|
|
121
|
-
end
|
|
112
|
+
@default_datadog_pin ||= Datadog::Pin.new(
|
|
113
|
+
service,
|
|
114
|
+
app: Ext::APP,
|
|
115
|
+
app_type: Datadog::Ext::HTTP::TYPE_OUTBOUND,
|
|
116
|
+
tracer: -> { config[:tracer] }
|
|
117
|
+
)
|
|
122
118
|
end
|
|
123
119
|
|
|
124
120
|
def datadog_configuration(host = :default)
|
|
@@ -134,15 +130,14 @@ module Datadog
|
|
|
134
130
|
end
|
|
135
131
|
|
|
136
132
|
def should_skip_distributed_tracing?(pin)
|
|
137
|
-
if pin.config && pin.config.key?(:distributed_tracing)
|
|
138
|
-
return !pin.config[:distributed_tracing]
|
|
139
|
-
end
|
|
133
|
+
return !pin.config[:distributed_tracing] if pin.config && pin.config.key?(:distributed_tracing)
|
|
140
134
|
|
|
141
135
|
!Datadog.configuration[:httpclient][:distributed_tracing]
|
|
142
136
|
end
|
|
143
137
|
|
|
144
138
|
def set_analytics_sample_rate(span, request_options)
|
|
145
139
|
return unless analytics_enabled?(request_options)
|
|
140
|
+
|
|
146
141
|
Contrib::Analytics.set_sample_rate(span, request_options[:analytics_sample_rate])
|
|
147
142
|
end
|
|
148
143
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'ddtrace/contrib/patcher'
|
|
2
2
|
require 'ddtrace/contrib/httpclient/instrumentation'
|
|
3
|
+
require 'ddtrace/utils/only_once'
|
|
3
4
|
|
|
4
5
|
module Datadog
|
|
5
6
|
module Contrib
|
|
@@ -9,10 +10,12 @@ module Datadog
|
|
|
9
10
|
module Patcher
|
|
10
11
|
include Contrib::Patcher
|
|
11
12
|
|
|
13
|
+
PATCH_ONLY_ONCE = Datadog::Utils::OnlyOnce.new
|
|
14
|
+
|
|
12
15
|
module_function
|
|
13
16
|
|
|
14
17
|
def patched?
|
|
15
|
-
|
|
18
|
+
PATCH_ONLY_ONCE.ran?
|
|
16
19
|
end
|
|
17
20
|
|
|
18
21
|
def target_version
|
|
@@ -21,7 +24,7 @@ module Datadog
|
|
|
21
24
|
|
|
22
25
|
# patch applies our patch
|
|
23
26
|
def patch
|
|
24
|
-
|
|
27
|
+
PATCH_ONLY_ONCE.run do
|
|
25
28
|
begin
|
|
26
29
|
::HTTPClient.send(:include, Instrumentation)
|
|
27
30
|
rescue StandardError => e
|
|
@@ -16,7 +16,6 @@ module Datadog
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
# Instance methods for configuration
|
|
19
|
-
# rubocop:disable Metrics/ModuleLength
|
|
20
19
|
module InstanceMethods
|
|
21
20
|
include Datadog::Contrib::HttpAnnotationHelper
|
|
22
21
|
|
|
@@ -99,14 +98,12 @@ module Datadog
|
|
|
99
98
|
service = config[:service_name]
|
|
100
99
|
tracer = config[:tracer]
|
|
101
100
|
|
|
102
|
-
@datadog_pin ||=
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
)
|
|
109
|
-
end
|
|
101
|
+
@datadog_pin ||= Datadog::Pin.new(
|
|
102
|
+
service,
|
|
103
|
+
app: Ext::APP,
|
|
104
|
+
app_type: Datadog::Ext::HTTP::TYPE_OUTBOUND,
|
|
105
|
+
tracer: -> { config[:tracer] }
|
|
106
|
+
)
|
|
110
107
|
|
|
111
108
|
if @datadog_pin.service_name == default_datadog_pin.service_name && @datadog_pin.service_name != service
|
|
112
109
|
@datadog_pin.service = service
|
|
@@ -122,14 +119,12 @@ module Datadog
|
|
|
122
119
|
config = Datadog.configuration[:httprb]
|
|
123
120
|
service = config[:service_name]
|
|
124
121
|
|
|
125
|
-
@default_datadog_pin ||=
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
)
|
|
132
|
-
end
|
|
122
|
+
@default_datadog_pin ||= Datadog::Pin.new(
|
|
123
|
+
service,
|
|
124
|
+
app: Ext::APP,
|
|
125
|
+
app_type: Datadog::Ext::HTTP::TYPE_OUTBOUND,
|
|
126
|
+
tracer: -> { config[:tracer] }
|
|
127
|
+
)
|
|
133
128
|
end
|
|
134
129
|
|
|
135
130
|
def datadog_configuration(host = :default)
|
|
@@ -145,15 +140,14 @@ module Datadog
|
|
|
145
140
|
end
|
|
146
141
|
|
|
147
142
|
def should_skip_distributed_tracing?(pin)
|
|
148
|
-
if pin.config && pin.config.key?(:distributed_tracing)
|
|
149
|
-
return !pin.config[:distributed_tracing]
|
|
150
|
-
end
|
|
143
|
+
return !pin.config[:distributed_tracing] if pin.config && pin.config.key?(:distributed_tracing)
|
|
151
144
|
|
|
152
145
|
!Datadog.configuration[:httprb][:distributed_tracing]
|
|
153
146
|
end
|
|
154
147
|
|
|
155
148
|
def set_analytics_sample_rate(span, request_options)
|
|
156
149
|
return unless analytics_enabled?(request_options)
|
|
150
|
+
|
|
157
151
|
Contrib::Analytics.set_sample_rate(span, request_options[:analytics_sample_rate])
|
|
158
152
|
end
|
|
159
153
|
end
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'ddtrace/contrib/patcher'
|
|
2
2
|
require 'ddtrace/contrib/httprb/instrumentation'
|
|
3
|
+
require 'ddtrace/utils/only_once'
|
|
3
4
|
|
|
4
5
|
module Datadog
|
|
5
6
|
module Contrib
|
|
@@ -9,10 +10,12 @@ module Datadog
|
|
|
9
10
|
module Patcher
|
|
10
11
|
include Contrib::Patcher
|
|
11
12
|
|
|
13
|
+
PATCH_ONLY_ONCE = Datadog::Utils::OnlyOnce.new
|
|
14
|
+
|
|
12
15
|
module_function
|
|
13
16
|
|
|
14
17
|
def patched?
|
|
15
|
-
|
|
18
|
+
PATCH_ONLY_ONCE.ran?
|
|
16
19
|
end
|
|
17
20
|
|
|
18
21
|
def target_version
|
|
@@ -21,7 +24,7 @@ module Datadog
|
|
|
21
24
|
|
|
22
25
|
# patch applies our patch
|
|
23
26
|
def patch
|
|
24
|
-
|
|
27
|
+
PATCH_ONLY_ONCE.run do
|
|
25
28
|
begin
|
|
26
29
|
::HTTP::Client.send(:include, Instrumentation)
|
|
27
30
|
rescue StandardError => e
|