datadog 2.21.0 → 2.38.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 +4 -4
- data/CHANGELOG.md +574 -1
- data/ext/LIBDATADOG_DEVELOPMENT.md +3 -0
- data/ext/datadog_profiling_native_extension/clock_id.h +9 -1
- data/ext/datadog_profiling_native_extension/clock_id_from_mach.c +66 -0
- data/ext/datadog_profiling_native_extension/clock_id_from_pthread.c +3 -2
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +301 -82
- data/ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c +4 -4
- data/ext/datadog_profiling_native_extension/collectors_gc_profiling_helper.c +3 -2
- data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +18 -4
- data/ext/datadog_profiling_native_extension/collectors_stack.c +63 -32
- data/ext/datadog_profiling_native_extension/collectors_stack.h +7 -2
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +728 -436
- data/ext/datadog_profiling_native_extension/collectors_thread_context.h +19 -6
- data/ext/datadog_profiling_native_extension/crashtracking_runtime_stacks.c +239 -0
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +65 -1
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +40 -1
- data/ext/datadog_profiling_native_extension/encoded_profile.c +2 -1
- data/ext/datadog_profiling_native_extension/extconf.rb +41 -37
- data/ext/datadog_profiling_native_extension/gvl_profiling_helper.c +4 -43
- data/ext/datadog_profiling_native_extension/gvl_profiling_helper.h +15 -47
- data/ext/datadog_profiling_native_extension/heap_recorder.c +252 -103
- data/ext/datadog_profiling_native_extension/heap_recorder.h +12 -1
- data/ext/datadog_profiling_native_extension/http_transport.c +66 -68
- data/ext/datadog_profiling_native_extension/libdatadog_helpers.c +3 -22
- data/ext/datadog_profiling_native_extension/libdatadog_helpers.h +0 -5
- data/ext/datadog_profiling_native_extension/macos_sampler_thread.h +55 -0
- data/ext/datadog_profiling_native_extension/native_extension_helpers.rb +0 -13
- data/ext/datadog_profiling_native_extension/private_vm_api_access.c +40 -43
- data/ext/datadog_profiling_native_extension/private_vm_api_access.h +6 -0
- data/ext/datadog_profiling_native_extension/profiling.c +65 -19
- data/ext/datadog_profiling_native_extension/ruby_helpers.c +63 -46
- data/ext/datadog_profiling_native_extension/ruby_helpers.h +17 -5
- data/ext/datadog_profiling_native_extension/setup_signal_handler.c +32 -10
- data/ext/datadog_profiling_native_extension/setup_signal_handler.h +2 -1
- data/ext/datadog_profiling_native_extension/stack_recorder.c +110 -85
- data/ext/datadog_profiling_native_extension/stack_recorder.h +3 -1
- data/ext/datadog_profiling_native_extension/time_helpers.h +13 -7
- data/ext/datadog_profiling_native_extension/unsafe_api_calls_check.c +2 -1
- data/ext/datadog_profiling_native_extension/unsafe_api_calls_check.h +9 -4
- data/ext/libdatadog_api/crashtracker.c +16 -15
- data/ext/libdatadog_api/crashtracker_report_exception.c +126 -0
- data/ext/libdatadog_api/datadog_ruby_common.c +65 -1
- data/ext/libdatadog_api/datadog_ruby_common.h +40 -1
- data/ext/libdatadog_api/ddsketch.c +102 -0
- data/ext/libdatadog_api/di.c +203 -0
- data/ext/libdatadog_api/extconf.rb +18 -24
- data/ext/libdatadog_api/feature_flags.c +554 -0
- data/ext/libdatadog_api/feature_flags.h +5 -0
- data/ext/libdatadog_api/helpers.h +27 -0
- data/ext/libdatadog_api/init.c +13 -1
- data/ext/libdatadog_api/library_config.c +34 -25
- data/ext/libdatadog_api/process_discovery.c +19 -13
- data/ext/libdatadog_extconf_helpers.rb +94 -11
- data/lib/datadog/ai_guard/api_client.rb +84 -0
- data/lib/datadog/ai_guard/autoload.rb +10 -0
- data/lib/datadog/ai_guard/component.rb +44 -0
- data/lib/datadog/ai_guard/configuration/ext.rb +17 -0
- data/lib/datadog/ai_guard/configuration.rb +115 -0
- data/lib/datadog/ai_guard/contrib/auto_instrument.rb +24 -0
- data/lib/datadog/ai_guard/contrib/integration.rb +37 -0
- data/lib/datadog/ai_guard/contrib/rack/integration.rb +42 -0
- data/lib/datadog/ai_guard/contrib/rack/patcher.rb +26 -0
- data/lib/datadog/ai_guard/contrib/rack/request_middleware.rb +97 -0
- data/lib/datadog/ai_guard/contrib/rails/integration.rb +41 -0
- data/lib/datadog/ai_guard/contrib/rails/patcher.rb +97 -0
- data/lib/datadog/ai_guard/contrib/ruby_llm/chat_instrumentation.rb +80 -0
- data/lib/datadog/ai_guard/contrib/ruby_llm/integration.rb +41 -0
- data/lib/datadog/ai_guard/contrib/ruby_llm/patcher.rb +30 -0
- data/lib/datadog/ai_guard/evaluation/content_builder.rb +31 -0
- data/lib/datadog/ai_guard/evaluation/content_part.rb +36 -0
- data/lib/datadog/ai_guard/evaluation/message.rb +25 -0
- data/lib/datadog/ai_guard/evaluation/no_op_result.rb +36 -0
- data/lib/datadog/ai_guard/evaluation/request.rb +86 -0
- data/lib/datadog/ai_guard/evaluation/result.rb +45 -0
- data/lib/datadog/ai_guard/evaluation/tool_call.rb +18 -0
- data/lib/datadog/ai_guard/evaluation.rb +108 -0
- data/lib/datadog/ai_guard/ext.rb +29 -0
- data/lib/datadog/ai_guard.rb +181 -0
- data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +26 -0
- data/lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb +66 -0
- data/lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb +36 -0
- data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +26 -0
- data/lib/datadog/appsec/api_security/endpoint_collection.rb +10 -0
- data/lib/datadog/appsec/api_security/route_extractor.rb +38 -9
- data/lib/datadog/appsec/api_security/sampler.rb +7 -4
- data/lib/datadog/appsec/assets/blocked.html +10 -1
- data/lib/datadog/appsec/assets/blocked.json +1 -1
- data/lib/datadog/appsec/assets/blocked.text +3 -1
- data/lib/datadog/appsec/assets/waf_rules/README.md +30 -36
- data/lib/datadog/appsec/assets/waf_rules/recommended.json +359 -4
- data/lib/datadog/appsec/assets/waf_rules/strict.json +43 -2
- data/lib/datadog/appsec/assets.rb +1 -1
- data/lib/datadog/appsec/autoload.rb +1 -1
- data/lib/datadog/appsec/component.rb +16 -9
- data/lib/datadog/appsec/compressed_json.rb +3 -3
- data/lib/datadog/appsec/configuration.rb +427 -1
- data/lib/datadog/appsec/context.rb +51 -13
- data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +3 -1
- data/lib/datadog/appsec/contrib/active_record/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/active_record/patcher.rb +4 -1
- data/lib/datadog/appsec/contrib/aws_lambda/gateway/watcher.rb +75 -0
- data/lib/datadog/appsec/contrib/aws_lambda/integration.rb +39 -0
- data/lib/datadog/appsec/contrib/aws_lambda/patcher.rb +30 -0
- data/lib/datadog/appsec/contrib/aws_lambda/waf_addresses.rb +144 -0
- data/lib/datadog/appsec/contrib/devise/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +2 -1
- data/lib/datadog/appsec/contrib/excon/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/excon/patcher.rb +3 -1
- data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +152 -12
- data/lib/datadog/appsec/contrib/faraday/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/faraday/patcher.rb +1 -1
- data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +138 -12
- data/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb +74 -24
- data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +4 -2
- data/lib/datadog/appsec/contrib/graphql/integration.rb +2 -1
- data/lib/datadog/appsec/contrib/rack/buffered_input.rb +83 -0
- data/lib/datadog/appsec/contrib/rack/ext.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/gateway/request.rb +52 -13
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +40 -19
- data/lib/datadog/appsec/contrib/rack/input_peeker.rb +79 -0
- data/lib/datadog/appsec/contrib/rack/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +48 -33
- data/lib/datadog/appsec/contrib/rack/response_body.rb +36 -0
- data/lib/datadog/appsec/contrib/rails/gateway/request.rb +40 -1
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +26 -5
- data/lib/datadog/appsec/contrib/rails/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/rails/patcher.rb +38 -0
- data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +2 -0
- data/lib/datadog/appsec/contrib/rest_client/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/rest_client/patcher.rb +3 -1
- data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +167 -11
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +43 -13
- data/lib/datadog/appsec/contrib/sinatra/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/sinatra/patcher.rb +4 -4
- data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +1 -1
- data/lib/datadog/appsec/counter_sampler.rb +25 -0
- data/lib/datadog/appsec/default_header_tags.rb +52 -0
- data/lib/datadog/appsec/event.rb +13 -31
- data/lib/datadog/appsec/ext.rb +3 -0
- data/lib/datadog/appsec/instrumentation/gateway/middleware.rb +2 -3
- data/lib/datadog/appsec/instrumentation/gateway.rb +2 -15
- data/lib/datadog/appsec/metrics/collector.rb +43 -5
- data/lib/datadog/appsec/metrics/exporter.rb +16 -3
- data/lib/datadog/appsec/metrics/telemetry.rb +20 -3
- data/lib/datadog/appsec/metrics/telemetry_exporter.rb +20 -1
- data/lib/datadog/appsec/metrics.rb +5 -5
- data/lib/datadog/appsec/monitor/gateway/watcher.rb +8 -6
- data/lib/datadog/appsec/remote.rb +44 -29
- data/lib/datadog/appsec/response.rb +18 -4
- data/lib/datadog/appsec/route_normalizer/rails_route_pattern.rb +176 -0
- data/lib/datadog/appsec/route_normalizer/route_pattern.rb +378 -0
- data/lib/datadog/appsec/route_normalizer/route_text.rb +57 -0
- data/lib/datadog/appsec/route_normalizer.rb +80 -0
- data/lib/datadog/appsec/security_engine/engine.rb +26 -5
- data/lib/datadog/appsec/security_engine/result.rb +29 -9
- data/lib/datadog/appsec/security_engine/runner.rb +20 -10
- data/lib/datadog/appsec/security_event.rb +5 -7
- data/lib/datadog/appsec/trace_keeper.rb +18 -6
- data/lib/datadog/appsec/utils/http/body.rb +38 -0
- data/lib/datadog/appsec/utils/http/body_reader.rb +61 -0
- data/lib/datadog/appsec/utils/http/media_range.rb +2 -1
- data/lib/datadog/appsec/utils/http/media_type.rb +32 -26
- data/lib/datadog/appsec/utils/http/url_encoded.rb +52 -0
- data/lib/datadog/appsec.rb +6 -3
- data/lib/datadog/core/configuration/agentless_settings_resolver.rb +2 -2
- data/lib/datadog/core/configuration/base.rb +17 -5
- data/lib/datadog/core/configuration/components.rb +185 -17
- data/lib/datadog/core/configuration/components_state.rb +6 -1
- data/lib/datadog/core/configuration/config_helper.rb +11 -2
- data/lib/datadog/core/configuration/deprecations.rb +2 -2
- data/lib/datadog/core/configuration/option.rb +32 -6
- data/lib/datadog/core/configuration/option_definition.rb +42 -14
- data/lib/datadog/core/configuration/options.rb +49 -12
- data/lib/datadog/core/configuration/settings.rb +115 -16
- data/lib/datadog/core/configuration/stable_config.rb +10 -0
- data/lib/datadog/core/configuration/supported_configurations.rb +379 -300
- data/lib/datadog/core/configuration.rb +3 -3
- data/lib/datadog/core/contrib/rails/railtie.rb +32 -0
- data/lib/datadog/core/contrib/rails/utils.rb +7 -3
- data/lib/datadog/core/crashtracking/component.rb +73 -21
- data/lib/datadog/core/crashtracking/tag_builder.rb +6 -0
- data/lib/datadog/core/ddsketch.rb +19 -0
- data/lib/datadog/core/diagnostics/environment_logger.rb +3 -1
- data/lib/datadog/core/environment/agent_info.rb +65 -1
- data/lib/datadog/core/environment/cgroup.rb +52 -25
- data/lib/datadog/core/environment/container.rb +140 -46
- data/lib/datadog/core/environment/ext.rb +13 -0
- data/lib/datadog/core/environment/identity.rb +40 -4
- data/lib/datadog/core/environment/process.rb +122 -0
- data/lib/datadog/core/environment/socket.rb +13 -0
- data/lib/datadog/core/environment/yjit.rb +2 -1
- data/lib/datadog/core/error.rb +6 -6
- data/lib/datadog/core/evp.rb +11 -0
- data/lib/datadog/core/feature_flags.rb +61 -0
- data/lib/datadog/core/knuth_sampler.rb +59 -0
- data/lib/datadog/core/logger.rb +1 -1
- data/lib/datadog/core/metrics/client.rb +6 -6
- data/lib/datadog/core/metrics/logging.rb +1 -1
- data/lib/datadog/core/pin.rb +8 -8
- data/lib/datadog/core/process_discovery.rb +21 -18
- data/lib/datadog/core/rate_limiter.rb +11 -1
- data/lib/datadog/core/remote/client/capabilities.rb +49 -6
- data/lib/datadog/core/remote/client.rb +15 -7
- data/lib/datadog/core/remote/component.rb +64 -36
- data/lib/datadog/core/remote/configuration/content.rb +15 -2
- data/lib/datadog/core/remote/configuration/digest.rb +14 -7
- data/lib/datadog/core/remote/configuration/repository.rb +1 -1
- data/lib/datadog/core/remote/configuration/target.rb +13 -6
- data/lib/datadog/core/remote/transport/config.rb +9 -36
- data/lib/datadog/core/remote/transport/http/config.rb +15 -55
- data/lib/datadog/core/remote/transport/http/negotiation.rb +14 -44
- data/lib/datadog/core/remote/transport/http.rb +15 -24
- data/lib/datadog/core/remote/transport/negotiation.rb +8 -33
- data/lib/datadog/core/remote/worker.rb +25 -37
- data/lib/datadog/core/runtime/metrics.rb +11 -2
- data/lib/datadog/core/semaphore.rb +1 -4
- data/lib/datadog/core/tag_builder.rb +0 -4
- data/lib/datadog/core/tag_normalizer.rb +84 -0
- data/lib/datadog/core/telemetry/component.rb +59 -15
- data/lib/datadog/core/telemetry/emitter.rb +6 -6
- data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +2 -3
- data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +30 -0
- data/lib/datadog/core/telemetry/event/app_extended_heartbeat.rb +32 -0
- data/lib/datadog/core/telemetry/event/app_started.rb +177 -171
- data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +27 -4
- data/lib/datadog/core/telemetry/event.rb +2 -7
- data/lib/datadog/core/telemetry/ext.rb +1 -0
- data/lib/datadog/core/telemetry/logger.rb +4 -2
- data/lib/datadog/core/telemetry/logging.rb +17 -5
- data/lib/datadog/core/telemetry/metrics_manager.rb +9 -0
- data/lib/datadog/core/telemetry/request.rb +17 -5
- data/lib/datadog/core/telemetry/transport/http/telemetry.rb +8 -34
- data/lib/datadog/core/telemetry/transport/http.rb +21 -16
- data/lib/datadog/core/telemetry/transport/telemetry.rb +8 -17
- data/lib/datadog/core/telemetry/worker.rb +108 -32
- data/lib/datadog/core/transport/ext.rb +3 -0
- data/lib/datadog/core/transport/http/api/endpoint.rb +9 -4
- data/lib/datadog/core/transport/http/api/instance.rb +4 -21
- data/lib/datadog/core/transport/http/builder.rb +10 -6
- data/lib/datadog/core/transport/http/client.rb +80 -0
- data/lib/datadog/core/transport/http/response.rb +4 -0
- data/lib/datadog/core/transport/http.rb +24 -19
- data/lib/datadog/core/transport/parcel.rb +61 -9
- data/lib/datadog/core/transport/response.rb +16 -2
- data/lib/datadog/core/transport/transport.rb +90 -0
- data/lib/datadog/core/utils/at_fork_monkey_patch.rb +2 -2
- data/lib/datadog/core/utils/{base64.rb → base64_codec.rb} +4 -3
- data/lib/datadog/core/utils/enumerable_compat.rb +29 -0
- data/lib/datadog/core/utils/fnv.rb +26 -0
- data/lib/datadog/core/utils/forking.rb +3 -1
- data/lib/datadog/core/utils/hash.rb +0 -23
- data/lib/datadog/{appsec/api_security → core/utils}/lru_cache.rb +10 -21
- data/lib/datadog/core/utils/network.rb +22 -1
- data/lib/datadog/core/utils/only_once.rb +1 -1
- data/lib/datadog/core/utils/only_once_successful.rb +8 -2
- data/lib/datadog/core/utils/safe_dup.rb +2 -2
- data/lib/datadog/core/utils/sequence.rb +2 -0
- data/lib/datadog/core/utils/spawn_monkey_patch.rb +68 -0
- data/lib/datadog/core/utils/time.rb +6 -2
- data/lib/datadog/core/utils.rb +3 -1
- data/lib/datadog/core/workers/async.rb +11 -2
- data/lib/datadog/core/workers/interval_loop.rb +51 -3
- data/lib/datadog/core/workers/polling.rb +2 -0
- data/lib/datadog/core/workers/queue.rb +96 -1
- data/lib/datadog/core/workers/runtime_metrics.rb +9 -1
- data/lib/datadog/core.rb +10 -3
- data/lib/datadog/data_streams/configuration.rb +50 -0
- data/lib/datadog/data_streams/ext.rb +11 -0
- data/lib/datadog/data_streams/extensions.rb +16 -0
- data/lib/datadog/data_streams/pathway_context.rb +169 -0
- data/lib/datadog/data_streams/processor.rb +511 -0
- data/lib/datadog/data_streams/transport/http/stats.rb +58 -0
- data/lib/datadog/data_streams/transport/http.rb +36 -0
- data/lib/datadog/data_streams/transport/stats.rb +39 -0
- data/lib/datadog/data_streams.rb +100 -0
- data/lib/datadog/di/base.rb +15 -7
- data/lib/datadog/di/boot.rb +7 -2
- data/lib/datadog/di/capture_expression.rb +21 -0
- data/lib/datadog/di/capture_expression_evaluator.rb +71 -0
- data/lib/datadog/di/capture_limits.rb +41 -0
- data/lib/datadog/di/code_tracker.rb +217 -15
- data/lib/datadog/di/component.rb +139 -51
- data/lib/datadog/di/configuration.rb +241 -2
- data/lib/datadog/di/context.rb +82 -0
- data/lib/datadog/di/contrib/active_record.rb +34 -5
- data/lib/datadog/di/el/compiler.rb +168 -0
- data/lib/datadog/di/el/evaluator.rb +159 -0
- data/lib/datadog/di/el/expression.rb +42 -0
- data/lib/datadog/di/el.rb +5 -0
- data/lib/datadog/di/error.rb +44 -0
- data/lib/datadog/di/fatal_exceptions.rb +26 -0
- data/lib/datadog/di/instrumenter.rb +623 -147
- data/lib/datadog/di/logger.rb +2 -2
- data/lib/datadog/di/probe.rb +122 -14
- data/lib/datadog/di/probe_builder.rb +124 -3
- data/lib/datadog/di/probe_file_loader/railtie.rb +1 -1
- data/lib/datadog/di/probe_file_loader.rb +12 -7
- data/lib/datadog/di/probe_manager.rb +195 -100
- data/lib/datadog/di/probe_notification_builder.rb +321 -90
- data/lib/datadog/di/probe_notifier_worker.rb +112 -36
- data/lib/datadog/di/probe_repository.rb +198 -0
- data/lib/datadog/di/proc_responder.rb +36 -0
- data/lib/datadog/di/redactor.rb +24 -2
- data/lib/datadog/di/remote.rb +258 -93
- data/lib/datadog/di/serializer.rb +310 -29
- data/lib/datadog/di/transport/diagnostics.rb +12 -42
- data/lib/datadog/di/transport/http/diagnostics.rb +4 -34
- data/lib/datadog/di/transport/http/input.rb +2 -34
- data/lib/datadog/di/transport/http.rb +43 -19
- data/lib/datadog/di/transport/input.rb +112 -38
- data/lib/datadog/di/utils.rb +42 -14
- data/lib/datadog/di.rb +204 -4
- data/lib/datadog/error_tracking/collector.rb +2 -1
- data/lib/datadog/error_tracking/component.rb +2 -2
- data/lib/datadog/error_tracking/configuration.rb +55 -2
- data/lib/datadog/error_tracking/filters.rb +2 -2
- data/lib/datadog/kit/appsec/events/v2.rb +60 -3
- data/lib/datadog/kit/enable_core_dumps.rb +1 -1
- data/lib/datadog/kit/tracing/method_tracer.rb +135 -0
- data/lib/datadog/open_feature/component.rb +100 -0
- data/lib/datadog/open_feature/configuration.rb +37 -0
- data/lib/datadog/open_feature/evaluation_engine.rb +70 -0
- data/lib/datadog/open_feature/exposures/batch_builder.rb +32 -0
- data/lib/datadog/open_feature/exposures/buffer.rb +43 -0
- data/lib/datadog/open_feature/exposures/deduplicator.rb +30 -0
- data/lib/datadog/open_feature/exposures/event.rb +60 -0
- data/lib/datadog/open_feature/exposures/reporter.rb +40 -0
- data/lib/datadog/open_feature/exposures/worker.rb +116 -0
- data/lib/datadog/open_feature/ext.rb +16 -0
- data/lib/datadog/open_feature/flag_evaluation/aggregator.rb +286 -0
- data/lib/datadog/open_feature/flag_evaluation/writer.rb +433 -0
- data/lib/datadog/open_feature/hooks/flag_eval_evp_hook.rb +101 -0
- data/lib/datadog/open_feature/hooks/flag_eval_metrics_hook.rb +49 -0
- data/lib/datadog/open_feature/metrics/flag_eval_metrics.rb +149 -0
- data/lib/datadog/open_feature/native_evaluator.rb +60 -0
- data/lib/datadog/open_feature/noop_evaluator.rb +26 -0
- data/lib/datadog/open_feature/provider.rb +191 -0
- data/lib/datadog/open_feature/remote.rb +67 -0
- data/lib/datadog/open_feature/resolution_details.rb +35 -0
- data/lib/datadog/open_feature/transport.rb +121 -0
- data/lib/datadog/open_feature.rb +19 -0
- data/lib/datadog/opentelemetry/api/baggage.rb +1 -1
- data/lib/datadog/opentelemetry/configuration/settings.rb +226 -0
- data/lib/datadog/opentelemetry/ext.rb +9 -0
- data/lib/datadog/opentelemetry/logs.rb +98 -0
- data/lib/datadog/opentelemetry/metrics.rb +90 -0
- data/lib/datadog/opentelemetry/sdk/configurator.rb +65 -1
- data/lib/datadog/opentelemetry/sdk/id_generator.rb +16 -10
- data/lib/datadog/opentelemetry/sdk/logs_exporter.rb +30 -0
- data/lib/datadog/opentelemetry/sdk/metrics_exporter.rb +28 -0
- data/lib/datadog/opentelemetry/sdk/propagator.rb +9 -3
- data/lib/datadog/opentelemetry/sdk/span_processor.rb +4 -1
- data/lib/datadog/opentelemetry/sdk.rb +19 -0
- data/lib/datadog/opentelemetry/signal_configuration.rb +53 -0
- data/lib/datadog/opentelemetry.rb +4 -0
- data/lib/datadog/profiling/collectors/code_provenance.rb +71 -12
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +52 -4
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +13 -5
- data/lib/datadog/profiling/collectors/info.rb +18 -4
- data/lib/datadog/profiling/collectors/thread_context.rb +10 -5
- data/lib/datadog/profiling/component.rb +82 -40
- data/lib/datadog/profiling/exporter.rb +41 -12
- data/lib/datadog/profiling/ext/dir_monkey_patches.rb +24 -5
- data/lib/datadog/profiling/ext/exec_monkey_patch.rb +32 -0
- data/lib/datadog/profiling/ext.rb +0 -2
- data/lib/datadog/profiling/flush.rb +23 -11
- data/lib/datadog/profiling/http_transport.rb +21 -8
- data/lib/datadog/profiling/load_native_extension.rb +2 -2
- data/lib/datadog/profiling/profiler.rb +31 -14
- data/lib/datadog/profiling/scheduler.rb +10 -9
- data/lib/datadog/profiling/stack_recorder.rb +0 -8
- data/lib/datadog/profiling/tag_builder.rb +37 -3
- data/lib/datadog/profiling/tasks/exec.rb +8 -3
- data/lib/datadog/profiling/tasks/help.rb +1 -0
- data/lib/datadog/profiling/tasks/setup.rb +2 -2
- data/lib/datadog/profiling.rb +1 -3
- data/lib/datadog/ruby_version.rb +25 -0
- data/lib/datadog/single_step_instrument.rb +2 -2
- data/lib/datadog/symbol_database/component.rb +734 -0
- data/lib/datadog/symbol_database/configuration.rb +73 -0
- data/lib/datadog/symbol_database/extensions.rb +19 -0
- data/lib/datadog/symbol_database/extractor.rb +1110 -0
- data/lib/datadog/symbol_database/file_hash.rb +48 -0
- data/lib/datadog/symbol_database/logger.rb +43 -0
- data/lib/datadog/symbol_database/remote.rb +180 -0
- data/lib/datadog/symbol_database/scope.rb +102 -0
- data/lib/datadog/symbol_database/scope_batcher.rb +292 -0
- data/lib/datadog/symbol_database/service_version.rb +66 -0
- data/lib/datadog/symbol_database/symbol.rb +69 -0
- data/lib/datadog/symbol_database/transport/http/endpoint.rb +28 -0
- data/lib/datadog/symbol_database/transport/http.rb +45 -0
- data/lib/datadog/symbol_database/transport.rb +54 -0
- data/lib/datadog/symbol_database/uploader.rb +230 -0
- data/lib/datadog/symbol_database.rb +71 -0
- data/lib/datadog/tracing/buffer.rb +3 -3
- data/lib/datadog/tracing/component.rb +17 -17
- data/lib/datadog/tracing/configuration/dynamic.rb +2 -2
- data/lib/datadog/tracing/configuration/ext.rb +22 -0
- data/lib/datadog/tracing/configuration/settings.rb +96 -4
- data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +4 -1
- data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +4 -1
- data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +4 -1
- data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +4 -1
- data/lib/datadog/tracing/contrib/action_mailer/event.rb +4 -1
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +10 -7
- data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +28 -0
- data/lib/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rb +3 -1
- data/lib/datadog/tracing/contrib/action_pack/utils.rb +1 -2
- data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +4 -1
- data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +5 -2
- data/lib/datadog/tracing/contrib/active_job/data_streams.rb +62 -0
- data/lib/datadog/tracing/contrib/active_job/events/discard.rb +5 -2
- data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +5 -2
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +5 -2
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +5 -2
- data/lib/datadog/tracing/contrib/active_job/events/perform.rb +5 -2
- data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +5 -2
- data/lib/datadog/tracing/contrib/active_job/log_injection.rb +21 -7
- data/lib/datadog/tracing/contrib/active_job/patcher.rb +17 -1
- data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -1
- data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +3 -4
- data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +2 -2
- data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +2 -5
- data/lib/datadog/tracing/contrib/active_record/utils.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +2 -5
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +1 -4
- data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +2 -2
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +6 -8
- data/lib/datadog/tracing/contrib/component.rb +3 -3
- data/lib/datadog/tracing/contrib/configurable.rb +18 -3
- data/lib/datadog/tracing/contrib/configuration/resolver.rb +14 -4
- data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +1 -5
- data/lib/datadog/tracing/contrib/dalli/integration.rb +4 -1
- data/lib/datadog/tracing/contrib/dalli/quantize.rb +1 -1
- data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +2 -0
- data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +1 -0
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +2 -6
- data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +2 -2
- data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +5 -1
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +5 -6
- data/lib/datadog/tracing/contrib/ethon/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +1 -8
- data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +16 -5
- data/lib/datadog/tracing/contrib/excon/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/excon/middleware.rb +3 -7
- data/lib/datadog/tracing/contrib/ext.rb +3 -1
- data/lib/datadog/tracing/contrib/extensions.rb +19 -2
- data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +16 -9
- data/lib/datadog/tracing/contrib/faraday/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +3 -7
- data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +7 -3
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +10 -7
- data/lib/datadog/tracing/contrib/grape/instrumentation.rb +13 -8
- data/lib/datadog/tracing/contrib/grape/patcher.rb +6 -1
- data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +7 -0
- data/lib/datadog/tracing/contrib/graphql/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +75 -44
- data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +5 -2
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +3 -7
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +3 -7
- data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +2 -0
- data/lib/datadog/tracing/contrib/grpc/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/grpc.rb +1 -0
- data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +1 -0
- data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +1 -0
- data/lib/datadog/tracing/contrib/http/configuration/settings.rb +16 -5
- data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +2 -0
- data/lib/datadog/tracing/contrib/http/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +4 -8
- data/lib/datadog/tracing/contrib/http/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/http.rb +1 -0
- data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +16 -5
- data/lib/datadog/tracing/contrib/httpclient/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +7 -7
- data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +16 -5
- data/lib/datadog/tracing/contrib/httprb/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +4 -8
- data/lib/datadog/tracing/contrib/kafka/event.rb +1 -0
- data/lib/datadog/tracing/contrib/kafka/instrumentation/consumer.rb +66 -0
- data/lib/datadog/tracing/contrib/kafka/instrumentation/producer.rb +66 -0
- data/lib/datadog/tracing/contrib/kafka/patcher.rb +14 -0
- data/lib/datadog/tracing/contrib/karafka/configuration/settings.rb +5 -1
- data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +2 -0
- data/lib/datadog/tracing/contrib/karafka/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/karafka/framework.rb +30 -0
- data/lib/datadog/tracing/contrib/karafka/monitor.rb +11 -0
- data/lib/datadog/tracing/contrib/karafka/patcher.rb +35 -4
- data/lib/datadog/tracing/contrib/karafka.rb +1 -0
- data/lib/datadog/tracing/contrib/mongodb/parsers.rb +5 -5
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +5 -8
- data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +6 -0
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +3 -6
- data/lib/datadog/tracing/contrib/opensearch/patcher.rb +2 -6
- data/lib/datadog/tracing/contrib/opensearch/quantize.rb +2 -2
- data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +6 -0
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +15 -18
- data/lib/datadog/tracing/contrib/presto/instrumentation.rb +6 -8
- data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +13 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +6 -2
- data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +24 -0
- data/lib/datadog/tracing/contrib/que/configuration/settings.rb +5 -2
- data/lib/datadog/tracing/contrib/que/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/que/tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/racecar/event.rb +1 -5
- data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +11 -1
- data/lib/datadog/tracing/contrib/rack/ext.rb +28 -0
- data/lib/datadog/tracing/contrib/rack/header_tagging.rb +23 -0
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +62 -27
- data/lib/datadog/tracing/contrib/rack/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/rack/request_queue.rb +1 -1
- data/lib/datadog/tracing/contrib/rack/route_inference.rb +67 -0
- data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +119 -1
- data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +5 -2
- data/lib/datadog/tracing/contrib/rails/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -1
- data/lib/datadog/tracing/contrib/rails/middlewares.rb +2 -2
- data/lib/datadog/tracing/contrib/rails/patcher.rb +0 -1
- data/lib/datadog/tracing/contrib/rails/runner.rb +3 -1
- data/lib/datadog/tracing/contrib/rake/instrumentation.rb +6 -4
- data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -1
- data/lib/datadog/tracing/contrib/redis/tags.rb +1 -6
- data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +2 -0
- data/lib/datadog/tracing/contrib/registerable.rb +11 -0
- data/lib/datadog/tracing/contrib/resque/resque_job.rb +1 -0
- data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +5 -2
- data/lib/datadog/tracing/contrib/rest_client/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +5 -6
- data/lib/datadog/tracing/contrib/roda/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/roda/instrumentation.rb +7 -2
- data/lib/datadog/tracing/contrib/sequel/database.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/dataset.rb +1 -0
- data/lib/datadog/tracing/contrib/sequel/utils.rb +2 -7
- data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +5 -1
- data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +2 -0
- data/lib/datadog/tracing/contrib/sidekiq/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +2 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +2 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/stop.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +3 -2
- data/lib/datadog/tracing/contrib/sidekiq/utils.rb +1 -1
- data/lib/datadog/tracing/contrib/sidekiq.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +5 -1
- data/lib/datadog/tracing/contrib/sinatra/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/framework.rb +1 -1
- data/lib/datadog/tracing/contrib/sinatra/tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +4 -1
- data/lib/datadog/tracing/contrib/sneakers/integration.rb +15 -4
- data/lib/datadog/tracing/contrib/sneakers/tracer.rb +1 -0
- data/lib/datadog/tracing/contrib/status_range_matcher.rb +13 -1
- data/lib/datadog/tracing/contrib/stripe/request.rb +1 -1
- data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +1 -0
- data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +6 -0
- data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +4 -6
- data/lib/datadog/tracing/contrib/utils/quantization/{hash.rb → hash_formatter.rb} +4 -2
- data/lib/datadog/tracing/contrib/waterdrop/configuration/settings.rb +31 -0
- data/lib/datadog/tracing/contrib/waterdrop/distributed/propagation.rb +50 -0
- data/lib/datadog/tracing/contrib/waterdrop/ext.rb +18 -0
- data/lib/datadog/tracing/contrib/waterdrop/integration.rb +43 -0
- data/lib/datadog/tracing/contrib/waterdrop/middleware.rb +46 -0
- data/lib/datadog/tracing/contrib/waterdrop/patcher.rb +49 -0
- data/lib/datadog/tracing/contrib/waterdrop/producer.rb +50 -0
- data/lib/datadog/tracing/contrib/waterdrop.rb +42 -0
- data/lib/datadog/tracing/contrib.rb +9 -0
- data/lib/datadog/tracing/diagnostics/environment_logger.rb +4 -2
- data/lib/datadog/tracing/distributed/baggage.rb +64 -8
- data/lib/datadog/tracing/distributed/datadog.rb +13 -11
- data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +1 -14
- data/lib/datadog/tracing/distributed/propagation.rb +35 -3
- data/lib/datadog/tracing/distributed/trace_context.rb +85 -62
- data/lib/datadog/tracing/event.rb +1 -1
- data/lib/datadog/tracing/ext.rb +9 -0
- data/lib/datadog/tracing/metadata/ext.rb +23 -1
- data/lib/datadog/tracing/metadata/tagging.rb +2 -2
- data/lib/datadog/tracing/pipeline.rb +1 -1
- data/lib/datadog/tracing/remote.rb +36 -13
- data/lib/datadog/tracing/sampling/ext.rb +2 -0
- data/lib/datadog/tracing/sampling/priority_sampler.rb +16 -1
- data/lib/datadog/tracing/sampling/rate_sampler.rb +8 -19
- data/lib/datadog/tracing/sampling/rule.rb +1 -1
- data/lib/datadog/tracing/sampling/rule_sampler.rb +54 -25
- data/lib/datadog/tracing/sampling/span/rule_parser.rb +2 -2
- data/lib/datadog/tracing/span.rb +1 -1
- data/lib/datadog/tracing/span_event.rb +2 -2
- data/lib/datadog/tracing/span_operation.rb +34 -10
- data/lib/datadog/tracing/sync_writer.rb +0 -1
- data/lib/datadog/tracing/trace_digest.rb +7 -0
- data/lib/datadog/tracing/trace_operation.rb +123 -16
- data/lib/datadog/tracing/tracer.rb +82 -23
- data/lib/datadog/tracing/transport/http/client.rb +12 -26
- data/lib/datadog/tracing/transport/http/traces.rb +2 -50
- data/lib/datadog/tracing/transport/http.rb +15 -9
- data/lib/datadog/tracing/transport/io/client.rb +6 -9
- data/lib/datadog/tracing/transport/io/traces.rb +28 -34
- data/lib/datadog/tracing/transport/trace_formatter.rb +22 -0
- data/lib/datadog/tracing/transport/traces.rb +13 -81
- data/lib/datadog/tracing/workers.rb +2 -1
- data/lib/datadog/tracing/writer.rb +1 -1
- data/lib/datadog/version.rb +2 -2
- data/lib/datadog.rb +8 -1
- metadata +185 -36
- data/ext/datadog_profiling_native_extension/clock_id_noop.c +0 -21
- data/ext/libdatadog_api/macos_development.md +0 -26
- data/lib/datadog/appsec/configuration/settings.rb +0 -400
- data/lib/datadog/appsec/contrib/rails/ext.rb +0 -13
- data/lib/datadog/core/remote/transport/http/api.rb +0 -53
- data/lib/datadog/core/remote/transport/http/client.rb +0 -49
- data/lib/datadog/core/telemetry/transport/http/api.rb +0 -43
- data/lib/datadog/core/telemetry/transport/http/client.rb +0 -49
- data/lib/datadog/core/transport/http/api/spec.rb +0 -36
- data/lib/datadog/di/configuration/settings.rb +0 -212
- data/lib/datadog/di/transport/http/api.rb +0 -42
- data/lib/datadog/di/transport/http/client.rb +0 -47
- data/lib/datadog/error_tracking/configuration/settings.rb +0 -63
- data/lib/datadog/opentelemetry/api/baggage.rbs +0 -26
- data/lib/datadog/tracing/transport/http/api.rb +0 -44
- data/lib/datadog/tracing/workers/trace_writer.rb +0 -199
|
@@ -69,8 +69,8 @@ module Datadog
|
|
|
69
69
|
|
|
70
70
|
private
|
|
71
71
|
|
|
72
|
-
MIN_INT64_SIGNED = -2
|
|
73
|
-
MAX_INT64_SIGNED = 2 <<
|
|
72
|
+
MIN_INT64_SIGNED = -2 << 62
|
|
73
|
+
MAX_INT64_SIGNED = (2 << 62) - 1
|
|
74
74
|
|
|
75
75
|
# Checks the attributes hash to ensure it only contains serializable values.
|
|
76
76
|
# Invalid values are removed from the hash.
|
|
@@ -158,12 +158,14 @@ module Datadog
|
|
|
158
158
|
begin
|
|
159
159
|
start
|
|
160
160
|
rescue => e
|
|
161
|
-
logger.debug { "Failed to start span: #{e}" }
|
|
161
|
+
logger.debug { "Failed to start span: #{e.class}: #{e.message}" }
|
|
162
162
|
ensure
|
|
163
163
|
# We should yield to the provided block when possible, as this
|
|
164
164
|
# block is application code that we don't want to hinder.
|
|
165
165
|
# * We don't yield during a fatal error, as the application is likely trying to
|
|
166
166
|
# end its execution (either due to a system error or graceful shutdown).
|
|
167
|
+
# @type var e: Exception?
|
|
168
|
+
# Steep: https://github.com/soutaro/steep/issues/919
|
|
167
169
|
return_value = yield(self) unless e && !e.is_a?(StandardError)
|
|
168
170
|
end
|
|
169
171
|
# rubocop:disable Lint/RescueException
|
|
@@ -214,9 +216,6 @@ module Datadog
|
|
|
214
216
|
end
|
|
215
217
|
|
|
216
218
|
# Mark the span stopped at the current time
|
|
217
|
-
#
|
|
218
|
-
# steep:ignore:start
|
|
219
|
-
# Steep issue fixed in https://github.com/soutaro/steep/pull/1467
|
|
220
219
|
def stop(stop_time = nil, exception: nil)
|
|
221
220
|
# A span should not be stopped twice. Note that this is not thread-safe,
|
|
222
221
|
# stop is called from multiple threads, a given span might be stopped
|
|
@@ -239,7 +238,6 @@ module Datadog
|
|
|
239
238
|
|
|
240
239
|
self
|
|
241
240
|
end
|
|
242
|
-
# steep:ignore:end
|
|
243
241
|
|
|
244
242
|
# Return whether the duration is started or not
|
|
245
243
|
def started?
|
|
@@ -272,6 +270,9 @@ module Datadog
|
|
|
272
270
|
# Stop timing
|
|
273
271
|
stop(end_time)
|
|
274
272
|
|
|
273
|
+
# Allow subscribers to enrich the span before it is finalized.
|
|
274
|
+
events.before_finish.publish(self)
|
|
275
|
+
|
|
275
276
|
# Build span
|
|
276
277
|
# Memoize for performance reasons
|
|
277
278
|
@span = build_span
|
|
@@ -287,8 +288,14 @@ module Datadog
|
|
|
287
288
|
end
|
|
288
289
|
|
|
289
290
|
def duration
|
|
291
|
+
# Steep: https://github.com/soutaro/steep/issues/477
|
|
292
|
+
# @type ivar @duration_end: Time
|
|
293
|
+
# @type ivar @duration_start: Time
|
|
290
294
|
return @duration_end - @duration_start if @duration_start && @duration_end
|
|
291
295
|
|
|
296
|
+
# Steep: https://github.com/soutaro/steep/issues/477
|
|
297
|
+
# @type ivar @end_time: Time
|
|
298
|
+
# @type ivar @start_time: Time
|
|
292
299
|
@end_time - @start_time if @start_time && @end_time
|
|
293
300
|
end
|
|
294
301
|
|
|
@@ -316,7 +323,9 @@ module Datadog
|
|
|
316
323
|
'exception.stacktrace' => exc.backtrace,
|
|
317
324
|
}
|
|
318
325
|
|
|
319
|
-
|
|
326
|
+
# Steep: Caused by wrong declaration, should be the same parameters as `merge`
|
|
327
|
+
# https://github.com/ruby/rbs/blob/3d0fb3a7fdde60af7120e875fe3bd7237b5b6a88/core/hash.rbs#L1468
|
|
328
|
+
@span_events << SpanEvent.new('exception', attributes: event_attributes.merge!(attributes)) # steep:ignore ArgumentTypeMismatch
|
|
320
329
|
end
|
|
321
330
|
|
|
322
331
|
# Return a string representation of the span.
|
|
@@ -387,18 +396,21 @@ module Datadog
|
|
|
387
396
|
class Events
|
|
388
397
|
include Tracing::Events
|
|
389
398
|
|
|
390
|
-
|
|
399
|
+
# Steep: https://github.com/soutaro/steep/issues/335
|
|
400
|
+
DEFAULT_ON_ERROR = proc { |span_op, error| span_op&.set_error(error) } # steep:ignore IncompatibleAssignment
|
|
391
401
|
|
|
392
402
|
attr_reader \
|
|
393
403
|
:logger,
|
|
394
404
|
:after_finish,
|
|
395
405
|
:after_stop,
|
|
406
|
+
:before_finish,
|
|
396
407
|
:before_start
|
|
397
408
|
|
|
398
|
-
def initialize(logger: Datadog.logger
|
|
409
|
+
def initialize(logger: Datadog.logger)
|
|
399
410
|
@logger = logger
|
|
400
411
|
@after_finish = AfterFinish.new
|
|
401
412
|
@after_stop = AfterStop.new
|
|
413
|
+
@before_finish = BeforeFinish.new
|
|
402
414
|
@before_start = BeforeStart.new
|
|
403
415
|
end
|
|
404
416
|
|
|
@@ -422,6 +434,14 @@ module Datadog
|
|
|
422
434
|
end
|
|
423
435
|
end
|
|
424
436
|
|
|
437
|
+
# Triggered just before the span is finalized into a Span object.
|
|
438
|
+
# Subscribers can still mutate tags on the SpanOperation at this point.
|
|
439
|
+
class BeforeFinish < Tracing::Event
|
|
440
|
+
def initialize
|
|
441
|
+
super(:before_finish)
|
|
442
|
+
end
|
|
443
|
+
end
|
|
444
|
+
|
|
425
445
|
# Triggered just before the span is started.
|
|
426
446
|
class BeforeStart < Tracing::Event
|
|
427
447
|
def initialize
|
|
@@ -452,7 +472,7 @@ module Datadog
|
|
|
452
472
|
rescue => e
|
|
453
473
|
logger.debug do
|
|
454
474
|
"Custom on_error handler #{@handler} failed, using fallback behavior. \
|
|
455
|
-
Cause: #{e.class}: #{e} Location: #{Array(e.backtrace).first}"
|
|
475
|
+
Cause: #{e.class}: #{e.message} Location: #{Array(e.backtrace).first}"
|
|
456
476
|
end
|
|
457
477
|
|
|
458
478
|
original&.call(op, error)
|
|
@@ -464,7 +484,7 @@ module Datadog
|
|
|
464
484
|
@handler.call(*args)
|
|
465
485
|
rescue => e
|
|
466
486
|
logger.debug do
|
|
467
|
-
"Error in on_error handler '#{@
|
|
487
|
+
"Error in on_error handler '#{@handler}': #{e.class}: #{e.message} at #{Array(e.backtrace).first}"
|
|
468
488
|
end
|
|
469
489
|
end
|
|
470
490
|
|
|
@@ -548,6 +568,10 @@ module Datadog
|
|
|
548
568
|
# Used for serialization
|
|
549
569
|
# @return [Integer] in nanoseconds since Epoch
|
|
550
570
|
def start_time_nano
|
|
571
|
+
return 0 if @start_time.nil?
|
|
572
|
+
|
|
573
|
+
# Steep: https://github.com/soutaro/steep/issues/477
|
|
574
|
+
# @type ivar @start_time: Time
|
|
551
575
|
@start_time.to_i * 1000000000 + @start_time.nsec
|
|
552
576
|
end
|
|
553
577
|
|
|
@@ -9,7 +9,6 @@ require_relative 'transport/http'
|
|
|
9
9
|
module Datadog
|
|
10
10
|
module Tracing
|
|
11
11
|
# SyncWriter flushes both services and traces synchronously
|
|
12
|
-
# DEV: To be replaced by Datadog::Tracing::Workers::TraceWriter.
|
|
13
12
|
#
|
|
14
13
|
# Note: If you're wondering if this class is used at all, since there are no other references to it on the codebase,
|
|
15
14
|
# the separate `datadog-lambda` uses it as of February 2021:
|
|
@@ -22,6 +22,9 @@ module Datadog
|
|
|
22
22
|
# @!attribute [r] span_type
|
|
23
23
|
# The type of the currently active span.
|
|
24
24
|
# @return [String]
|
|
25
|
+
# @!attribute [r] span_links
|
|
26
|
+
# Span links associated with this trace context.
|
|
27
|
+
# @return [Array<Datadog::Tracing::SpanLink>, nil]
|
|
25
28
|
# @!attribute [r] trace_distributed_tags
|
|
26
29
|
# Datadog-specific tags that support richer distributed tracing association.
|
|
27
30
|
# @return [Hash<String,String>]
|
|
@@ -91,6 +94,7 @@ module Datadog
|
|
|
91
94
|
:span_resource,
|
|
92
95
|
:span_service,
|
|
93
96
|
:span_type,
|
|
97
|
+
:span_links,
|
|
94
98
|
:trace_distributed_tags,
|
|
95
99
|
:trace_hostname,
|
|
96
100
|
:trace_id,
|
|
@@ -114,6 +118,7 @@ module Datadog
|
|
|
114
118
|
span_resource: nil,
|
|
115
119
|
span_service: nil,
|
|
116
120
|
span_type: nil,
|
|
121
|
+
span_links: nil,
|
|
117
122
|
trace_distributed_tags: nil,
|
|
118
123
|
trace_hostname: nil,
|
|
119
124
|
trace_id: nil,
|
|
@@ -136,6 +141,7 @@ module Datadog
|
|
|
136
141
|
@span_resource = span_resource && span_resource.dup.freeze
|
|
137
142
|
@span_service = span_service && span_service.dup.freeze
|
|
138
143
|
@span_type = span_type && span_type.dup.freeze
|
|
144
|
+
@span_links = span_links && span_links.dup.freeze
|
|
139
145
|
@trace_distributed_tags = trace_distributed_tags && trace_distributed_tags.dup.freeze
|
|
140
146
|
@trace_hostname = trace_hostname && trace_hostname.dup.freeze
|
|
141
147
|
@trace_id = trace_id
|
|
@@ -167,6 +173,7 @@ module Datadog
|
|
|
167
173
|
span_resource: span_resource,
|
|
168
174
|
span_service: span_service,
|
|
169
175
|
span_type: span_type,
|
|
176
|
+
span_links: span_links,
|
|
170
177
|
trace_distributed_tags: trace_distributed_tags,
|
|
171
178
|
trace_hostname: trace_hostname,
|
|
172
179
|
trace_id: trace_id,
|
|
@@ -27,6 +27,8 @@ module Datadog
|
|
|
27
27
|
include Metadata::Tagging
|
|
28
28
|
|
|
29
29
|
DEFAULT_MAX_LENGTH = 100_000
|
|
30
|
+
AUTO_SAMPLING_PRIORITIES = [Sampling::Ext::Priority::AUTO_KEEP, Sampling::Ext::Priority::AUTO_REJECT].freeze
|
|
31
|
+
RECONSIDERABLE_DECISIONS = [Sampling::Ext::Decision::DEFAULT, Sampling::Ext::Decision::AGENT_RATE].freeze
|
|
30
32
|
|
|
31
33
|
attr_accessor \
|
|
32
34
|
:agent_sample_rate,
|
|
@@ -51,10 +53,16 @@ module Datadog
|
|
|
51
53
|
|
|
52
54
|
attr_writer \
|
|
53
55
|
:name,
|
|
54
|
-
:resource,
|
|
55
56
|
:sampled,
|
|
56
57
|
:service
|
|
57
58
|
|
|
59
|
+
# Creates a new TraceOperation.
|
|
60
|
+
#
|
|
61
|
+
# @param span_links [Array<Datadog::Tracing::SpanLink>, nil] links to attach to the local root span.
|
|
62
|
+
# @param auto_finish [Boolean] when true, automatically finishes the trace when the local root span finishes.
|
|
63
|
+
# When false, the trace remains unfinished until {#finish!} is called.
|
|
64
|
+
# This is useful when this {TraceOperation} represents the continuation of a remote {TraceDigest},
|
|
65
|
+
# in which case local root spans in this {TraceOperation} are children of the {TraceDigest}'s last active span.
|
|
58
66
|
def initialize(
|
|
59
67
|
logger: Datadog.logger,
|
|
60
68
|
agent_sample_rate: nil,
|
|
@@ -65,6 +73,7 @@ module Datadog
|
|
|
65
73
|
name: nil,
|
|
66
74
|
origin: nil,
|
|
67
75
|
parent_span_id: nil,
|
|
76
|
+
span_links: nil,
|
|
68
77
|
rate_limiter_rate: nil,
|
|
69
78
|
resource: nil,
|
|
70
79
|
rule_sample_rate: nil,
|
|
@@ -80,7 +89,8 @@ module Datadog
|
|
|
80
89
|
trace_state_unknown_fields: nil,
|
|
81
90
|
remote_parent: false,
|
|
82
91
|
tracer: nil, # DEV-3.0: deprecated, remove in 3.0
|
|
83
|
-
baggage: nil
|
|
92
|
+
baggage: nil,
|
|
93
|
+
auto_finish: true
|
|
84
94
|
)
|
|
85
95
|
@logger = logger
|
|
86
96
|
|
|
@@ -90,7 +100,7 @@ module Datadog
|
|
|
90
100
|
@parent_span_id = parent_span_id
|
|
91
101
|
@sampled = sampled.nil? || sampled
|
|
92
102
|
@remote_parent = remote_parent
|
|
93
|
-
|
|
103
|
+
@span_links = span_links
|
|
94
104
|
# Tags
|
|
95
105
|
@agent_sample_rate = agent_sample_rate
|
|
96
106
|
@hostname = hostname
|
|
@@ -119,6 +129,9 @@ module Datadog
|
|
|
119
129
|
@events = events || Events.new
|
|
120
130
|
@finished = false
|
|
121
131
|
@spans = []
|
|
132
|
+
@auto_finish = !!auto_finish
|
|
133
|
+
@flushed = false
|
|
134
|
+
@propagated = false
|
|
122
135
|
end
|
|
123
136
|
|
|
124
137
|
def full?
|
|
@@ -162,6 +175,17 @@ module Datadog
|
|
|
162
175
|
set_tag(Tracing::Metadata::Ext::Distributed::TAG_DECISION_MAKER, Tracing::Sampling::Ext::Decision::MANUAL)
|
|
163
176
|
end
|
|
164
177
|
|
|
178
|
+
def resource=(value)
|
|
179
|
+
previous_resource = @resource
|
|
180
|
+
@resource = value
|
|
181
|
+
|
|
182
|
+
return if !!previous_resource || value.nil?
|
|
183
|
+
|
|
184
|
+
events.trace_resource_change.publish(self)
|
|
185
|
+
rescue => e
|
|
186
|
+
logger.debug { "Error updating trace resource: #{e.class}: #{e.message} Backtrace: #{e.backtrace.first(3)}" }
|
|
187
|
+
end
|
|
188
|
+
|
|
165
189
|
def name
|
|
166
190
|
@name || root_span&.name
|
|
167
191
|
end
|
|
@@ -200,6 +224,12 @@ module Datadog
|
|
|
200
224
|
!@resource.nil?
|
|
201
225
|
end
|
|
202
226
|
|
|
227
|
+
def reconsider_resource_sample?
|
|
228
|
+
return false if @resource.nil?
|
|
229
|
+
|
|
230
|
+
reconsider_rule_sample?
|
|
231
|
+
end
|
|
232
|
+
|
|
203
233
|
def service
|
|
204
234
|
@service || root_span&.service
|
|
205
235
|
end
|
|
@@ -266,15 +296,20 @@ module Datadog
|
|
|
266
296
|
parent_id = parent ? parent.id : @parent_span_id || 0
|
|
267
297
|
|
|
268
298
|
# Build events
|
|
269
|
-
events
|
|
299
|
+
span_events = events || SpanOperation::Events.new(logger: logger)
|
|
270
300
|
|
|
271
301
|
# Before start: activate the span, publish events.
|
|
272
|
-
|
|
302
|
+
span_events.before_start.subscribe do |span_op|
|
|
273
303
|
start_span(span_op)
|
|
274
304
|
end
|
|
275
305
|
|
|
306
|
+
# Before finish: allow enrichment before the span is finalized, publish events.
|
|
307
|
+
span_events.before_finish.subscribe do |span_op|
|
|
308
|
+
before_finish_span(span_op)
|
|
309
|
+
end
|
|
310
|
+
|
|
276
311
|
# After finish: deactivate the span, record, publish events.
|
|
277
|
-
|
|
312
|
+
span_events.after_finish.subscribe do |span, span_op|
|
|
278
313
|
finish_span(span, span_op, parent)
|
|
279
314
|
end
|
|
280
315
|
|
|
@@ -282,9 +317,10 @@ module Datadog
|
|
|
282
317
|
SpanOperation.new(
|
|
283
318
|
op_name,
|
|
284
319
|
logger: logger,
|
|
285
|
-
events:
|
|
320
|
+
events: span_events,
|
|
286
321
|
on_error: on_error,
|
|
287
322
|
parent_id: parent_id,
|
|
323
|
+
links: (@root_span.nil? ? @span_links : nil),
|
|
288
324
|
resource: resource || op_name,
|
|
289
325
|
service: service,
|
|
290
326
|
start_time: start_time,
|
|
@@ -294,7 +330,7 @@ module Datadog
|
|
|
294
330
|
id: id
|
|
295
331
|
)
|
|
296
332
|
rescue => e
|
|
297
|
-
logger.debug { "Failed to build new span: #{e}" }
|
|
333
|
+
logger.debug { "Failed to build new span: #{e.class}: #{e.message}" }
|
|
298
334
|
|
|
299
335
|
# Return dummy span
|
|
300
336
|
SpanOperation.new(op_name, logger: logger)
|
|
@@ -311,6 +347,7 @@ module Datadog
|
|
|
311
347
|
# Copy out completed spans
|
|
312
348
|
spans = @spans.dup
|
|
313
349
|
@spans = []
|
|
350
|
+
@flushed = true
|
|
314
351
|
|
|
315
352
|
spans = yield(spans) if block_given?
|
|
316
353
|
|
|
@@ -318,6 +355,29 @@ module Datadog
|
|
|
318
355
|
build_trace(spans, !finished)
|
|
319
356
|
end
|
|
320
357
|
|
|
358
|
+
# When automatic context management is disabled (@auto_finish is false),
|
|
359
|
+
# this method finishes the trace, marking it as completed.
|
|
360
|
+
#
|
|
361
|
+
# The trace will **not** automatically finish when its local root span
|
|
362
|
+
# when @auto_finish is false, thus calling this method is mandatory
|
|
363
|
+
# in such scenario.
|
|
364
|
+
#
|
|
365
|
+
# Unfinished spans are discarded.
|
|
366
|
+
#
|
|
367
|
+
# This method is idempotent and safe to call after the trace is finished.
|
|
368
|
+
# It is also a no-op when @auto_finish is true, to prevent misuse.
|
|
369
|
+
#
|
|
370
|
+
# @!visibility private
|
|
371
|
+
def finish!
|
|
372
|
+
return if @auto_finish || finished?
|
|
373
|
+
|
|
374
|
+
@finished = true
|
|
375
|
+
@active_span = nil
|
|
376
|
+
@active_span_count = 0
|
|
377
|
+
|
|
378
|
+
events.trace_finished.publish(self)
|
|
379
|
+
end
|
|
380
|
+
|
|
321
381
|
# Returns a set of trace headers used for continuing traces.
|
|
322
382
|
# Used for propagation across execution contexts.
|
|
323
383
|
# Data should reflect the active state of the trace.
|
|
@@ -328,6 +388,7 @@ module Datadog
|
|
|
328
388
|
span_id = @active_span&.id
|
|
329
389
|
span_id ||= @parent_span_id unless finished?
|
|
330
390
|
# sample the trace_operation with the tracer
|
|
391
|
+
@propagated = true
|
|
331
392
|
events.trace_propagated.publish(self)
|
|
332
393
|
|
|
333
394
|
TraceDigest.new(
|
|
@@ -396,16 +457,28 @@ module Datadog
|
|
|
396
457
|
include Tracing::Events
|
|
397
458
|
|
|
398
459
|
attr_reader \
|
|
460
|
+
:span_before_finish,
|
|
399
461
|
:span_before_start,
|
|
400
462
|
:span_finished,
|
|
401
463
|
:trace_finished,
|
|
402
|
-
:trace_propagated
|
|
464
|
+
:trace_propagated,
|
|
465
|
+
:trace_resource_change
|
|
403
466
|
|
|
404
467
|
def initialize
|
|
468
|
+
@span_before_finish = SpanBeforeFinish.new
|
|
405
469
|
@span_before_start = SpanBeforeStart.new
|
|
406
470
|
@span_finished = SpanFinished.new
|
|
407
471
|
@trace_finished = TraceFinished.new
|
|
408
472
|
@trace_propagated = TracePropagated.new
|
|
473
|
+
@trace_resource_change = TraceResourceChange.new
|
|
474
|
+
end
|
|
475
|
+
|
|
476
|
+
# Triggered just before a span is finalized, mirroring SpanOperation::Events::BeforeFinish.
|
|
477
|
+
# Subscribers can still mutate tags on the SpanOperation at this point.
|
|
478
|
+
class SpanBeforeFinish < Tracing::Event
|
|
479
|
+
def initialize
|
|
480
|
+
super(:span_before_finish)
|
|
481
|
+
end
|
|
409
482
|
end
|
|
410
483
|
|
|
411
484
|
# Triggered before a span starts.
|
|
@@ -445,6 +518,14 @@ module Datadog
|
|
|
445
518
|
subscribe(&block)
|
|
446
519
|
end
|
|
447
520
|
end
|
|
521
|
+
|
|
522
|
+
# Triggered when the resource name is set
|
|
523
|
+
# This is used to reconsider trace sampling on resource name change
|
|
524
|
+
class TraceResourceChange < Tracing::Event
|
|
525
|
+
def initialize
|
|
526
|
+
super(:trace_resource_change)
|
|
527
|
+
end
|
|
528
|
+
end
|
|
448
529
|
end
|
|
449
530
|
|
|
450
531
|
private
|
|
@@ -460,7 +541,7 @@ module Datadog
|
|
|
460
541
|
|
|
461
542
|
@active_span = span_op
|
|
462
543
|
|
|
463
|
-
|
|
544
|
+
set_local_root_span!(span_op)
|
|
464
545
|
end
|
|
465
546
|
|
|
466
547
|
def deactivate_span!(span_op)
|
|
@@ -480,9 +561,22 @@ module Datadog
|
|
|
480
561
|
# Publish :span_before_start event
|
|
481
562
|
events.span_before_start.publish(span_op, self)
|
|
482
563
|
rescue => e
|
|
483
|
-
logger.debug { "Error starting span on trace: #{e} Backtrace: #{e.backtrace.first(3)}" }
|
|
564
|
+
logger.debug { "Error starting span on trace: #{e.class}: #{e.message} Backtrace: #{e.backtrace.first(3)}" }
|
|
484
565
|
end
|
|
485
566
|
|
|
567
|
+
def before_finish_span(span_op)
|
|
568
|
+
# Publish :span_before_finish event
|
|
569
|
+
events.span_before_finish.publish(span_op, self)
|
|
570
|
+
rescue => e
|
|
571
|
+
logger.debug { "Error in before_finish_span on trace: #{e.class}: #{e.message} Backtrace: #{e.backtrace.first(3)}" }
|
|
572
|
+
end
|
|
573
|
+
|
|
574
|
+
# For traces with automatic context management (auto_finish),
|
|
575
|
+
# when the local root span finishes, the trace also finishes.
|
|
576
|
+
# The trace cannot receive new spans after finished.
|
|
577
|
+
#
|
|
578
|
+
# Without auto_finish, the trace can still receive spans
|
|
579
|
+
# until explicitly finished.
|
|
486
580
|
def finish_span(span, span_op, parent)
|
|
487
581
|
# Save finished span & root span
|
|
488
582
|
@spans << span unless span.nil?
|
|
@@ -490,8 +584,9 @@ module Datadog
|
|
|
490
584
|
# Deactivate the span, re-activate parent.
|
|
491
585
|
deactivate_span!(span_op)
|
|
492
586
|
|
|
493
|
-
#
|
|
494
|
-
|
|
587
|
+
# Finish if the local root span is finished and automatic
|
|
588
|
+
# context management is enabled.
|
|
589
|
+
@finished = true if span_op == root_span && @auto_finish
|
|
495
590
|
|
|
496
591
|
# Update active span count
|
|
497
592
|
@active_span_count -= 1
|
|
@@ -502,11 +597,11 @@ module Datadog
|
|
|
502
597
|
# Publish :trace_finished event
|
|
503
598
|
events.trace_finished.publish(self) if finished?
|
|
504
599
|
rescue => e
|
|
505
|
-
logger.debug { "Error finishing span on trace: #{e} Backtrace: #{e.backtrace.first(3)}" }
|
|
600
|
+
logger.debug { "Error finishing span on trace: #{e.class}: #{e.message} Backtrace: #{e.backtrace.first(3)}" }
|
|
506
601
|
end
|
|
507
602
|
|
|
508
|
-
# Track the root
|
|
509
|
-
def
|
|
603
|
+
# Track the root {SpanOperation} object from the current execution context.
|
|
604
|
+
def set_local_root_span!(span)
|
|
510
605
|
return if span.nil? || root_span
|
|
511
606
|
|
|
512
607
|
@root_span = span
|
|
@@ -544,12 +639,24 @@ module Datadog
|
|
|
544
639
|
meta.select { |name, _| name.start_with?(Metadata::Ext::Distributed::TAGS_PREFIX) }
|
|
545
640
|
end
|
|
546
641
|
|
|
642
|
+
def reconsider_rule_sample?
|
|
643
|
+
decision = get_tag(Metadata::Ext::Distributed::TAG_DECISION_MAKER)
|
|
644
|
+
|
|
645
|
+
return false if remote_parent || @propagated || @flushed
|
|
646
|
+
return false unless AUTO_SAMPLING_PRIORITIES.include?(@sampling_priority)
|
|
647
|
+
return false if decision && !RECONSIDERABLE_DECISIONS.include?(decision)
|
|
648
|
+
|
|
649
|
+
true
|
|
650
|
+
end
|
|
651
|
+
|
|
547
652
|
def reset
|
|
548
653
|
@root_span = nil
|
|
549
654
|
@active_span = nil
|
|
550
655
|
@active_span_count = 0
|
|
551
656
|
@finished = false
|
|
552
657
|
@spans = []
|
|
658
|
+
@flushed = false
|
|
659
|
+
@propagated = false
|
|
553
660
|
end
|
|
554
661
|
end
|
|
555
662
|
end
|