opentelemetry-exporters-datadog 0.1.0 → 0.2.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 +8 -0
- data/README.md +1 -1
- data/lib/opentelemetry/exporters/datadog.rb +0 -5
- data/lib/opentelemetry/exporters/datadog/datadog_probability_sampler.rb +18 -17
- data/lib/opentelemetry/exporters/datadog/datadog_span_processor.rb +2 -2
- data/lib/opentelemetry/exporters/datadog/exporter.rb +4 -13
- data/lib/opentelemetry/exporters/datadog/exporter/span_encoder.rb +41 -8
- data/lib/opentelemetry/exporters/datadog/propagator.rb +7 -7
- data/lib/opentelemetry/exporters/datadog/version.rb +1 -1
- metadata +6 -6
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f7dde9e181d97049cde4959b77b40c51bea98076fa95f0d1f438ef2668c3fa8d
         | 
| 4 | 
            +
              data.tar.gz: 5ee0eb46973deb9e05a1da16f7e7cd4adbf85878ce0f11343b98adcbf2505891
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: '0820577aff95b2743e39449eefe1f9a390e94e234fb282d8398ddacda9b6d943c433021a39bbc6ad39655ac86c870476bd37f5a58f04842765512a2c03da2b82'
         | 
| 7 | 
            +
              data.tar.gz: b820f015106de8c45881ea5d84069cb5310dd6c35a7b592efbfc66f6bbc2e7ac110ba5ec05e32b900ca6d40738f580797a4f1ddbb5a0bfc019958420ba88a127
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -2,7 +2,15 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            ## [Unreleased]
         | 
| 4 4 |  | 
| 5 | 
            +
            ## [0.2.0] - 2020-12-04
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ### Added
         | 
| 8 | 
            +
            - update compatibility for v0.10.0 of opentelemetry-api and opentelemetry-sdk
         | 
| 9 | 
            +
            - add export of resource attributes
         | 
| 10 | 
            +
            - add handling of unified service tags for version and service
         | 
| 11 | 
            +
             | 
| 5 12 | 
             
            ## [0.1.0] - 2020-07-22
         | 
| 13 | 
            +
             | 
| 6 14 | 
             
            ### Added
         | 
| 7 15 | 
             
            - initial release
         | 
| 8 16 | 
             
            - add DatadogSpanProcessor
         | 
    
        data/README.md
    CHANGED
    
    | @@ -136,7 +136,7 @@ You can configure the application to automatically tag your Datadog exported tra | |
| 136 136 | 
             
             - `DD_TAGS`: Custom tags in value pairs separated by `,` (e.g. `layer:api,team:intake`)
         | 
| 137 137 | 
             
                - If `DD_ENV`, `DD_SERVICE` or `DD_VERSION` are set, it will override any respective `env`/`service`/`version` tag defined in `DD_TAGS`.
         | 
| 138 138 | 
             
                - If `DD_ENV`, `DD_SERVICE` or `DD_VERSION` are NOT set, tags defined in `DD_TAGS` will be used to populate `env`/`service`/`version` respectively.
         | 
| 139 | 
            -
             | 
| 139 | 
            +
                - As a fallback, Resource attributes `deployment.environment` `service.name`, and `service.version` will be used to populate `env`/`service`/`version` respectively.
         | 
| 140 140 | 
             
            These values can also be overridden at the trace exporter level:
         | 
