Module: Datadog::Core::Environment::Identity
- Extended by:
- Utils::Forking
- Defined in:
- lib/datadog/core/environment/identity.rb
Overview
Constant Summary
collapse
- ENV_ROOT_SESSION_ID =
"_DD_ROOT_RB_SESSION_ID"
- ENV_PARENT_SESSION_ID =
"_DD_PARENT_RB_SESSION_ID"
Class Method Summary
collapse
after_fork!, extended, fork_pid, forked?, included, update_fork_pid!
Class Method Details
.gem_datadog_version ⇒ Object
Returns datadog gem version, rubygems-style
.gem_datadog_version_semver2 ⇒ Object
Returns the tracer version in SemVer-2 form (https://semver.org/spec/v2.0.0.html).
Converts the RubyGems-style version returned by gem_datadog_version
(dot-separated prerelease/build segments, e.g. "2.34.0.dev") into the
SemVer-2 form expected by cross-language Datadog consumers (hyphen-separated
prerelease, "+" build metadata, e.g. "2.34.0-dev").
Called by reporters that emit a tracer version on the wire and must match
the format used by other-language tracers:
- process discovery memfd (
Core::ProcessDiscovery.get_metadata → tracer_version)
- telemetry payloads (
Core::Telemetry::Request#application)
- remote configuration client identification (
Core::Remote::Client#tracer_version)
Use gem_datadog_version (not this method) when a RubyGems-style string is
required (e.g. gem-internal contexts, gemspec interop).
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# File 'lib/datadog/core/environment/identity.rb', line 94
def gem_datadog_version_semver2
major, minor, patch, rest = gem_datadog_version.split(".", 4)
semver = "#{major}.#{minor}.#{patch}"
return semver unless rest
pre = ""
build = ""
rest.split(".").tap do |segments|
if segments.length >= 4
pre = "-#{segments.shift}"
build = "+#{segments.join(".")}"
elsif segments.length == 1
pre = "-#{segments.shift}"
else
build = "+#{segments.join(".")}"
end
end
semver + pre + build
end
|
.id ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/datadog/core/environment/identity.rb', line 25
def id
@id ||= ::SecureRandom.uuid.freeze
after_fork! do
@parent_runtime_id = @id
@root_runtime_id ||= @id
@id = ::SecureRandom.uuid.freeze
end
@id
end
|
.lang_interpreter ⇒ Object
.parent_runtime_id ⇒ Object
42
43
44
|
# File 'lib/datadog/core/environment/identity.rb', line 42
def parent_runtime_id
@parent_runtime_id
end
|
.pid ⇒ Object
50
51
52
|
# File 'lib/datadog/core/environment/identity.rb', line 50
def pid
::Process.pid
end
|
.root_runtime_id ⇒ Object
38
39
40
|
# File 'lib/datadog/core/environment/identity.rb', line 38
def root_runtime_id
@root_runtime_id
end
|
.runtime_propagation_envs ⇒ Object