ddtrace 1.0.0.beta1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +4 -16
- data/CHANGELOG.md +156 -2
- data/LICENSE-3rdparty.csv +3 -2
- data/README.md +2 -2
- data/ddtrace.gemspec +12 -3
- data/docs/GettingStarted.md +231 -146
- data/docs/ProfilingDevelopment.md +8 -8
- data/docs/UpgradeGuide.md +384 -205
- data/ext/ddtrace_profiling_loader/ddtrace_profiling_loader.c +118 -0
- data/ext/ddtrace_profiling_loader/extconf.rb +53 -0
- data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +31 -5
- data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +0 -8
- data/ext/ddtrace_profiling_native_extension/collectors_stack.c +278 -0
- data/ext/ddtrace_profiling_native_extension/extconf.rb +79 -100
- data/ext/ddtrace_profiling_native_extension/libddprof_helpers.h +13 -0
- data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +186 -0
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +579 -7
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +30 -0
- data/ext/ddtrace_profiling_native_extension/profiling.c +10 -1
- data/ext/ddtrace_profiling_native_extension/stack_recorder.c +139 -0
- data/ext/ddtrace_profiling_native_extension/stack_recorder.h +28 -0
- data/lib/datadog/appsec/assets/waf_rules/recommended.json +248 -318
- data/lib/datadog/appsec/assets/waf_rules/risky.json +78 -18
- data/lib/datadog/appsec/assets/waf_rules/strict.json +4 -67
- data/lib/datadog/appsec/assets.rb +2 -0
- data/lib/datadog/appsec/autoload.rb +2 -2
- data/lib/datadog/appsec/configuration/settings.rb +22 -1
- data/lib/datadog/appsec/configuration.rb +10 -0
- data/lib/datadog/appsec/contrib/auto_instrument.rb +2 -0
- data/lib/datadog/appsec/contrib/configuration/settings.rb +2 -0
- data/lib/datadog/appsec/contrib/integration.rb +2 -0
- data/lib/datadog/appsec/contrib/patcher.rb +2 -0
- data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +2 -0
- data/lib/datadog/appsec/contrib/rack/ext.rb +2 -0
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +78 -37
- data/lib/datadog/appsec/contrib/rack/integration.rb +1 -0
- data/lib/datadog/appsec/contrib/rack/patcher.rb +0 -1
- data/lib/datadog/appsec/contrib/rack/reactive/request.rb +4 -2
- data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +64 -0
- data/lib/datadog/appsec/contrib/rack/reactive/response.rb +4 -2
- data/lib/datadog/appsec/contrib/rack/request.rb +16 -1
- data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +41 -0
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +60 -46
- data/lib/datadog/appsec/contrib/rack/response.rb +2 -0
- data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +2 -0
- data/lib/datadog/appsec/contrib/rails/ext.rb +2 -0
- data/lib/datadog/appsec/contrib/rails/framework.rb +2 -0
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +81 -0
- data/lib/datadog/appsec/contrib/rails/patcher.rb +35 -2
- data/lib/datadog/appsec/contrib/rails/reactive/action.rb +68 -0
- data/lib/datadog/appsec/contrib/rails/request.rb +33 -0
- data/lib/datadog/appsec/contrib/rails/request_middleware.rb +2 -0
- data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +2 -0
- data/lib/datadog/appsec/contrib/sinatra/ext.rb +2 -0
- data/lib/datadog/appsec/contrib/sinatra/framework.rb +2 -0
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +124 -0
- data/lib/datadog/appsec/contrib/sinatra/patcher.rb +69 -2
- data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +63 -0
- data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +2 -0
- data/lib/datadog/appsec/event.rb +44 -34
- data/lib/datadog/appsec/extensions.rb +2 -4
- data/lib/datadog/appsec/instrumentation/gateway.rb +2 -0
- data/lib/datadog/appsec/processor.rb +164 -0
- data/lib/datadog/appsec/rate_limiter.rb +7 -0
- data/lib/datadog/appsec/reactive/address_hash.rb +2 -0
- data/lib/datadog/appsec/reactive/engine.rb +2 -0
- data/lib/datadog/appsec/reactive/operation.rb +2 -1
- data/lib/datadog/appsec/reactive/subscriber.rb +2 -0
- data/lib/datadog/appsec.rb +2 -0
- data/lib/datadog/ci/configuration/components.rb +1 -0
- data/lib/datadog/ci/configuration/settings.rb +9 -2
- data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +1 -0
- data/lib/datadog/ci/contrib/cucumber/ext.rb +1 -0
- data/lib/datadog/ci/contrib/cucumber/formatter.rb +2 -1
- data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +1 -0
- data/lib/datadog/ci/contrib/cucumber/integration.rb +1 -0
- data/lib/datadog/ci/contrib/cucumber/patcher.rb +1 -0
- data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +1 -0
- data/lib/datadog/ci/contrib/rspec/example.rb +3 -2
- data/lib/datadog/ci/contrib/rspec/ext.rb +1 -0
- data/lib/datadog/ci/contrib/rspec/integration.rb +1 -0
- data/lib/datadog/ci/contrib/rspec/patcher.rb +1 -0
- data/lib/datadog/ci/ext/app_types.rb +1 -0
- data/lib/datadog/ci/ext/environment.rb +23 -8
- data/lib/datadog/ci/ext/settings.rb +1 -0
- data/lib/datadog/ci/ext/test.rb +1 -0
- data/lib/datadog/ci/extensions.rb +1 -0
- data/lib/datadog/ci/flush.rb +1 -0
- data/lib/datadog/ci/test.rb +2 -1
- data/lib/datadog/ci.rb +3 -1
- data/lib/datadog/core/buffer/cruby.rb +1 -0
- data/lib/datadog/core/buffer/thread_safe.rb +1 -0
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +109 -40
- data/lib/datadog/core/configuration/base.rb +1 -0
- data/lib/datadog/core/configuration/components.rb +23 -4
- data/lib/datadog/core/configuration/dependency_resolver.rb +1 -0
- data/lib/datadog/core/configuration/option.rb +1 -0
- data/lib/datadog/core/configuration/option_definition.rb +1 -0
- data/lib/datadog/core/configuration/option_definition_set.rb +1 -0
- data/lib/datadog/core/configuration/option_set.rb +1 -0
- data/lib/datadog/core/configuration/options.rb +1 -0
- data/lib/datadog/core/configuration/settings.rb +4 -12
- data/lib/datadog/core/configuration.rb +8 -5
- data/lib/datadog/core/diagnostics/environment_logger.rb +2 -1
- data/lib/datadog/core/diagnostics/ext.rb +1 -0
- data/lib/datadog/core/diagnostics/health.rb +2 -1
- data/lib/datadog/core/encoding.rb +1 -0
- data/lib/datadog/core/environment/cgroup.rb +4 -1
- data/lib/datadog/core/environment/class_count.rb +1 -0
- data/lib/datadog/core/environment/container.rb +3 -1
- data/lib/datadog/core/environment/ext.rb +1 -0
- data/lib/datadog/core/environment/gc.rb +1 -0
- data/lib/datadog/core/environment/identity.rb +1 -0
- data/lib/datadog/core/environment/socket.rb +1 -0
- data/lib/datadog/core/environment/thread_count.rb +1 -0
- data/lib/datadog/core/environment/variable_helpers.rb +27 -2
- data/lib/datadog/core/environment/vm_cache.rb +1 -0
- data/lib/datadog/core/error.rb +2 -1
- data/lib/datadog/core/extensions.rb +2 -1
- data/lib/datadog/core/git/ext.rb +1 -0
- data/lib/datadog/core/logger.rb +1 -0
- data/lib/datadog/core/logging/ext.rb +11 -0
- data/lib/datadog/core/metrics/client.rb +16 -5
- data/lib/datadog/core/metrics/ext.rb +1 -0
- data/lib/datadog/core/metrics/helpers.rb +2 -0
- data/lib/datadog/core/metrics/logging.rb +2 -0
- data/lib/datadog/core/metrics/metric.rb +2 -0
- data/lib/datadog/core/metrics/options.rb +2 -0
- data/lib/datadog/core/pin.rb +1 -1
- data/lib/datadog/core/runtime/metrics.rb +2 -1
- data/lib/datadog/core/utils/compression.rb +1 -0
- data/lib/datadog/core/utils/forking.rb +1 -0
- data/lib/datadog/core/utils/object_set.rb +1 -0
- data/lib/datadog/core/utils/only_once.rb +2 -1
- data/lib/datadog/core/utils/safe_dup.rb +27 -0
- data/lib/datadog/core/utils/sequence.rb +1 -0
- data/lib/datadog/core/utils/string_table.rb +1 -0
- data/lib/datadog/core/utils/time.rb +1 -0
- data/lib/datadog/core/utils.rb +1 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +1 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +1 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +1 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +1 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +1 -0
- data/lib/datadog/core/vendor/multipart-post/multipart.rb +1 -0
- data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +1 -0
- data/lib/datadog/core/worker.rb +1 -0
- data/lib/datadog/core/workers/async.rb +4 -1
- data/lib/datadog/core/workers/interval_loop.rb +1 -0
- data/lib/datadog/core/workers/polling.rb +1 -0
- data/lib/datadog/core/workers/queue.rb +1 -0
- data/lib/datadog/core/workers/runtime_metrics.rb +0 -2
- data/lib/datadog/core.rb +7 -0
- data/lib/datadog/kit/enable_core_dumps.rb +50 -0
- data/lib/datadog/kit/identity.rb +63 -0
- data/lib/datadog/kit.rb +11 -0
- data/lib/datadog/opentracer/binary_propagator.rb +1 -0
- data/lib/datadog/opentracer/carrier.rb +1 -0
- data/lib/datadog/opentracer/distributed_headers.rb +1 -0
- data/lib/datadog/opentracer/global_tracer.rb +1 -0
- data/lib/datadog/opentracer/propagator.rb +1 -0
- data/lib/datadog/opentracer/rack_propagator.rb +1 -0
- data/lib/datadog/opentracer/scope.rb +1 -0
- data/lib/datadog/opentracer/scope_manager.rb +1 -0
- data/lib/datadog/opentracer/span.rb +1 -0
- data/lib/datadog/opentracer/span_context.rb +1 -0
- data/lib/datadog/opentracer/span_context_factory.rb +1 -0
- data/lib/datadog/opentracer/text_map_propagator.rb +1 -0
- data/lib/datadog/opentracer/thread_local_scope.rb +1 -0
- data/lib/datadog/opentracer/thread_local_scope_manager.rb +1 -0
- data/lib/datadog/opentracer/tracer.rb +1 -2
- data/lib/datadog/opentracer.rb +1 -0
- data/lib/datadog/profiling/backtrace_location.rb +1 -0
- data/lib/datadog/profiling/buffer.rb +1 -0
- data/lib/datadog/profiling/collectors/code_provenance.rb +2 -1
- data/lib/datadog/profiling/collectors/old_stack.rb +298 -0
- data/lib/datadog/profiling/collectors/stack.rb +5 -286
- data/lib/datadog/profiling/encoding/profile.rb +1 -1
- data/lib/datadog/profiling/event.rb +1 -0
- data/lib/datadog/profiling/events/stack.rb +1 -0
- data/lib/datadog/profiling/exporter.rb +1 -0
- data/lib/datadog/profiling/ext/forking.rb +1 -0
- data/lib/datadog/profiling/ext.rb +4 -3
- data/lib/datadog/profiling/flush.rb +2 -1
- data/lib/datadog/profiling/load_native_extension.rb +22 -0
- data/lib/datadog/profiling/native_extension.rb +1 -0
- data/lib/datadog/profiling/pprof/builder.rb +2 -1
- data/lib/datadog/profiling/pprof/converter.rb +1 -0
- data/lib/datadog/profiling/pprof/message_set.rb +1 -0
- data/lib/datadog/profiling/pprof/payload.rb +1 -0
- data/lib/datadog/profiling/pprof/pprof_pb.rb +1 -0
- data/lib/datadog/profiling/pprof/stack_sample.rb +1 -0
- data/lib/datadog/profiling/pprof/string_table.rb +1 -0
- data/lib/datadog/profiling/pprof/template.rb +1 -0
- data/lib/datadog/profiling/preload.rb +1 -0
- data/lib/datadog/profiling/profiler.rb +1 -0
- data/lib/datadog/profiling/recorder.rb +2 -1
- data/lib/datadog/profiling/scheduler.rb +3 -2
- data/lib/datadog/profiling/stack_recorder.rb +33 -0
- data/lib/datadog/profiling/tag_builder.rb +48 -0
- data/lib/datadog/profiling/tasks/exec.rb +3 -2
- data/lib/datadog/profiling/tasks/help.rb +1 -0
- data/lib/datadog/profiling/tasks/setup.rb +7 -4
- data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +2 -1
- data/lib/datadog/profiling/trace_identifiers/helper.rb +2 -1
- data/lib/datadog/profiling/transport/client.rb +1 -0
- data/lib/datadog/profiling/transport/http/api/endpoint.rb +1 -0
- data/lib/datadog/profiling/transport/http/api/instance.rb +1 -0
- data/lib/datadog/profiling/transport/http/api/spec.rb +1 -0
- data/lib/datadog/profiling/transport/http/api.rb +1 -0
- data/lib/datadog/profiling/transport/http/builder.rb +1 -0
- data/lib/datadog/profiling/transport/http/client.rb +1 -0
- data/lib/datadog/profiling/transport/http/response.rb +1 -0
- data/lib/datadog/profiling/transport/http.rb +1 -0
- data/lib/datadog/profiling/transport/io/client.rb +1 -0
- data/lib/datadog/profiling/transport/io/response.rb +1 -0
- data/lib/datadog/profiling/transport/io.rb +1 -0
- data/lib/datadog/profiling/transport/parcel.rb +1 -0
- data/lib/datadog/profiling/transport/request.rb +1 -0
- data/lib/datadog/profiling/transport/response.rb +1 -0
- data/lib/datadog/profiling.rb +30 -27
- data/lib/datadog/tracing/analytics.rb +1 -0
- data/lib/datadog/tracing/buffer.rb +10 -3
- data/lib/datadog/tracing/configuration/ext.rb +1 -0
- data/lib/datadog/tracing/context.rb +1 -0
- data/lib/datadog/tracing/context_provider.rb +18 -19
- data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/event.rb +2 -1
- data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/events.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +1 -1
- data/lib/datadog/tracing/contrib/action_cable/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/action_cable/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/event.rb +2 -1
- data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/events.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +3 -2
- data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/action_pack/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/action_pack/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/action_pack/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/action_pack/utils.rb +2 -1
- data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/event.rb +2 -1
- data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/events.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/action_view/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/action_view/utils.rb +2 -1
- data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/event.rb +2 -1
- data/lib/datadog/tracing/contrib/active_job/events/discard.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/events/perform.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/events.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/log_injection.rb +1 -0
- data/lib/datadog/tracing/contrib/active_job/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +2 -1
- data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +2 -1
- data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +3 -2
- data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/event.rb +2 -1
- data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +2 -1
- data/lib/datadog/tracing/contrib/active_record/events.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/active_record/utils.rb +2 -1
- data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +2 -1
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +1 -0
- data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +5 -2
- data/lib/datadog/tracing/contrib/active_support/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/analytics.rb +1 -0
- data/lib/datadog/tracing/contrib/auto_instrument.rb +23 -20
- data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/aws/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +3 -1
- data/lib/datadog/tracing/contrib/aws/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/aws/parsed_context.rb +1 -0
- data/lib/datadog/tracing/contrib/aws/patcher.rb +2 -1
- data/lib/datadog/tracing/contrib/aws/services.rb +1 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +12 -4
- data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/configurable.rb +1 -0
- data/lib/datadog/tracing/contrib/configuration/resolver.rb +1 -0
- data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +1 -0
- data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/dalli/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/dalli/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/dalli/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/dalli/quantize.rb +1 -0
- data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/delayed_job/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/delayed_job/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +2 -1
- data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +10 -3
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +40 -3
- data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +1 -0
- data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +2 -1
- data/lib/datadog/tracing/contrib/ethon/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/ethon/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +2 -1
- data/lib/datadog/tracing/contrib/ethon/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/excon/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/excon/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/excon/middleware.rb +2 -1
- data/lib/datadog/tracing/contrib/excon/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/extensions.rb +57 -44
- data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/faraday/connection.rb +1 -0
- data/lib/datadog/tracing/contrib/faraday/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/faraday/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +2 -1
- data/lib/datadog/tracing/contrib/faraday/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +1 -0
- data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +4 -2
- data/lib/datadog/tracing/contrib/grape/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/grape/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/grape/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/grape/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/graphql/ext.rb +3 -2
- data/lib/datadog/tracing/contrib/graphql/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/graphql/patcher.rb +31 -4
- data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +3 -2
- data/lib/datadog/tracing/contrib/grpc/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +2 -1
- data/lib/datadog/tracing/contrib/http/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/http/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/http/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/http/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/http_annotation_helper.rb +1 -0
- data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/httpclient/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +3 -2
- data/lib/datadog/tracing/contrib/httpclient/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/httpclient/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/httprb/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +3 -2
- data/lib/datadog/tracing/contrib/httprb/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/httprb/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/integration.rb +2 -1
- data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/event.rb +2 -1
- data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/events.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/lograge/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +4 -2
- data/lib/datadog/tracing/contrib/lograge/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/lograge/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/parsers.rb +2 -1
- data/lib/datadog/tracing/contrib/mongodb/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +3 -2
- data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/mysql2/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/mysql2/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/patchable.rb +1 -0
- data/lib/datadog/tracing/contrib/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/presto/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/presto/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/presto/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/presto/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/qless/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/qless/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/qless/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/qless/qless_job.rb +3 -2
- data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +2 -1
- data/lib/datadog/tracing/contrib/que/configuration/settings.rb +2 -1
- data/lib/datadog/tracing/contrib/que/ext.rb +2 -1
- data/lib/datadog/tracing/contrib/que/integration.rb +2 -1
- data/lib/datadog/tracing/contrib/que/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/que/tracer.rb +3 -2
- data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/event.rb +2 -1
- data/lib/datadog/tracing/contrib/racecar/events/batch.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/events/consume.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/events/message.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/events.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/rack/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/rack/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +2 -1
- data/lib/datadog/tracing/contrib/rack/patcher.rb +3 -2
- data/lib/datadog/tracing/contrib/rack/request_queue.rb +1 -0
- data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +3 -1
- data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +5 -4
- data/lib/datadog/tracing/contrib/rails/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/rails/framework.rb +37 -36
- data/lib/datadog/tracing/contrib/rails/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/rails/log_injection.rb +4 -16
- data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -0
- data/lib/datadog/tracing/contrib/rails/patcher.rb +8 -3
- data/lib/datadog/tracing/contrib/rails/railtie.rb +1 -0
- data/lib/datadog/tracing/contrib/rails/utils.rb +1 -0
- data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/rake/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/rake/instrumentation.rb +6 -4
- data/lib/datadog/tracing/contrib/rake/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/rake/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +1 -0
- data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/redis/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/redis/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/redis/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/redis/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -0
- data/lib/datadog/tracing/contrib/redis/tags.rb +2 -1
- data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +1 -0
- data/lib/datadog/tracing/contrib/registry.rb +1 -0
- data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/resque/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/resque/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/resque/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/resque/resque_job.rb +3 -2
- data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/rest_client/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/rest_client/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/rest_client/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +2 -1
- data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +4 -2
- data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/database.rb +2 -1
- data/lib/datadog/tracing/contrib/sequel/dataset.rb +2 -1
- data/lib/datadog/tracing/contrib/sequel/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/utils.rb +2 -1
- data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/shoryuken/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/shoryuken/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +2 -1
- data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +2 -1
- data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +2 -0
- data/lib/datadog/tracing/contrib/sidekiq/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +1 -1
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +1 -1
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +1 -1
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +22 -2
- data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/env.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/framework.rb +14 -1
- data/lib/datadog/tracing/contrib/sinatra/headers.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/sinatra/tracer.rb +3 -2
- data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +2 -1
- data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +2 -1
- data/lib/datadog/tracing/contrib/sneakers/ext.rb +2 -1
- data/lib/datadog/tracing/contrib/sneakers/integration.rb +2 -1
- data/lib/datadog/tracing/contrib/sneakers/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/sneakers/tracer.rb +3 -2
- data/lib/datadog/tracing/contrib/status_code_matcher.rb +1 -0
- data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +1 -0
- data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +1 -0
- data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +1 -0
- data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/utils/database.rb +1 -0
- data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +1 -0
- data/lib/datadog/tracing/contrib/utils/quantization/http.rb +1 -0
- data/lib/datadog/tracing/contrib.rb +3 -0
- data/lib/datadog/tracing/correlation.rb +12 -20
- data/lib/datadog/tracing/distributed/headers/b3.rb +1 -0
- data/lib/datadog/tracing/distributed/headers/b3_single.rb +1 -0
- data/lib/datadog/tracing/distributed/headers/datadog.rb +1 -0
- data/lib/datadog/tracing/distributed/headers/ext.rb +1 -0
- data/lib/datadog/tracing/distributed/helpers.rb +1 -0
- data/lib/datadog/tracing/distributed/parser.rb +1 -0
- data/lib/datadog/tracing/event.rb +3 -1
- data/lib/datadog/tracing/flush.rb +1 -0
- data/lib/datadog/tracing/metadata/analytics.rb +2 -0
- data/lib/datadog/tracing/metadata/errors.rb +24 -0
- data/lib/datadog/tracing/metadata/ext.rb +2 -1
- data/lib/datadog/tracing/metadata/tagging.rb +2 -10
- data/lib/datadog/tracing/metadata.rb +4 -0
- data/lib/datadog/tracing/pipeline/span_processor.rb +1 -0
- data/lib/datadog/tracing/propagation/grpc.rb +1 -0
- data/lib/datadog/tracing/propagation/http.rb +1 -0
- data/lib/datadog/tracing/runtime/metrics.rb +1 -0
- data/lib/datadog/tracing/sampling/all_sampler.rb +1 -0
- data/lib/datadog/tracing/sampling/ext.rb +1 -0
- data/lib/datadog/tracing/sampling/matcher.rb +1 -0
- data/lib/datadog/tracing/sampling/priority_sampler.rb +4 -4
- data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +1 -0
- data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +1 -0
- data/lib/datadog/tracing/sampling/rate_limiter.rb +1 -0
- data/lib/datadog/tracing/sampling/rate_sampler.rb +1 -0
- data/lib/datadog/tracing/sampling/rule.rb +12 -5
- data/lib/datadog/tracing/sampling/rule_sampler.rb +3 -4
- data/lib/datadog/tracing/sampling/sampler.rb +1 -0
- data/lib/datadog/tracing/span.rb +7 -5
- data/lib/datadog/tracing/span_operation.rb +8 -7
- data/lib/datadog/tracing/sync_writer.rb +1 -0
- data/lib/datadog/tracing/trace_digest.rb +2 -0
- data/lib/datadog/tracing/trace_operation.rb +44 -24
- data/lib/datadog/tracing/trace_segment.rb +109 -194
- data/lib/datadog/tracing/tracer.rb +3 -2
- data/lib/datadog/tracing/workers/trace_writer.rb +1 -0
- data/lib/datadog/tracing/workers.rb +1 -0
- data/lib/datadog/tracing/writer.rb +1 -0
- data/lib/datadog/tracing.rb +2 -0
- data/lib/ddtrace/auto_instrument.rb +2 -1
- data/lib/ddtrace/auto_instrument_base.rb +1 -0
- data/lib/ddtrace/profiling/preload.rb +2 -0
- data/lib/ddtrace/transport/ext.rb +1 -0
- data/lib/ddtrace/transport/http/adapters/net.rb +1 -0
- data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
- data/lib/ddtrace/transport/http/adapters/test.rb +1 -0
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +1 -0
- data/lib/ddtrace/transport/http/api/endpoint.rb +1 -0
- data/lib/ddtrace/transport/http/api/fallbacks.rb +1 -0
- data/lib/ddtrace/transport/http/api/instance.rb +1 -0
- data/lib/ddtrace/transport/http/api/map.rb +1 -0
- data/lib/ddtrace/transport/http/api/spec.rb +1 -0
- data/lib/ddtrace/transport/http/api.rb +1 -0
- data/lib/ddtrace/transport/http/builder.rb +1 -0
- data/lib/ddtrace/transport/http/client.rb +3 -1
- data/lib/ddtrace/transport/http/env.rb +1 -0
- data/lib/ddtrace/transport/http/response.rb +35 -4
- data/lib/ddtrace/transport/http/statistics.rb +1 -0
- data/lib/ddtrace/transport/http/traces.rb +1 -0
- data/lib/ddtrace/transport/http.rb +14 -3
- data/lib/ddtrace/transport/io/client.rb +4 -1
- data/lib/ddtrace/transport/io/response.rb +1 -0
- data/lib/ddtrace/transport/io/traces.rb +1 -0
- data/lib/ddtrace/transport/io.rb +1 -0
- data/lib/ddtrace/transport/parcel.rb +1 -0
- data/lib/ddtrace/transport/request.rb +1 -0
- data/lib/ddtrace/transport/response.rb +1 -0
- data/lib/ddtrace/transport/serializable_trace.rb +2 -0
- data/lib/ddtrace/transport/statistics.rb +1 -0
- data/lib/ddtrace/transport/trace_formatter.rb +24 -1
- data/lib/ddtrace/transport/traces.rb +1 -0
- data/lib/ddtrace/version.rb +13 -11
- data/lib/ddtrace.rb +3 -21
- metadata +47 -9
- data/lib/datadog/opentelemetry/extensions.rb +0 -14
- data/lib/datadog/opentelemetry/span.rb +0 -34
data/docs/UpgradeGuide.md
CHANGED
@@ -2,57 +2,78 @@
|
|
2
2
|
|
3
3
|
# From 0.x to 1.0
|
4
4
|
|
5
|
-
|
6
|
-
- [Configuration](#configuration)
|
7
|
-
- [Instrumentation](#instrumentation)
|
8
|
-
- [Full list of breaking changes](#full-list-of-breaking-changes)
|
5
|
+
Upgrading `ddtrace` from 0.x to 1.x introduces some breaking changes which are outlined below.
|
9
6
|
|
10
|
-
|
7
|
+
**How to upgrade basic usage**
|
11
8
|
|
12
|
-
|
9
|
+
For users with a basic implementation (configuration file + out-of-the-box instrumentation), only minor changes to your configuration file are required: most applications take just minutes to update. Check out the following sections for a step-by-step guide.
|
13
10
|
|
14
|
-
|
11
|
+
- [Configuration](#1.0-configuration)
|
12
|
+
- [`require` paths have changed](#1.0-configuration-requires)
|
13
|
+
- [Settings have been renamed](#1.0-configuration-settings)
|
14
|
+
- [Activating instrumentation](#1.0-configuration-instrumentation)
|
15
|
+
- [Instrumentation](#1.0-instrumentation)
|
16
|
+
- [Service naming](#1.0-instrumentation-service-naming)
|
15
17
|
|
16
|
-
|
18
|
+
**Additional upgrades for advanced usage**
|
17
19
|
|
18
|
-
|
20
|
+
For users with an advanced implementation of `ddtrace` (custom instrumentation, sampling or processing behavior, etc), some additional namespace and behavioral changes may be required. See the following sections for details about what features changed and how to use them.
|
19
21
|
|
20
|
-
|
21
|
-
|
22
|
-
Datadog.tracer.trace
|
23
|
-
Datadog.
|
24
|
-
|
22
|
+
- [Namespacing](#1.0-namespacing)
|
23
|
+
- [Trace API](#1.0-trace-api)
|
24
|
+
- [Removed `Datadog.tracer`](#1.0-trace-api-removed-tracer)
|
25
|
+
- [Removed access to `Datadog::Context`](#1.0-trace-api-removed-context)
|
26
|
+
- [Manual tracing & trace model](#1.0-trace-api-manual-tracing)
|
27
|
+
- [Accessing trace state](#1.0-trace-api-trace-state)
|
28
|
+
- [Distributed tracing](#1.0-trace-api-distributed)
|
29
|
+
- [Over HTTP](#1.0-trace-api-distributed-http)
|
30
|
+
- [Over gRPC](#1.0-trace-api-distributed-grpc)
|
31
|
+
- [Between threads](#1.0-trace-api-distributed-threads)
|
32
|
+
- [Sampling](#1.0-trace-api-sampling)
|
33
|
+
- [Processing pipeline](#1.0-trace-api-pipeline)
|
25
34
|
|
35
|
+
**Appendix**
|
26
36
|
|
27
|
-
|
28
|
-
Datadog::Tracing.trace
|
29
|
-
Datadog::Tracing.active_span
|
30
|
-
Datadog::Tracing.log_correlation
|
31
|
-
# ...and more...
|
32
|
-
```
|
37
|
+
For a comprehensive list of everything that changed, the appendix hosts some helpful and detailed tables with recommendations.
|
33
38
|
|
34
|
-
|
39
|
+
- [Namespace mappings](#1.0-appendix-namespace)
|
40
|
+
- [Constants](#1.0-appendix-namespace-constants)
|
41
|
+
- [Breaking changes](#1.0-appendix-breaking-changes)
|
35
42
|
|
36
|
-
|
43
|
+
<h1 id="1.0-basic-upgrade">Upgrading basic usage</h1>
|
37
44
|
|
38
|
-
|
45
|
+
<h2 id="1.0-configuration">Configuration</h2>
|
39
46
|
|
40
|
-
|
47
|
+
<h3 id="1.0-configuration-requires">`require` paths have changed</h3>
|
41
48
|
|
42
|
-
|
49
|
+
If you `require` any of the following paths, update them accordingly:
|
43
50
|
|
44
|
-
|
51
|
+
| 0.x `require` path | 1.0 `require` path |
|
52
|
+
|-----------------------------|-----------------------------|
|
53
|
+
| `ddtrace/opentelemetry` | Removed |
|
54
|
+
| `ddtrace/opentracer` | `datadog/opentracer` |
|
55
|
+
| `ddtrace/profiling/preload` | `datadog/profiling/preload` |
|
45
56
|
|
46
|
-
|
57
|
+
Using `require 'ddtrace'` will load all features by default. To load individual features, you may use the following paths instead:
|
47
58
|
|
48
|
-
|
59
|
+
| Feature | 1.0 `require` path |
|
60
|
+
|-------------|----------------------|
|
61
|
+
| AppSec | `datadog/appsec` |
|
62
|
+
| CI | `datadog/ci` |
|
63
|
+
| OpenTracing | `datadog/opentracer` |
|
64
|
+
| Profiling | `datadog/profiling` |
|
65
|
+
| Tracing | `datadog/tracing` |
|
66
|
+
|
67
|
+
<h3 id="1.0-configuration-settings">Settings have been renamed</h3>
|
68
|
+
|
69
|
+
Configuration settings have been sorted into smaller configuration groups, by feature.
|
49
70
|
|
50
71
|
- `Datadog.configure { |c| c.* }`: Datadog configuration settings
|
51
72
|
- `Datadog.configure { |c| c.tracing.* }`: Tracing configuration settings
|
52
73
|
- `Datadog.configure { |c| c.profiling.* }`: Profiling configuration settings
|
53
74
|
- `Datadog.configure { |c| c.ci.* }`: CI configuration settings
|
54
75
|
|
55
|
-
|
76
|
+
For existing applications, configuration files should be updated accordingly. For example:
|
56
77
|
|
57
78
|
```ruby
|
58
79
|
# config/initializers/datadog.rb
|
@@ -61,17 +82,14 @@ require 'ddtrace'
|
|
61
82
|
### Old 0.x ###
|
62
83
|
Datadog.configure do |c|
|
63
84
|
# Global settings
|
64
|
-
c.
|
85
|
+
c.tracer.hostname = '127.0.0.1'
|
86
|
+
c.tracer.port = 8126
|
87
|
+
c.runtime_metrics.enabled = true
|
65
88
|
c.service = 'billing-api'
|
66
89
|
|
67
|
-
#
|
68
|
-
c.profiling.enabled = true
|
69
|
-
|
70
|
-
# Tracer settings
|
90
|
+
# Tracing settings
|
71
91
|
c.analytics.enabled = true
|
72
|
-
c.
|
73
|
-
c.tracer.hostname = '127.0.0.1'
|
74
|
-
c.tracer.port = 8126
|
92
|
+
c.tracer.partial_flush.enabled = true
|
75
93
|
|
76
94
|
# CI settings
|
77
95
|
c.ci_mode = (ENV['DD_ENV'] == 'ci')
|
@@ -79,7 +97,6 @@ Datadog.configure do |c|
|
|
79
97
|
# Instrumentation
|
80
98
|
c.use :rails
|
81
99
|
c.use :redis, service_name: 'billing-redis'
|
82
|
-
c.use :resque
|
83
100
|
c.use :rspec
|
84
101
|
end
|
85
102
|
|
@@ -87,17 +104,14 @@ end
|
|
87
104
|
### New 1.0 ###
|
88
105
|
Datadog.configure do |c|
|
89
106
|
# Global settings
|
90
|
-
c.agent.
|
107
|
+
c.agent.host = '127.0.0.1'
|
91
108
|
c.agent.port = 8126
|
92
|
-
c.
|
109
|
+
c.runtime_metrics.enabled = true
|
93
110
|
c.service = 'billing-api'
|
94
111
|
|
95
|
-
#
|
96
|
-
c.profiling.enabled = true
|
97
|
-
|
98
|
-
# Tracer settings
|
112
|
+
# Tracing settings
|
99
113
|
c.tracing.analytics.enabled = true
|
100
|
-
c.tracing.
|
114
|
+
c.tracing.partial_flush.enabled = true
|
101
115
|
|
102
116
|
# CI settings
|
103
117
|
c.ci.enabled = (ENV['DD_ENV'] == 'ci')
|
@@ -105,77 +119,251 @@ Datadog.configure do |c|
|
|
105
119
|
# Instrumentation
|
106
120
|
c.tracing.instrument :rails
|
107
121
|
c.tracing.instrument :redis, service_name: 'billing-redis'
|
108
|
-
c.tracing.instrument :resque
|
109
122
|
c.ci.instrument :rspec
|
110
123
|
end
|
111
124
|
```
|
112
125
|
|
113
|
-
Check out
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
126
|
+
Check out the table below for a list of common mappings:
|
127
|
+
|
128
|
+
| 0.x setting | 1.0 setting |
|
129
|
+
|----------------------------------------|---------------------------------|
|
130
|
+
| `analytics.enabled` | `tracing.analytics.enabled` |
|
131
|
+
| `ci_mode.context_flush` | `ci.context_flush` |
|
132
|
+
| `ci_mode.enabled` | `ci.enabled` |
|
133
|
+
| `ci_mode.writer_options` | `ci.writer_options` |
|
134
|
+
| `distributed_tracing` | `tracing.distributed_tracing` |
|
135
|
+
| `logger=` | `logger.instance=` |
|
136
|
+
| `profiling.exporter.transport_options` | Removed |
|
137
|
+
| `report_hostname` | `tracing.report_hostname` |
|
138
|
+
| `runtime_metrics_enabled` | `runtime_metrics.enabled` |
|
139
|
+
| `runtime_metrics(options)` | Removed |
|
140
|
+
| `sampling` | `tracing.sampling` |
|
141
|
+
| `test_mode` | `tracing.test_mode` |
|
142
|
+
| `tracer=` | Removed |
|
143
|
+
| `tracer.debug` | `diagnostics.debug` |
|
144
|
+
| `tracer.enabled` | `tracing.enabled` |
|
145
|
+
| `tracer.env` | `env` |
|
146
|
+
| `tracer.hostname` | `agent.host` |
|
147
|
+
| `tracer.instance` | `tracing.instance` |
|
148
|
+
| `tracer.log` | `logger.instance` |
|
149
|
+
| `tracer.partial_flush` | `tracing.partial_flush.enabled` |
|
150
|
+
| `tracer.port` | `agent.port` |
|
151
|
+
| `tracer.sampler` | `tracing.sampler` |
|
152
|
+
| `tracer.tags` | `tags` |
|
153
|
+
| `tracer.transport_options` | `tracing.transport_options` |
|
154
|
+
| `tracer.transport_options(options)` | Removed |
|
155
|
+
| `tracer.writer` | `tracing.writer` |
|
156
|
+
| `tracer.writer_options` | `tracing.writer_options` |
|
157
|
+
| `use` | `tracing.instrument` |
|
158
|
+
|
159
|
+
<h3 id="1.0-configuration-instrumentation">Activating instrumentation</h3>
|
160
|
+
|
161
|
+
- The `use` function has been renamed to `instrument`.
|
162
|
+
- `instrument` has been namespaced within the feature to which it belongs.
|
163
|
+
|
164
|
+
As an example:
|
118
165
|
|
119
166
|
```ruby
|
120
167
|
### Old 0.x ###
|
121
168
|
Datadog.configure do |c|
|
169
|
+
# Tracing instrumentation
|
122
170
|
c.use :rails
|
171
|
+
|
172
|
+
# CI instrumentation
|
123
173
|
c.use :cucumber
|
124
174
|
end
|
125
175
|
|
126
176
|
|
127
177
|
### New 1.0 ###
|
128
178
|
Datadog.configure do |c|
|
179
|
+
# Tracing instrumentation
|
129
180
|
c.tracing.instrument :rails
|
181
|
+
|
182
|
+
# CI instrumentation
|
130
183
|
c.ci.instrument :cucumber
|
131
184
|
end
|
132
185
|
```
|
133
186
|
|
134
|
-
|
187
|
+
Similarly, if you were accessing configuration for instrumentation, you will need to use the appropriate namespace:
|
135
188
|
|
136
|
-
|
189
|
+
```ruby
|
190
|
+
### Old 0.x ###
|
191
|
+
Datadog.configuration[:rails][:service_name]
|
192
|
+
Datadog.configuration[:cucumber][:service_name]
|
137
193
|
|
138
|
-
|
194
|
+
### New 1.0 ###
|
195
|
+
Datadog.configuration.tracing[:rails][:service_name]
|
196
|
+
Datadog.configuration.ci[:cucumber][:service_name]
|
197
|
+
```
|
139
198
|
|
140
|
-
|
199
|
+
<h2 id="1.0-instrumentation">Instrumentation</h2>
|
141
200
|
|
142
|
-
|
201
|
+
<h3 id="1.0-instrumentation-service-naming">Service naming</h3>
|
143
202
|
|
144
|
-
|
203
|
+
**Define an application service name**
|
145
204
|
|
146
|
-
|
205
|
+
We recommend setting the application's service name with `DD_SERVICE`, or by adding the following configuration:
|
206
|
+
|
207
|
+
```ruby
|
208
|
+
Datadog.configure do |c|
|
209
|
+
c.service = 'billing-api' # Or DD_SERVICE. Defaults to process name.
|
210
|
+
end
|
211
|
+
```
|
212
|
+
|
213
|
+
If this is not set, it will default to the process name.
|
214
|
+
|
215
|
+
**Update service names for your integrations**
|
216
|
+
|
217
|
+
Spans now inherit the global `service` name by default, unless otherwise explicitly set. This means, generally speaking, spans generated by Datadog integrations will default to the global `service` name, unless the `service_name` setting is configured for that integration.
|
218
|
+
|
219
|
+
Spans that describe external services (e.g. `mysql`) will continue to default to some other name that describes the external service instead. (e.g. `mysql`)
|
147
220
|
|
148
221
|
```ruby
|
149
222
|
### Old 0.x ###
|
223
|
+
Datadog.configure do |c|
|
224
|
+
# Instrumentation that measures internal behavior
|
225
|
+
c.use :rails, service_name: 'billing-api'
|
226
|
+
c.use :resque, service_name: 'billing-api'
|
227
|
+
c.use :sidekiq, service_name: 'billing-api'
|
228
|
+
|
229
|
+
# Instrumentation that measures external services
|
230
|
+
c.use :active_record, service_name: 'billing-api_mysql' # Defaults to DB type e.g. mysql
|
231
|
+
c.use :http, service_name: 'billing-api_http' # Defaults to net/http
|
232
|
+
c.use :redis, service_name: 'billing-api_redis' # Defaults to redis
|
233
|
+
end
|
234
|
+
|
235
|
+
### New 1.0 ###
|
150
236
|
Datadog.configure do |c|
|
151
237
|
c.service = 'billing-api'
|
152
|
-
|
153
|
-
|
154
|
-
|
238
|
+
|
239
|
+
# Instrumentation that measures internal behavior
|
240
|
+
# now inherits the application's service name.
|
241
|
+
c.tracing.instrument :rails
|
242
|
+
c.tracing.instrument :resque
|
243
|
+
c.tracing.instrument :sidekiq
|
244
|
+
|
245
|
+
# Instrumentation that measures external services
|
246
|
+
# defaults to adapter-specific names. You may still override
|
247
|
+
# these names with the `service_name:` option.
|
248
|
+
c.tracing.instrument :active_record, service_name: 'billing-api_mysql' # Defaults to DB type e.g. mysql
|
249
|
+
c.tracing.instrument :http, service_name: 'billing-api_http' # Defaults to net/http
|
250
|
+
c.tracing.instrument :redis, service_name: 'billing-api_redis' # Defaults to redis
|
155
251
|
end
|
156
252
|
```
|
157
253
|
|
158
|
-
|
254
|
+
**Update Rails instrumentation**
|
255
|
+
|
256
|
+
If your application activates and configures `rails` instrumentation, you will need to adjust your settings slightly.
|
159
257
|
|
160
|
-
|
258
|
+
The following options have been removed; instead, configure the underlying instrumentation directly.
|
259
|
+
|
260
|
+
| 0.x setting | 1.0 setting |
|
261
|
+
|---------------------------------------------|----------------------------------------------------------------|
|
262
|
+
| `use :rails, cache_service: <SERVICE>` | `tracing.instrument :active_support, cache_service: <SERVICE>` |
|
263
|
+
| `use :rails, controller_service: <SERVICE>` | `tracing.instrument :action_pack, service_name: <SERVICE>` |
|
264
|
+
| `use :rails, database_service: <SERVICE>` | `tracing.instrument :active_record, service_name: <SERVICE>` |
|
265
|
+
| `use :rails, job_service: <SERVICE>` | `tracing.instrument :active_job, service_name: <SERVICE>` |
|
266
|
+
| `use :rails, log_injection: true` | `tracing.log_injection = true` (Is `true` by default.) |
|
161
267
|
|
162
268
|
```ruby
|
269
|
+
### Old 0.x ###
|
270
|
+
Datadog.configure do |c|
|
271
|
+
c.use :rails, service_name: 'billing-api',
|
272
|
+
cache_service: 'billing-api-cache',
|
273
|
+
controller_service: 'billing-api-controllers',
|
274
|
+
database_service: 'billing-api-db',
|
275
|
+
job_service: 'billing-api-jobs',
|
276
|
+
log_injection: true
|
277
|
+
end
|
278
|
+
|
163
279
|
### New 1.0 ###
|
164
280
|
Datadog.configure do |c|
|
165
281
|
c.service = 'billing-api'
|
282
|
+
|
166
283
|
c.tracing.instrument :rails
|
167
|
-
c.tracing.instrument :
|
168
|
-
c.tracing.instrument :
|
284
|
+
c.tracing.instrument :active_support, cache_service: 'billing-api-cache'
|
285
|
+
c.tracing.instrument :action_pack, service_name: 'billing-api-controllers'
|
286
|
+
c.tracing.instrument :active_record, service_name: 'billing-api-db'
|
287
|
+
c.tracing.instrument :active_job, service_name: 'billing-api-jobs'
|
169
288
|
end
|
170
289
|
```
|
171
290
|
|
172
|
-
|
291
|
+
<h1 id="1.0-advanced-upgrade">Upgrading advanced usage</h1>
|
292
|
+
|
293
|
+
<h2 id="1.0-namespacing">Namespacing</h2>
|
294
|
+
|
295
|
+
Many files and constants within `ddtrace` have been recategorized by feature. The new categorization scheme is as follows:
|
296
|
+
|
297
|
+
| Feature | Namespace | File path |
|
298
|
+
|------------------|--------------------------|-------------------------|
|
299
|
+
| Globals | `Datadog` | `ddtrace` |
|
300
|
+
| | | |
|
301
|
+
| CI | `Datadog::CI` | `datadog/ci` |
|
302
|
+
| Core (Internals) | `Datadog::Core` | `datadog/core` |
|
303
|
+
| OpenTelemetry | `Datadog::OpenTelemetry` | `datadog/opentelemetry` |
|
304
|
+
| OpenTracing | `Datadog::OpenTracer` | `datadog/opentracer` |
|
305
|
+
| Profiling | `Datadog::Profiling` | `datadog/profiling` |
|
306
|
+
| Security | `Datadog::AppSec` | `datadog/appsec` |
|
307
|
+
| Tracing | `Datadog::Tracing` | `datadog/trace` |
|
308
|
+
|
309
|
+
As a result, if your application referenced file paths or constants affected by this change, they will need to be updated. Check out the [namespace mappings](#1.0-appendix-namespace) for some common cases and how to update them.
|
310
|
+
|
311
|
+
<h2 id="1.0-trace-api">Trace API</h2>
|
312
|
+
|
313
|
+
Usage of `Datadog.tracer` has been replaced with the `Datadog::Tracing` trace API. This module contains most of the functions that `Datadog.tracer` had, and most use cases will map one-to-one.
|
314
|
+
|
315
|
+
For example:
|
316
|
+
|
317
|
+
```ruby
|
318
|
+
### Old 0.x ###
|
319
|
+
Datadog.tracer.trace
|
320
|
+
Datadog.tracer.active_span
|
321
|
+
Datadog.tracer.active_correlation.to_s
|
322
|
+
|
323
|
+
|
324
|
+
### New 1.0 ###
|
325
|
+
Datadog::Tracing.trace
|
326
|
+
Datadog::Tracing.active_span
|
327
|
+
Datadog::Tracing.log_correlation
|
328
|
+
|
329
|
+
# ...and more...
|
330
|
+
```
|
331
|
+
|
332
|
+
See the table below for most common mappings:
|
173
333
|
|
174
|
-
|
334
|
+
| 0.x usage | 1.0 usage | Note |
|
335
|
+
|----------------------------------------------------------------------------------------------|---------------------------------------------|---------------------------------------------------------------------|
|
336
|
+
| `Datadog.tracer.active_correlation.to_s` | `Datadog::Tracing.log_correlation` | Returns `String` with trace identifiers for logging. |
|
337
|
+
| `Datadog.tracer.active_correlation` | `Datadog::Tracing.correlation` | Returns `Datadog::Tracing::Correlation::Identifier` |
|
338
|
+
| `Datadog.tracer.active_root_span` | Removed | Consider `Datadog::Tracing.active_trace` instead. |
|
339
|
+
| `Datadog.tracer.active_span.context.sampling_priority = Datadog::Ext::Priority::USER_KEEP` | `Datadog::Tracing.keep!` | See [sampling](#1.0-trace-api-sampling) for details. |
|
340
|
+
| `Datadog.tracer.active_span.context.sampling_priority = Datadog::Ext::Priority::USER_REJECT` | `Datadog::Tracing.reject!` | See [sampling](#1.0-trace-api-sampling) for details. |
|
341
|
+
| `Datadog.tracer.active_span.context` | Removed | Consider `Datadog::Tracing.active_trace` instead. |
|
342
|
+
| `Datadog.tracer.active_span` | `Datadog::Tracing.active_span` | See [trace state](#1.0-trace-api-trace-state) for details. |
|
343
|
+
| `Datadog.tracer.call_context` | Removed | See [trace state](#1.0-trace-api-trace-state) for details. |
|
344
|
+
| `Datadog.tracer.configure(options)` | `Datadog.configure { \|c\| ... }` | Use configuration API instead. |
|
345
|
+
| `Datadog.tracer.provider.context = context` | `Datadog::Tracing.continue_trace!(digest)` | See [distributed tracing](#1.0-trace-api-distributed) for details. |
|
346
|
+
| `Datadog.tracer.set_tags(tags)` | `Datadog.configure { \|c\| c.tags = tags }` | |
|
347
|
+
| `Datadog.tracer.shutdown!` | `Datadog::Tracing.shutdown!` | |
|
348
|
+
| `Datadog.tracer.start_span` | `Datadog::Tracing.trace` | See [manual tracing](#1.0-trace-api-manual-tracing) for details. |
|
349
|
+
| `Datadog.tracer.trace` | `Datadog::Tracing.trace` | See [manual tracing](#1.0-trace-api-manual-tracing) for details. |
|
175
350
|
|
176
|
-
Manual tracing is now done through the public API.
|
177
351
|
|
178
|
-
|
352
|
+
Also check out the functions defined within `Datadog::Tracing` in our [public API](https://www.rubydoc.info/gems/ddtrace/) for more details on their usage.
|
353
|
+
|
354
|
+
<h3 id="1.0-trace-api-removed-tracer">Removed `Datadog.tracer`</h3>
|
355
|
+
|
356
|
+
Many of the functions accessed directly through `Datadog.tracer` have been moved to `Datadog::Tracing` instead.
|
357
|
+
|
358
|
+
<h3 id="1.0-trace-api-removed-context">Removed access to `Datadog::Context`</h3>
|
359
|
+
|
360
|
+
Direct usage of `Datadog::Context` has been removed. Previously, it was used to modify or access active trace state. Most use cases have been replaced by our [public trace API](https://www.rubydoc.info/gems/ddtrace/).
|
361
|
+
|
362
|
+
<h3 id="1.0-trace-api-manual-tracing">Manual tracing & trace model</h3>
|
363
|
+
|
364
|
+
Manual tracing is now done through the [public API](https://www.rubydoc.info/gems/ddtrace/).
|
365
|
+
|
366
|
+
Whereas in 0.x, the block would provide a `Datadog::Span` as `span`, in 1.0, the block provides a `Datadog::SpanOperation` as `span` and `Datadog::TraceOperation` as `trace`.
|
179
367
|
|
180
368
|
```ruby
|
181
369
|
### Old 0.x ###
|
@@ -193,11 +381,11 @@ Datadog::Tracing.trace('my.job') do |span, trace|
|
|
193
381
|
end
|
194
382
|
```
|
195
383
|
|
196
|
-
The
|
384
|
+
The provided `span` is nearly identical in behavior, except access to some fields (like `context`) been removed. Instead, the provided `trace`, which models the trace itself, grants access to new functions, of which some replace old `span` behavior.
|
197
385
|
|
198
386
|
For more details about new behaviors and the trace model, see [this pull request](https://github.com/DataDog/dd-trace-rb/pull/1783).
|
199
387
|
|
200
|
-
|
388
|
+
<h3 id="1.0-trace-api-trace-state">Accessing trace state</h3>
|
201
389
|
|
202
390
|
The public API provides new functions to access active trace data:
|
203
391
|
|
@@ -222,11 +410,11 @@ Datadog::Tracing.correlation
|
|
222
410
|
|
223
411
|
Use of `active_root_span` has been removed.
|
224
412
|
|
225
|
-
|
413
|
+
<h3 id="1.0-trace-api-distributed">Distributed tracing</h3>
|
226
414
|
|
227
415
|
Previously, distributed tracing required building new `Datadog::Context` objects, then replacing the context within the tracer.
|
228
416
|
|
229
|
-
Instead, users
|
417
|
+
Instead, users must use `TraceDigest` objects derived from a trace. `TraceDigest` represents the state of a trace. It can be used to propagate a trace across execution boundaries (processes, threads) or to continue a trace locally.
|
230
418
|
|
231
419
|
```ruby
|
232
420
|
### Old 0.x ###
|
@@ -248,12 +436,6 @@ end
|
|
248
436
|
# Get trace continuation from active trace
|
249
437
|
trace_digest = Datadog::Tracing.active_trace.to_digest
|
250
438
|
|
251
|
-
# Continue a trace: explicit continuation
|
252
|
-
# Inherits trace properties from the trace digest
|
253
|
-
Datadog::Tracing.trace('my.job', continue_from: trace_digest) do |span, trace|
|
254
|
-
trace.id == trace_digest.trace_id
|
255
|
-
end
|
256
|
-
|
257
439
|
# Continue a trace: implicit continuation
|
258
440
|
# Digest will be "consumed" by the next `trace` operation
|
259
441
|
Datadog::Tracing.continue_trace!(trace_digest)
|
@@ -269,62 +451,91 @@ Datadog::Tracing.trace('my.job') do |span, trace|
|
|
269
451
|
end
|
270
452
|
```
|
271
453
|
|
272
|
-
|
454
|
+
New in 1.0, it's also possible to explicitly assign a trace block to continue from a specific trace, rather than implicitly inherit an active context. This gives users fine-grained control in applications where multiple traces run concurrently in the same execution context:
|
455
|
+
|
456
|
+
```ruby
|
457
|
+
### New 1.0 ###
|
458
|
+
# Get trace continuation from active trace
|
459
|
+
trace_digest = Datadog::Tracing.active_trace.to_digest
|
460
|
+
|
461
|
+
# Continue a trace: explicit continuation
|
462
|
+
# Inherits trace properties from the trace digest
|
463
|
+
Datadog::Tracing.trace('my.job', continue_from: trace_digest) do |span, trace|
|
464
|
+
trace.id == trace_digest.trace_id
|
465
|
+
end
|
466
|
+
|
467
|
+
# Continue a trace: explicit continuation (using #continue_trace!)
|
468
|
+
Datadog::Tracing.continue_trace!(trace_digest) do
|
469
|
+
# Traces implicitly continue within the block
|
470
|
+
Datadog::Tracing.trace('my.job') do |span, trace|
|
471
|
+
trace.id == trace_digest.trace_id
|
472
|
+
end
|
473
|
+
end
|
474
|
+
```
|
273
475
|
|
274
|
-
|
476
|
+
<h4 id="1.0-trace-api-distributed-http">Over HTTP</h4>
|
477
|
+
|
478
|
+
To propagate active trace to a remote service:
|
275
479
|
|
276
480
|
```ruby
|
277
481
|
### Old 0.x ###
|
278
|
-
context = Datadog.tracer.call_context
|
279
|
-
|
280
|
-
# HTTP
|
281
482
|
headers = {}
|
483
|
+
context = Datadog.tracer.call_context
|
282
484
|
Datadog::HTTPPropagator.inject!(context, headers)
|
283
|
-
# Inject `headers` into your HTTP headers
|
284
|
-
|
285
|
-
# gRPC
|
286
|
-
headers = {}
|
287
|
-
Datadog::GRPCPropagator.inject!(context, headers)
|
288
|
-
# Inject `headers` into your headers
|
289
485
|
|
486
|
+
outgoing = Net::HTTP::Get.new(uri)
|
487
|
+
headers.each { |name, value| outgoing[name] = value }
|
290
488
|
|
291
489
|
### New 1.0 ###
|
292
|
-
trace_digest = Datadog::Tracing.active_trace.to_digest
|
293
|
-
|
294
|
-
# HTTP
|
295
490
|
headers = {}
|
491
|
+
trace_digest = Datadog::Tracing.active_trace.to_digest
|
296
492
|
Datadog::Tracing::Propagation::HTTP.inject!(trace_digest, headers)
|
297
|
-
# Inject `headers` into your HTTP headers
|
298
493
|
|
299
|
-
|
300
|
-
headers =
|
301
|
-
Datadog::Tracing::Propagation::GRPC.inject!(trace_digest, headers)
|
302
|
-
# Inject `headers` into your headers
|
494
|
+
outgoing = Net::HTTP::Get.new(uri)
|
495
|
+
headers.each { |name, value| outgoing[name] = value }
|
303
496
|
```
|
304
497
|
|
305
|
-
To continue a
|
498
|
+
To continue a trace from a remote service:
|
306
499
|
|
307
500
|
```ruby
|
308
501
|
### Old 0.x ###
|
309
|
-
|
310
|
-
context = Datadog::HTTPPropagator.extract(
|
502
|
+
incoming = Rack::Request.new(env)
|
503
|
+
context = Datadog::HTTPPropagator.extract(incoming.env)
|
311
504
|
Datadog.tracer.provider.context = context
|
312
505
|
|
313
|
-
|
506
|
+
### New 1.0 ###
|
507
|
+
incoming = Rack::Request.new(env)
|
508
|
+
trace_digest = Datadog::Tracing::Propagation::HTTP.extract(incoming.env)
|
509
|
+
Datadog::Tracing.continue_trace!(trace_digest)
|
510
|
+
```
|
511
|
+
|
512
|
+
<h4 id="1.0-trace-api-distributed-grpc">Over gRPC</h4>
|
513
|
+
|
514
|
+
To propagate active trace to a remote service:
|
515
|
+
|
516
|
+
```ruby
|
517
|
+
### Old 0.x ###
|
518
|
+
context = Datadog.tracer.call_context
|
519
|
+
Datadog::GRPCPropagator.inject!(context, metadata)
|
520
|
+
|
521
|
+
### New 1.0 ###
|
522
|
+
trace_digest = Datadog::Tracing.active_trace.to_digest
|
523
|
+
Datadog::Tracing::Propagation::GRPC.inject!(trace_digest, metadata)
|
524
|
+
```
|
525
|
+
|
526
|
+
To continue a trace from a remote service:
|
527
|
+
|
528
|
+
```ruby
|
529
|
+
### Old 0.x ###
|
314
530
|
context = Datadog::GRPCPropagator.extract(metadata)
|
315
531
|
Datadog.tracer.provider.context = context
|
316
532
|
|
317
533
|
### New 1.0 ###
|
318
|
-
|
319
|
-
|
320
|
-
Datadog::Tracing.continue_trace!(digest)
|
321
|
-
|
322
|
-
# gRPC
|
323
|
-
digest = Datadog::Tracing::Propagation::GRPC.extract(metadata)
|
324
|
-
Datadog::Tracing.continue_trace!(digest)
|
534
|
+
trace_digest = Datadog::Tracing::Propagation::GRPC.extract(metadata)
|
535
|
+
Datadog::Tracing.continue_trace!(trace_digest)
|
325
536
|
```
|
326
537
|
|
327
|
-
|
538
|
+
<h4 id="1.0-trace-api-distributed-threads">Between threads</h4>
|
328
539
|
|
329
540
|
Traces do not implicitly propagate across threads, as they are considered different execution contexts.
|
330
541
|
|
@@ -333,6 +544,7 @@ However, if you wish to do this, trace propagation across threads is similar to
|
|
333
544
|
NOTE: The same `TraceOperation` object should never be shared between threads; this would create race conditions.
|
334
545
|
|
335
546
|
```ruby
|
547
|
+
### New 1.0 ###
|
336
548
|
# Get trace digest
|
337
549
|
trace = Datadog::Tracing.active_trace
|
338
550
|
|
@@ -349,7 +561,7 @@ Thread.new do
|
|
349
561
|
end
|
350
562
|
```
|
351
563
|
|
352
|
-
|
564
|
+
<h3 id="1.0-trace-api-sampling">Sampling</h3>
|
353
565
|
|
354
566
|
Accessing `call_context` to set explicit sampling has been removed.
|
355
567
|
|
@@ -363,8 +575,10 @@ Datadog.tracer.trace('web.request') do |span|
|
|
363
575
|
end
|
364
576
|
|
365
577
|
# From outside the trace:
|
366
|
-
|
367
|
-
Datadog.tracer.active_span.context.sampling_priority = Datadog::Ext::Priority::
|
578
|
+
# Keeps current trace
|
579
|
+
Datadog.tracer.active_span.context.sampling_priority = Datadog::Ext::Priority::USER_KEEP
|
580
|
+
# Drops current trace
|
581
|
+
Datadog.tracer.active_span.context.sampling_priority = Datadog::Ext::Priority::USER_REJECT
|
368
582
|
|
369
583
|
|
370
584
|
### New 1.0 ###
|
@@ -378,9 +592,9 @@ Datadog::Tracing.keep! # Keeps current trace
|
|
378
592
|
Datadog::Tracing.reject! # Drops current trace
|
379
593
|
```
|
380
594
|
|
381
|
-
|
595
|
+
<h3 id="1.0-trace-api-pipeline">Processing pipeline</h3>
|
382
596
|
|
383
|
-
When using a trace processor in the processing pipeline, the block
|
597
|
+
When using a trace processor in the processing pipeline, the block provides a `TraceSegment` as `trace` (instead of `Array[Datadog::Span]`.) This object can be directly mutated.
|
384
598
|
|
385
599
|
```ruby
|
386
600
|
### Old 0.x ###
|
@@ -397,20 +611,11 @@ Datadog::Tracing.before_flush do |trace|
|
|
397
611
|
end
|
398
612
|
```
|
399
613
|
|
400
|
-
|
614
|
+
<h2 id="1.0-appendix">Appendix</h2>
|
401
615
|
|
402
|
-
<h3 id="appendix-
|
616
|
+
<h3 id="1.0-appendix-namespace">Namespace mappings</h3>
|
403
617
|
|
404
|
-
|
405
|
-
|
406
|
-
| `0.x require path` | `1.0 require path` |
|
407
|
-
|-----------------------------|-----------------------------|
|
408
|
-
| `ddtrace/opentelemetry` | `datadog/opentelemetry` |
|
409
|
-
| `ddtrace/opentracer` | `datadog/opentracer` |
|
410
|
-
| `ddtrace/profiling/preload` | `datadog/profiling/preload` |
|
411
|
-
|
412
|
-
|
413
|
-
#### Constants
|
618
|
+
<h4 id="1.0-appendix-namespace-constants">Constants</h3>
|
414
619
|
|
415
620
|
| `0.x Constant` | `1.0 Constant` |
|
416
621
|
|-----------------------------------------------------------------|-----------------------------------------------------------------------------------------|
|
@@ -477,81 +682,55 @@ end
|
|
477
682
|
| `Datadog::Worker` | `Datadog::Core::Worker` |
|
478
683
|
| `Datadog::Workers` | `Datadog::Core::Workers` |
|
479
684
|
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
| `
|
486
|
-
|
|
487
|
-
| `
|
488
|
-
| `
|
489
|
-
|
|
490
|
-
| `
|
491
|
-
| `
|
492
|
-
| `
|
493
|
-
| `
|
494
|
-
| `
|
495
|
-
| `
|
496
|
-
| `
|
497
|
-
| `tracer
|
498
|
-
| `
|
499
|
-
|
|
500
|
-
| `
|
501
|
-
| `
|
502
|
-
| `
|
503
|
-
|
|
504
|
-
|
|
505
|
-
| `
|
506
|
-
| `
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
|
511
|
-
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
| Integrations | Removed | Rails: 3.0 and 3.1 support. | Not supported. |
|
533
|
-
| Integrations | Removed | Rails: `log_injection` option. | Use global `c.tracing.log_injection` instead. |
|
534
|
-
| Integrations | Removed | Rails: `orm_service_name` option. | Remove this option from your configuration. |
|
535
|
-
| Integrations | Removed | Resque: `workers` option. (All Resque workers are now automatically instrumented.) | Remove this option from your configuration. |
|
536
|
-
| Tracing API | Changed | `Correlation#to_s` to `Correlation#to_log_format` | Use `Datadog::Tracing.log_correlation` instead. |
|
537
|
-
| Tracing API | Changed | `Tracer#trace` implements keyword args | Omit invalid options from `trace` calls. |
|
538
|
-
| Tracing API | Changed | Distributed tracing takes and yields `TraceDigest` instead of `Context` | Update your usage of distributed tracing to use `continue_from` and `to_digest`. |
|
539
|
-
| Tracing API | Changed | Rules for RuleSampler now yield `TraceOperation` instead of `Span` | Update Rule sampler usage to use `TraceOperation`. |
|
540
|
-
| Tracing API | Changed | Trace processors yield `TraceSegment` instead of `Array[Span]` | Update pipeline callbacks to use `TraceSegment instead. |
|
541
|
-
| Tracing API | Removed | `child_of:` option from `Tracer#trace` | Not supported. |
|
542
|
-
| Tracing API | Removed | `Pin.new(service, config: { option: value }).onto(client)` | Use `Datadog::Tracing.configure_onto(client, service_name: service, option: value)` instead. |
|
543
|
-
| Tracing API | Removed | `Pin.get_from(client)` | Use `Datadog::Tracing.configure_for(client)` instead. |
|
544
|
-
| Tracing API | Removed | `Pipeline.before_flush` | Use `Datadog::Tracing.before_flush` instead. |
|
545
|
-
| Tracing API | Removed | `SpanOperation#context` | Use `Datadog::Tracing.active_trace` instead. |
|
546
|
-
| Tracing API | Removed | `SpanOperation#parent`/`SpanOperation#parent=` | Not supported. |
|
547
|
-
| Tracing API | Removed | `SpanOperation#sampled` | Use `Datadog::TraceOperation#sampled?` instead. |
|
548
|
-
| Tracing API | Removed | `Tracer#active_correlation` | Use `Datadog::Tracing.correlation` instead. |
|
549
|
-
| Tracing API | Removed | `Tracer#active_correlation.to_log_format` | Use `Datadog::Tracing.log_correlation` instead. |
|
550
|
-
| Tracing API | Removed | `Tracer#active_root_span` | Use `Datadog::Tracing.active_trace` instead. |
|
551
|
-
| Tracing API | Removed | `Tracer#build_span` | Use `Datadog::Tracing.trace` instead. |
|
552
|
-
| Tracing API | Removed | `Tracer#call_context` | Use `Datadog::Tracing.active_trace` instead. |
|
553
|
-
| Tracing API | Removed | `Tracer#configure` | Not supported. |
|
554
|
-
| Tracing API | Removed | `Tracer#services` | Not supported. |
|
555
|
-
| Tracing API | Removed | `Tracer#set_service_info` | Not supported. |
|
556
|
-
| Tracing API | Removed | `Tracer#start_span` | Use `Datadog::Tracing.trace` instead. |
|
557
|
-
| Tracing API | Removed | `Writer#write` and `SyncWriter#write` `services` argument | Not supported. |
|
685
|
+
<h3 id="1.0-appendix-breaking-changes">Breaking changes</h3>
|
686
|
+
|
687
|
+
| **Category** | **Type** | **Description** | **Change / Alternative** |
|
688
|
+
|---------------------------------------|----------|---------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
689
|
+
| General | Changed | Many constants have been moved from `Datadog` to `Datadog::Core`, `Datadog::Tracing` | Update your references to these [new namespaces](#1.0-appendix-namespace-constants) where appropriate. |
|
690
|
+
| General | Changed | Some `require` paths have been moved from `ddtrace` to `datadog` | Update your references to these [new paths](#1.0-appendix-namespace-requires) where appropriate. |
|
691
|
+
| General | Removed | Support for trace agent API v0.2 | Use v0.4 instead (default behavior.) |
|
692
|
+
| General | Removed | `Datadog.configure` can no longer be called without a block | Remove uses of `Datadog.configure` without a block. |
|
693
|
+
| CI API | Changed | `DD_TRACE_CI_MODE_ENABLED` environment variable is now `DD_TRACE_CI_ENABLED` | Use `DD_TRACE_CI_ENABLED` instead. |
|
694
|
+
| Configuration | Changed | Many settings have been namespaced under specific categories | Update your configuration to these [new settings](#1.0-configuration-settings) where appropriate. |
|
695
|
+
| Configuration | Removed | `Datadog.configure(client, options)` | Use `Datadog::Tracing.configure_onto(client, options)` instead. |
|
696
|
+
| Configuration | Removed | `DD_#{integration}_ANALYTICS_ENABLED` and `DD_#{integration}_ANALYTICS_SAMPLE_RATE` environment variables | Use `DD_TRACE_#{integration}_ANALYTICS_ENABLED` and `DD_TRACE_#{integration}_ANALYTICS_SAMPLE_RATE` instead. |
|
697
|
+
| Configuration | Removed | `DD_PROPAGATION_INJECT_STYLE` and `DD_PROPAGATION_EXTRACT_STYLE` environment variables | Use `DD_PROPAGATION_STYLE_INJECT` and `DD_PROPAGATION_STYLE_EXTRACT` instead. |
|
698
|
+
| Integrations | Changed | `-` in HTTP header tag names are kept, and no longer replaced with `_` | For example: `http.response.headers.content_type` is changed to `http.response.headers.content-type`. |
|
699
|
+
| Integrations | Changed | `Contrib::Configurable#default_configuration` moved to `Tracing::Contrib::Configurable#new_configuration` | Use `Tracing::Contrib::Configurable#new_configuration` instead. |
|
700
|
+
| Integrations | Changed | `Datadog.configuration.registry` moved to `Datadog.registry` | Use `Datadog.registry` instead. |
|
701
|
+
| Integrations | Changed | `service_name` option from each integration uses the default service name, unless it represents an external service | Set `c.service` or `DD_SERVICE`, and remove `service_name` option from integration to inherit default service name. Set `service_name` option on integration to override. |
|
702
|
+
| Integrations | Removed | `tracer` integration option from all integrations | Remove this option from your configuration. |
|
703
|
+
| Integrations - ActiveJob | Removed | `log_injection` option | Use `c.tracing.log_injection` instead. |
|
704
|
+
| Integrations - ActiveModelSerializers | Removed | service_name configuration | Remove this option from your configuration. |
|
705
|
+
| Integrations - ConcurrentRuby | Removed | unused option `service_name` | Remove this option from your configuration. |
|
706
|
+
| Integrations - Presto | Changed | `out.host` tag now contains only client hostname. Before it contained `"#{hostname}:#{port}"`. | |
|
707
|
+
| Integrations - Rails | Changed | `service_name` does not propagate to sub-components (e.g. `c.use :rails, cache_service: 'my-cache'`) | Use `c.service` instead. |
|
708
|
+
| Integrations - Rails | Changed | Sub-components service_name options are now consistently called `:service_name` | Update your configuration to use `:service_name`. |
|
709
|
+
| Integrations - Rails | Changed | Trace-logging correlation is enabled by default | Can be disabled using the environment variable `DD_LOGS_INJECTION=false`. |
|
710
|
+
| Integrations - Rails | Removed | `log_injection` option. | Use global `c.tracing.log_injection` instead. |
|
711
|
+
| Integrations - Rails | Removed | `orm_service_name` option. | Remove this option from your configuration. |
|
712
|
+
| Integrations - Rails | Removed | 3.0 and 3.1 support. | Not supported. |
|
713
|
+
| Integrations - Resque | Removed | `workers` option. (All Resque workers are now automatically instrumented.) | Remove this option from your configuration. |
|
714
|
+
| Tracing API | Changed | `Correlation#to_s` to `Correlation#to_log_format` | Use `Datadog::Tracing.log_correlation` instead. |
|
715
|
+
| Tracing API | Changed | `Tracer#trace` implements keyword args | Omit invalid options from `trace` calls. |
|
716
|
+
| Tracing API | Changed | Distributed tracing takes and returns `TraceDigest` instead of `Context` | Update your usage of distributed tracing to use `continue_from` and `to_digest`. |
|
717
|
+
| Tracing API | Changed | Rules for RuleSampler now return `TraceOperation` instead of `Span` | Update Rule sampler usage to use `TraceOperation`. |
|
718
|
+
| Tracing API | Changed | Trace processors return `TraceSegment` instead of `Array[Span]` | Update pipeline callbacks to use `TraceSegment instead. |
|
719
|
+
| Tracing API | Removed | `child_of:` option from `Tracer#trace` | Not supported. |
|
720
|
+
| Tracing API | Removed | `Datadog.tracer` | Use methods in `Datadog::Tracing` instead. |
|
721
|
+
| Tracing API | Removed | `Pin.get_from(client)` | Use `Datadog::Tracing.configure_for(client)` instead. |
|
722
|
+
| Tracing API | Removed | `Pin.new(service, config: { option: value }).onto(client)` | Use `Datadog::Tracing.configure_onto(client, service_name: service, option: value)` instead. |
|
723
|
+
| Tracing API | Removed | `Pipeline.before_flush` | Use `Datadog::Tracing.before_flush` instead. |
|
724
|
+
| Tracing API | Removed | `SpanOperation#context` | Use `Datadog::Tracing.active_trace` instead. |
|
725
|
+
| Tracing API | Removed | `SpanOperation#parent`/`SpanOperation#parent=` | Not supported. |
|
726
|
+
| Tracing API | Removed | `SpanOperation#sampled` | Use `Datadog::TraceOperation#sampled?` instead. |
|
727
|
+
| Tracing API | Removed | `Tracer#active_correlation.to_log_format` | Use `Datadog::Tracing.log_correlation` instead. |
|
728
|
+
| Tracing API | Removed | `Tracer#active_correlation` | Use `Datadog::Tracing.correlation` instead. |
|
729
|
+
| Tracing API | Removed | `Tracer#active_root_span` | Use `Datadog::Tracing.active_trace` instead. |
|
730
|
+
| Tracing API | Removed | `Tracer#build_span` | Use `Datadog::Tracing.trace` instead. |
|
731
|
+
| Tracing API | Removed | `Tracer#call_context` | Use `Datadog::Tracing.active_trace` instead. |
|
732
|
+
| Tracing API | Removed | `Tracer#configure` | Not supported. |
|
733
|
+
| Tracing API | Removed | `Tracer#services` | Not supported. |
|
734
|
+
| Tracing API | Removed | `Tracer#set_service_info` | Not supported. |
|
735
|
+
| Tracing API | Removed | `Tracer#start_span` | Use `Datadog::Tracing.trace` instead. |
|
736
|
+
| Tracing API | Removed | `Writer#write` and `SyncWriter#write` `services` argument | Not supported. |
|