Skip to content

Commit ecf3a8a

Browse files
authored
fix: support stable OTel deployment environment (#4148)
1 parent f4c0c7e commit ecf3a8a

6 files changed

Lines changed: 84 additions & 1 deletion

ext/otel_config.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ static bool ddtrace_conf_otel_resource_attributes_special(const char *tag, int l
9393
}
9494

9595
bool ddtrace_conf_otel_resource_attributes_env(zai_env_buffer *buf, bool pre_rinit) {
96-
return ddtrace_conf_otel_resource_attributes_special(ZEND_STRL("deployment.environment"), buf, pre_rinit);
96+
return ddtrace_conf_otel_resource_attributes_special(ZEND_STRL("deployment.environment.name"), buf, pre_rinit)
97+
|| ddtrace_conf_otel_resource_attributes_special(ZEND_STRL("deployment.environment"), buf, pre_rinit);
9798
}
9899

99100
bool ddtrace_conf_otel_resource_attributes_version(zai_env_buffer *buf, bool pre_rinit) {
@@ -124,13 +125,20 @@ bool ddtrace_conf_otel_resource_attributes_tags(zai_env_buffer *buf, bool pre_ri
124125
++cur;
125126
}
126127
key_start = cur + 1;
128+
if (key_end - key == strlen("deployment.environment.name") && memcmp(key, ZEND_STRL("deployment.environment.name")) == 0) {
129+
--cur;
130+
continue;
131+
}
127132
if (key_end - key == strlen("deployment.environment") && memcmp(key, ZEND_STRL("deployment.environment")) == 0) {
133+
--cur;
128134
continue;
129135
}
130136
if (key_end - key == strlen("service.name") && memcmp(key, ZEND_STRL("service.name")) == 0) {
137+
--cur;
131138
continue;
132139
}
133140
if (key_end - key == strlen("service.version") && memcmp(key, ZEND_STRL("service.version")) == 0) {
141+
--cur;
134142
continue;
135143
}
136144
memmove(out, key, cur - key);
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
--TEST--
2+
Test stable OpenTelemetry deployment environment config remapping
3+
--ENV--
4+
OTEL_RESOURCE_ATTRIBUTES=foo=bar,deployment.environment.name=stable,service.name=service,xyz=abc,service.version=1.2.3,baz=qux
5+
--FILE--
6+
<?php
7+
8+
var_dump(ini_get("datadog.env"));
9+
var_dump(ini_get("datadog.service"));
10+
var_dump(ini_get("datadog.version"));
11+
var_dump(ini_get("datadog.tags"));
12+
13+
?>
14+
--EXPECT--
15+
string(6) "stable"
16+
string(7) "service"
17+
string(5) "1.2.3"
18+
string(23) "foo:bar,xyz:abc,baz:qux"
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
--TEST--
2+
Test DD_ENV takes precedence over OpenTelemetry deployment environment attributes
3+
--ENV--
4+
DD_ENV=datadog
5+
OTEL_RESOURCE_ATTRIBUTES=foo=bar,deployment.environment=legacy,deployment.environment.name=stable,baz=qux
6+
--FILE--
7+
<?php
8+
9+
var_dump(ini_get("datadog.env"));
10+
var_dump(ini_get("datadog.tags"));
11+
12+
?>
13+
--EXPECT--
14+
string(7) "datadog"
15+
string(15) "foo:bar,baz:qux"
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
--TEST--
2+
Test stable OpenTelemetry deployment environment as the final resource attribute
3+
--ENV--
4+
OTEL_RESOURCE_ATTRIBUTES=foo=bar,deployment.environment.name=stable
5+
--FILE--
6+
<?php
7+
8+
var_dump(ini_get("datadog.env"));
9+
var_dump(ini_get("datadog.tags"));
10+
11+
?>
12+
--EXPECT--
13+
string(6) "stable"
14+
string(7) "foo:bar"
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
--TEST--
2+
Test stable OpenTelemetry deployment environment takes precedence when listed after legacy
3+
--ENV--
4+
OTEL_RESOURCE_ATTRIBUTES=foo=bar,deployment.environment=legacy,deployment.environment.name=stable,xyz=abc
5+
--FILE--
6+
<?php
7+
8+
var_dump(ini_get("datadog.env"));
9+
var_dump(ini_get("datadog.tags"));
10+
11+
?>
12+
--EXPECT--
13+
string(6) "stable"
14+
string(15) "foo:bar,xyz:abc"
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
--TEST--
2+
Test stable OpenTelemetry deployment environment takes precedence when listed first
3+
--ENV--
4+
OTEL_RESOURCE_ATTRIBUTES=foo=bar,deployment.environment.name=stable,deployment.environment=legacy,xyz=abc
5+
--FILE--
6+
<?php
7+
8+
var_dump(ini_get("datadog.env"));
9+
var_dump(ini_get("datadog.tags"));
10+
11+
?>
12+
--EXPECT--
13+
string(6) "stable"
14+
string(15) "foo:bar,xyz:abc"

0 commit comments

Comments
 (0)