Sha256: 221f40b9fe524c3ecd1c033b9bb7b3067e6f2ec98e8e77d3d7b699567da2dd32

Contents?: true

Size: 830 Bytes

Versions: 6

Compression:

Stored size: 830 Bytes

Contents

module Datadog
  # Utils contains low-level utilities, typically to provide pseudo-random trace IDs.
  module Utils
    # We use a custom random number generator because we want no interference
    # with the default one. Using the default prng, we could break code that
    # would rely on srand/rand sequences.

    # Return a span id
    def self.next_id
      reset! if was_forked?

      @rnd.rand(Datadog::Span::MAX_ID)
    end

    def self.reset!
      @pid = Process.pid
      @rnd = Random.new
    end

    def self.was_forked?
      Process.pid != @pid
    end

    def self.truncate(value, size, omission = '...')
      string = value.to_s

      return string if string.size <= size

      string.slice(0, size - omission.size) + omission
    end

    private_class_method :reset!, :was_forked?

    reset!
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ddtrace-0.11.0.beta2 lib/ddtrace/utils.rb
ddtrace-0.11.0.beta1 lib/ddtrace/utils.rb
ddtrace-0.10.0 lib/ddtrace/utils.rb
ddtrace-0.9.2 lib/ddtrace/utils.rb
ddtrace-0.9.1 lib/ddtrace/utils.rb
ddtrace-0.9.0 lib/ddtrace/utils.rb