| 141 141 |  | 
| 142 142 | 
             
            ```ruby
         | 
| @@ -5,11 +5,6 @@ | |
| 5 5 | 
             
            # This product includes software developed at Datadog (https://www.datadoghq.com/).
         | 
| 6 6 | 
             
            # Copyright 2020 Datadog, Inc.
         | 
| 7 7 |  | 
| 8 | 
            -
            # require_relative './datadog/exporter.rb'
         | 
| 9 | 
            -
            # require_relative './datadog/version.rb'
         | 
| 10 | 
            -
            # require_relative './datadog/datadog_span_processor.rb'
         | 
| 11 | 
            -
            # require_relative './datadog/propagator.rb'
         | 
| 12 | 
            -
            # require_relative './datadog_probability_sampler'
         | 
| 13 8 | 
             
            require 'opentelemetry/exporters/datadog/exporter'
         | 
| 14 9 | 
             
            require 'opentelemetry/exporters/datadog/version'
         | 
| 15 10 | 
             
            require 'opentelemetry/exporters/datadog/datadog_span_processor'
         | 
| @@ -5,7 +5,7 @@ | |
| 5 5 | 
             
            # This product includes software developed at Datadog (https://www.datadoghq.com/).
         | 
| 6 6 | 
             
            # Copyright 2020 Datadog, Inc.
         | 
| 7 7 |  | 
| 8 | 
            -
            require 'opentelemetry/sdk/trace/samplers/ | 
| 8 | 
            +
            require 'opentelemetry/sdk/trace/samplers/trace_id_ratio_based'
         | 
| 9 9 | 
             
            require 'opentelemetry/sdk/trace/samplers/decision'
         | 
| 10 10 | 
             
            require 'opentelemetry/sdk/trace/samplers/result'
         | 
| 11 11 |  | 
| @@ -13,22 +13,29 @@ module OpenTelemetry | |
| 13 13 | 
             
              module Exporters
         | 
| 14 14 | 
             
                module Datadog
         | 
| 15 15 | 
             
                  # Implements sampling based on a probability but records all spans regardless.
         | 
| 16 | 
            -
                  class DatadogProbabilitySampler | 
| 17 | 
            -
                     | 
| 18 | 
            -
                    RECORD = OpenTelemetry::SDK::Trace::Samplers::Result.new(decision: OpenTelemetry::SDK::Trace::Samplers::Decision::RECORD)
         | 
| 16 | 
            +
                  class DatadogProbabilitySampler
         | 
| 17 | 
            +
                    attr_reader :description
         | 
| 19 18 |  | 
| 20 | 
            -
                     | 
| 19 | 
            +
                    def initialize(probability)
         | 
| 20 | 
            +
                      @probability = probability
         | 
| 21 | 
            +
                      @id_upper_bound = (probability * (2**64 - 1)).ceil
         | 
| 22 | 
            +
                      @description = format('TraceIdRatioBased{%.6f}', probability)
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                    def sample?(trace_id)
         | 
| 26 | 
            +
                      @probability == 1.0 || trace_id[8, 8].unpack1('Q>') < @id_upper_bound
         | 
| 27 | 
            +
                    end
         | 
| 21 28 |  | 
| 22 29 | 
             
                    # @api private
         | 
| 23 30 | 
             
                    #
         | 
| 24 31 | 
             
                    # See {Samplers}.
         | 
| 25 32 | 
             
                    def should_sample?(trace_id:, parent_context:, links:, name:, kind:, attributes:)
         | 
| 26 33 | 
             
                      # Ignored for sampling decision: links, name, kind, attributes.
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                      if sample?(trace_id | 
| 29 | 
            -
                         | 
| 34 | 
            +
                      tracestate = OpenTelemetry::Trace.current_span(parent_context).context.tracestate
         | 
| 35 | 
            +
                      if sample?(trace_id)
         | 
| 36 | 
            +
                        OpenTelemetry::SDK::Trace::Samplers::Result.new(decision: OpenTelemetry::SDK::Trace::Samplers::Decision::RECORD_AND_SAMPLE, tracestate: tracestate)
         | 
| 30 37 | 
             
                      else
         | 
| 31 | 
            -
                         | 
| 38 | 
            +
                        OpenTelemetry::SDK::Trace::Samplers::Result.new(decision: OpenTelemetry::SDK::Trace::Samplers::Decision::RECORD_ONLY, tracestate: tracestate)
         | 
| 32 39 | 
             
                      end
         | 
| 33 40 | 
             
                    end
         | 
| 34 41 |  | 
| @@ -40,16 +47,10 @@ module OpenTelemetry | |
| 40 47 | 
             
                    def self.default_with_probability(probability = 1.0)
         | 
| 41 48 | 
             
                      raise ArgumentError, 'probability must be in range [0.0, 1.0]' unless (0.0..1.0).include?(probability)
         | 
| 42 49 |  | 
| 43 | 
            -
                      new(probability | 
| 44 | 
            -
                          ignore_parent: false,
         | 
| 45 | 
            -
                          apply_to_remote_parent: :root_spans_and_remote_parent,
         | 
| 46 | 
            -
                          apply_to_all_spans: :root_spans_and_remote_parent)
         | 
| 50 | 
            +
                      new(probability)
         | 
| 47 51 | 
             
                    end
         | 
| 48 52 |  | 
| 49 | 
            -
                    DEFAULT = new(1.0 | 
| 50 | 
            -
                                  ignore_parent: false,
         | 
| 51 | 
            -
                                  apply_to_remote_parent: :root_spans_and_remote_parent,
         | 
| 52 | 
            -
                                  apply_to_all_spans: :root_spans_and_remote_parent)
         | 
| 53 | 
            +
                    DEFAULT = new(1.0)
         | 
| 53 54 | 
             
                  end
         | 
| 54 55 | 
             
                end
         | 
| 55 56 | 
             
              end
         | 
| @@ -53,7 +53,7 @@ module OpenTelemetry | |
| 53 53 |  | 
| 54 54 | 
             
                    # datadog trace-agent endpoint requires a complete trace to be sent
         | 
| 55 55 | 
             
                    # threadsafe may block on lock
         | 
| 56 | 
            -
                    def on_start(span)
         | 
| 56 | 
            +
                    def on_start(span, _parent_context)
         | 
| 57 57 | 
             
                      context = span.context
         | 
| 58 58 | 
             
                      trace_id = context.trace_id
         | 
| 59 59 |  | 
| @@ -135,7 +135,7 @@ module OpenTelemetry | |
| 135 135 |  | 
| 136 136 | 
             
                    # shuts the consumer thread down and flushes the current accumulated buffer
         | 
| 137 137 | 
             
                    # will block until the thread is finished
         | 
| 138 | 
            -
                    def shutdown
         | 
| 138 | 
            +
                    def shutdown(timeout: nil)
         | 
| 139 139 | 
             
                      lock do
         | 
| 140 140 | 
             
                        @keep_running = false
         | 
| 141 141 | 
             
                        @condition.signal
         | 
| @@ -7,9 +7,8 @@ | |
| 7 7 |  | 
| 8 8 | 
             
            require 'uri'
         | 
| 9 9 | 
             
            require 'ddtrace'
         | 
| 10 | 
            -
            require 'opentelemetry | 
| 10 | 
            +
            require 'opentelemetry'
         | 
| 11 11 | 
             
            require 'opentelemetry/exporters/datadog/exporter/span_encoder'
         | 
| 12 | 
            -
            # require_relative './exporter/span_encoder.rb'
         | 
| 13 12 |  | 
| 14 13 | 
             
            module OpenTelemetry
         | 
| 15 14 | 
             
              module Exporters
         | 
| @@ -22,16 +21,8 @@ module OpenTelemetry | |
| 22 21 | 
             
                  class Exporter
         | 
| 23 22 | 
             
                    DEFAULT_AGENT_URL = 'http://localhost:8126'
         | 
| 24 23 | 
             
                    DEFAULT_SERVICE_NAME = 'my_service'
         | 
| 25 | 
            -
                    SUCCESS =  | 
| 26 | 
            -
             | 
| 27 | 
            -
                              rescue NameError
         | 
| 28 | 
            -
                                0
         | 
| 29 | 
            -
                              end
         | 
| 30 | 
            -
                    FAILURE = begin
         | 
| 31 | 
            -
                                OpenTelemetry::SDK::Trace::Export::FAILURE
         | 
| 32 | 
            -
                              rescue NameError
         | 
| 33 | 
            -
                                1
         | 
| 34 | 
            -
                              end
         | 
| 24 | 
            +
                    SUCCESS = 0
         | 
| 25 | 
            +
                    FAILURE = 1
         | 
| 35 26 | 
             
                    private_constant(:SUCCESS, :FAILURE)
         | 
| 36 27 |  | 
| 37 28 | 
             
                    def initialize(service_name: nil, agent_url: nil, env: nil, version: nil, tags: nil)
         | 
| @@ -68,7 +59,7 @@ module OpenTelemetry | |
| 68 59 |  | 
| 69 60 | 
             
                    # Called when {TracerProvider#shutdown} is called, if this exporter is
         | 
| 70 61 | 
             
                    # registered to a {TracerProvider} object.
         | 
| 71 | 
            -
                    def shutdown
         | 
| 62 | 
            +
                    def shutdown(timeout: nil)
         | 
| 72 63 | 
             
                      @shutdown = true
         | 
| 73 64 | 
             
                    end
         | 
| 74 65 |  | 
| @@ -32,6 +32,9 @@ module OpenTelemetry | |
| 32 32 | 
             
                      ORIGIN_REGEX = /#{DD_ORIGIN}\=(.*?)($|,)/.freeze
         | 
| 33 33 | 
             
                      PROBABILITY_REGEX = /\d[.]\d{1,6}/.freeze
         | 
| 34 34 | 
             
                      TRUNCATION_HELPER = ::Datadog::DistributedTracing::Headers::Headers.new({})
         | 
| 35 | 
            +
                      RESOURCE_SERVICE_TAG = 'service.name'
         | 
| 36 | 
            +
                      RESOURCE_VERSION_TAG = 'service.version'
         | 
| 37 | 
            +
                      RESOURCE_ENVIRONMENT_TAG = 'deployment.environment'
         | 
| 35 38 |  | 
| 36 39 | 
             
                      INSTRUMENTATION_SPAN_TYPES = {
         | 
| 37 40 | 
             
                        'OpenTelemetry::Instrumentation::Ethon' => ::Datadog::Ext::HTTP::TYPE_OUTBOUND,
         | 
| @@ -56,20 +59,23 @@ module OpenTelemetry | |
| 56 59 | 
             
                          span_type = get_span_type(span)
         | 
| 57 60 | 
             
                          span_name = get_span_name(span)
         | 
| 58 61 |  | 
| 62 | 
            +
                          # this excludes service.name, which we get seperately
         | 
| 63 | 
            +
                          span_resource_tags, resource_service_name, resource_environment_name, resource_version_name = get_resource_tags_and_service(span)
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                          default_tags_including_resource = default_tags.merge(span_resource_tags)
         | 
| 59 66 | 
             
                          datadog_span = ::Datadog::Span.new(nil, span_name,
         | 
| 60 | 
            -
                                                             service: service,
         | 
| 67 | 
            +
                                                             service: resource_service_name || service,
         | 
| 61 68 | 
             
                                                             trace_id: trace_id,
         | 
| 62 69 | 
             
                                                             parent_id: parent_id,
         | 
| 63 70 | 
             
                                                             resource: get_resource(span),
         | 
| 64 71 | 
             
                                                             span_type: span_type)
         | 
| 65 | 
            -
             | 
| 66 72 | 
             
                          # span_id is autogenerated so have to override
         | 
| 67 73 | 
             
                          datadog_span.span_id = span_id
         | 
| 68 74 | 
             
                          datadog_span.start_time = span.start_timestamp
         | 
| 69 75 | 
             
                          datadog_span.end_time = span.end_timestamp
         | 
| 70 76 |  | 
| 71 77 | 
             
                          # set span.error, span tag error.msg/error.type
         | 
| 72 | 
            -
                          if span.status && span.status. | 
| 78 | 
            +
                          if span.status && !span.status.ok?
         | 
| 73 79 | 
             
                            datadog_span.status = 1
         | 
| 74 80 |  | 
| 75 81 | 
             
                            exception_type, exception_msg, exception_stack = get_exception_info(span)
         | 
| @@ -82,14 +88,14 @@ module OpenTelemetry | |
| 82 88 | 
             
                          end
         | 
| 83 89 |  | 
| 84 90 | 
             
                          # set default tags
         | 
| 85 | 
            -
                           | 
| 86 | 
            -
                            datadog_span.set_tag(attribute,  | 
| 91 | 
            +
                          default_tags_including_resource&.keys&.each do |attribute|
         | 
| 92 | 
            +
                            datadog_span.set_tag(attribute, default_tags_including_resource[attribute])
         | 
| 87 93 | 
             
                          end
         | 
| 88 94 |  | 
| 89 95 | 
             
                          origin = get_origin_string(span)
         | 
| 90 96 | 
             
                          datadog_span.set_tag(DD_ORIGIN, origin) if origin && parent_id.zero?
         | 
| 91 | 
            -
                          datadog_span.set_tag(VERSION_KEY, version) if version && parent_id.zero?
         | 
| 92 | 
            -
                          datadog_span.set_tag(ENV_KEY, env) if env
         | 
| 97 | 
            +
                          datadog_span.set_tag(VERSION_KEY, resource_version_name || version) if (resource_version_name || version) && parent_id.zero?
         | 
| 98 | 
            +
                          datadog_span.set_tag(ENV_KEY, resource_environment_name || env) if resource_version_name || env
         | 
| 93 99 |  | 
| 94 100 | 
             
                          # set tags - takes precedence over env vars
         | 
| 95 101 | 
             
                          span.attributes&.keys&.each do |attribute|
         | 
| @@ -103,7 +109,6 @@ module OpenTelemetry | |
| 103 109 | 
             
                          elsif sampling_rate
         | 
| 104 110 | 
             
                            datadog_span.set_metric(SAMPLE_RATE_METRIC_KEY, sampling_rate)
         | 
| 105 111 | 
             
                          end
         | 
| 106 | 
            -
             | 
| 107 112 | 
             
                          datadog_spans << datadog_span
         | 
| 108 113 | 
             
                        end
         | 
| 109 114 |  | 
| @@ -183,6 +188,34 @@ module OpenTelemetry | |
| 183 188 | 
             
                        span.name
         | 
| 184 189 | 
             
                      end
         | 
| 185 190 |  | 
| 191 | 
            +
                      def get_resource_tags_and_service(span)
         | 
| 192 | 
            +
                        resource_tags = {}
         | 
| 193 | 
            +
                        service_name = nil
         | 
| 194 | 
            +
                        environment_name = nil
         | 
| 195 | 
            +
                        version_name = nil
         | 
| 196 | 
            +
                        # this is open to change in new versions so being extra defensive here
         | 
| 197 | 
            +
                        return resource_tags unless (resource_attributes = begin
         | 
| 198 | 
            +
                                                                             span.resource.attribute_enumerator.to_h
         | 
| 199 | 
            +
                                                                           rescue StandardError
         | 
| 200 | 
            +
                                                                             nil
         | 
| 201 | 
            +
                                                                           end)
         | 
| 202 | 
            +
             | 
| 203 | 
            +
                        # grab service name seperately since it has significance
         | 
| 204 | 
            +
                        resource_attributes.each do |rattribute_key, rattribute_value|
         | 
| 205 | 
            +
                          if rattribute_key == RESOURCE_SERVICE_TAG
         | 
| 206 | 
            +
                            service_name = rattribute_value
         | 
| 207 | 
            +
                          elsif rattribute_key == RESOURCE_ENVIRONMENT_TAG
         | 
| 208 | 
            +
                            environment_name = rattribute_value
         | 
| 209 | 
            +
                          elsif rattribute_key == RESOURCE_VERSION_TAG
         | 
| 210 | 
            +
                            version_name = rattribute_value
         | 
| 211 | 
            +
                          else
         | 
| 212 | 
            +
                            resource_tags[rattribute_key] = rattribute_value
         | 
| 213 | 
            +
                          end
         | 
| 214 | 
            +
                        end
         | 
| 215 | 
            +
             | 
| 216 | 
            +
                        [resource_tags, service_name, environment_name, version_name]
         | 
| 217 | 
            +
                      end
         | 
| 218 | 
            +
             | 
| 186 219 | 
             
                      def get_origin_string(span)
         | 
| 187 220 | 
             
                        tracestate = begin
         | 
| 188 221 | 
             
                                       span.tracestate
         | 
| @@ -4,7 +4,7 @@ | |
| 4 4 | 
             
            #
         | 
| 5 5 | 
             
            # SPDX-License-Identifier: Apache-2.0
         | 
| 6 6 |  | 
| 7 | 
            -
            require 'opentelemetry | 
| 7 | 
            +
            require 'opentelemetry'
         | 
| 8 8 | 
             
            require 'opentelemetry/context/propagation'
         | 
| 9 9 | 
             
            require 'ddtrace/distributed_tracing/headers/headers'
         | 
| 10 10 | 
             
            require 'ddtrace/distributed_tracing/headers/helpers'
         | 
| @@ -24,13 +24,13 @@ module OpenTelemetry | |
| 24 24 | 
             
                    DD_ORIGIN = '_dd_origin'
         | 
| 25 25 | 
             
                    ORIGIN_REGEX = /#{DD_ORIGIN}\=(.*?)($|,)/.freeze
         | 
| 26 26 | 
             
                    DEFAULT_INJECTORS = [
         | 
| 27 | 
            -
                      OpenTelemetry::Trace::Propagation::TraceContext. | 
| 28 | 
            -
                      OpenTelemetry:: | 
| 27 | 
            +
                      OpenTelemetry::Trace::Propagation::TraceContext.text_map_injector,
         | 
| 28 | 
            +
                      OpenTelemetry::Baggage::Propagation.text_map_injector
         | 
| 29 29 | 
             
                    ].freeze
         | 
| 30 30 |  | 
| 31 31 | 
             
                    DEFAULT_EXTRACTORS = [
         | 
| 32 32 | 
             
                      OpenTelemetry::Trace::Propagation::TraceContext.rack_extractor,
         | 
| 33 | 
            -
                      OpenTelemetry:: | 
| 33 | 
            +
                      OpenTelemetry::Baggage::Propagation.rack_extractor
         | 
| 34 34 | 
             
                    ].freeze
         | 
| 35 35 |  | 
| 36 36 | 
             
                    # Returns a new Propagator
         | 
| @@ -92,7 +92,8 @@ module OpenTelemetry | |
| 92 92 | 
             
                                                            tracestate: tracestate,
         | 
| 93 93 | 
             
                                                            remote: true)
         | 
| 94 94 |  | 
| 95 | 
            -
                       | 
| 95 | 
            +
                      span = Trace::Span.new(span_context: span_context)
         | 
| 96 | 
            +
                      Trace.context_with_span(span, parent_context: context)
         | 
| 96 97 | 
             
                    rescue StandardError => e
         | 
| 97 98 | 
             
                      OpenTelemetry.logger.debug("error extracting datadog propagation, #{e.message}")
         | 
| 98 99 | 
             
                      context
         | 
| @@ -116,8 +117,7 @@ module OpenTelemetry | |
| 116 117 | 
             
                    end
         | 
| 117 118 |  | 
| 118 119 | 
             
                    def span_context_from(context)
         | 
| 119 | 
            -
                       | 
| 120 | 
            -
                        context[Trace::Propagation::ContextKeys.extracted_span_context_key]
         | 
| 120 | 
            +
                      OpenTelemetry::Trace.current_span(context).context
         | 
| 121 121 | 
             
                    end
         | 
| 122 122 |  | 
| 123 123 | 
             
                    def get_origin_string(tracestate)
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: opentelemetry-exporters-datadog
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Datadog, Inc.
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2020- | 
| 11 | 
            +
            date: 2020-12-04 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: ddtrace
         | 
| @@ -30,28 +30,28 @@ dependencies: | |
| 30 30 | 
             
                requirements:
         | 
| 31 31 | 
             
                - - "~>"
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version:  | 
| 33 | 
            +
                    version: 0.10.0
         | 
| 34 34 | 
             
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 38 | 
             
                - - "~>"
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version:  | 
| 40 | 
            +
                    version: 0.10.0
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 42 | 
             
              name: opentelemetry-sdk
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 44 | 
             
                requirements:
         | 
| 45 45 | 
             
                - - "~>"
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version:  | 
| 47 | 
            +
                    version: 0.10.0
         | 
| 48 48 | 
             
              type: :runtime
         | 
| 49 49 | 
             
              prerelease: false
         | 
| 50 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 52 | 
             
                - - "~>"
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version:  | 
| 54 | 
            +
                    version: 0.10.0
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 56 | 
             
              name: bundler
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         |