Module: Datadog::Tracing::Utils
- Extended by:
- Core::Utils::Forking
- Defined in:
- lib/datadog/tracing/utils.rb
Overview
Utils contains low-level tracing utility functions.
Defined Under Namespace
Modules: TraceId
Constant Summary collapse
- RUBY_MAX_ID =
The max value for a Span identifier. Span and trace identifiers should be strictly positive and strictly inferior to this limit.
Limited to
2<<62-1positive integers, as Ruby is able to represent such numbers "inline", inside aVALUEscalar, thus not requiring memory allocation.The range of IDs also has to consider portability across different languages and platforms.
(1 << 62) - 1
- RUBY_ID_RANGE =
Excludes zero from possible values
(1..RUBY_MAX_ID).freeze
- EXTERNAL_MAX_ID =
While we only generate 63-bit integers due to limitations in other languages, we support parsing 64-bit integers for distributed tracing since an upstream system may generate one
1 << 64
Class Method Summary collapse
-
.next_id ⇒ Object
Return a randomly generated integer, valid as a Span ID or Trace ID.
Methods included from Core::Utils::Forking
after_fork!, extended, fork_pid, forked?, included, update_fork_pid!
Class Method Details
.next_id ⇒ Object
Return a randomly generated integer, valid as a Span ID or Trace ID. This method is thread-safe and fork-safe.
35 36 37 38 |
# File 'lib/datadog/tracing/utils.rb', line 35 def self.next_id after_fork! { reset! } id_rng.rand(RUBY_ID_RANGE) end |