Module: Datadog::Core::Environment::Identity
- Defined in:
- lib/datadog/core/environment/identity.rb,
sig/datadog/core/environment/identity.rbs
Overview
For runtime identity
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
-
.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).
- .id ⇒ Object
- .lang ⇒ Object
- .lang_engine ⇒ Object
- .lang_interpreter ⇒ Object
- .lang_platform ⇒ Object
- .lang_version ⇒ Object
- .parent_runtime_id ⇒ Object
- .pid ⇒ Object
- .root_runtime_id ⇒ Object
- .runtime_propagation_envs ⇒ Object
Instance Method Summary collapse
- #self?.gem_datadog_version ⇒ ::String
- #self?.gem_datadog_version_semver2 ⇒ ::String
- #self?.id ⇒ ::String
- #self?.lang ⇒ ::String
- #self?.lang_engine ⇒ ::String
- #self?.lang_interpreter ⇒ ::String
- #self?.lang_platform ⇒ ::String
- #self?.lang_version ⇒ ::String
- #self?.parent_runtime_id ⇒ ::String?
- #self?.root_runtime_id ⇒ ::String?
- #self?.runtime_propagation_envs ⇒ ::Hash[::String, ::String]
Class Method Details
.gem_datadog_version ⇒ Object
Returns datadog gem version, rubygems-style
75 76 77 |
# File 'lib/datadog/core/environment/identity.rb', line 75 def gem_datadog_version Core::Environment::Ext::GEM_DATADOG_VERSION end |
.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 # Order matters: capture @id before overwriting @parent_runtime_id = @id @root_runtime_id ||= @id @id = ::SecureRandom.uuid.freeze end @id end |
.lang ⇒ Object
54 55 56 |
# File 'lib/datadog/core/environment/identity.rb', line 54 def lang Core::Environment::Ext::LANG end |
.lang_engine ⇒ Object
58 59 60 |
# File 'lib/datadog/core/environment/identity.rb', line 58 def lang_engine Core::Environment::Ext::LANG_ENGINE end |
.lang_interpreter ⇒ Object
62 63 64 |
# File 'lib/datadog/core/environment/identity.rb', line 62 def lang_interpreter Core::Environment::Ext::LANG_INTERPRETER end |
.lang_platform ⇒ Object
66 67 68 |
# File 'lib/datadog/core/environment/identity.rb', line 66 def lang_platform Core::Environment::Ext::LANG_PLATFORM end |
.lang_version ⇒ Object
70 71 72 |
# File 'lib/datadog/core/environment/identity.rb', line 70 def lang_version Core::Environment::Ext::LANG_VERSION end |
.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
46 47 48 |
# File 'lib/datadog/core/environment/identity.rb', line 46 def runtime_propagation_envs {ENV_ROOT_SESSION_ID => root_runtime_id || id, ENV_PARENT_SESSION_ID => id}.freeze end |
Instance Method Details
#self?.gem_datadog_version ⇒ ::String
25 |
# File 'sig/datadog/core/environment/identity.rbs', line 25
def self?.gem_datadog_version: () -> ::String
|
#self?.gem_datadog_version_semver2 ⇒ ::String
27 |
# File 'sig/datadog/core/environment/identity.rbs', line 27
def self?.gem_datadog_version_semver2: () -> ::String
|
#self?.id ⇒ ::String
7 |
# File 'sig/datadog/core/environment/identity.rbs', line 7
def self?.id: () -> ::String
|
#self?.lang ⇒ ::String
15 |
# File 'sig/datadog/core/environment/identity.rbs', line 15
def self?.lang: () -> ::String
|
#self?.lang_engine ⇒ ::String
17 |
# File 'sig/datadog/core/environment/identity.rbs', line 17
def self?.lang_engine: () -> ::String
|
#self?.lang_interpreter ⇒ ::String
19 |
# File 'sig/datadog/core/environment/identity.rbs', line 19
def self?.lang_interpreter: () -> ::String
|
#self?.lang_platform ⇒ ::String
21 |
# File 'sig/datadog/core/environment/identity.rbs', line 21
def self?.lang_platform: () -> ::String
|
#self?.lang_version ⇒ ::String
23 |
# File 'sig/datadog/core/environment/identity.rbs', line 23
def self?.lang_version: () -> ::String
|
#self?.parent_runtime_id ⇒ ::String?
11 |
# File 'sig/datadog/core/environment/identity.rbs', line 11
def self?.parent_runtime_id: () -> ::String?
|
#self?.root_runtime_id ⇒ ::String?
9 |
# File 'sig/datadog/core/environment/identity.rbs', line 9
def self?.root_runtime_id: () -> ::String?
|
#self?.runtime_propagation_envs ⇒ ::Hash[::String, ::String]
13 |
# File 'sig/datadog/core/environment/identity.rbs', line 13
def self?.runtime_propagation_envs: () -> ::Hash[::String, ::String]
|