projects/aports·blob master · refs

163 lines · 5.1 KiB

1Patch-Source: https://github.com/open-telemetry/opentelemetry-cpp/pull/4573
2--
3From 758e8ddfb040bee08ec3e12a039eb39fd3c38654 Mon Sep 17 00:00:00 2001
4From: Tom Tan <[email protected]>
5Date: Mon, 14 Sep 2026 22:06:26 -0700
6Subject: [PATCH 1/4] [SDK] Fix span-limit compilation on 32-bit platforms
7
8---
9 CHANGELOG.md | 2 ++
10 sdk/src/trace/span_limits.cc | 15 +++------------
11 2 files changed, 5 insertions(+), 12 deletions(-)
12
13diff --git a/CHANGELOG.md b/CHANGELOG.md
14index 7782139e25..435a34cf90 100644
15--- a/CHANGELOG.md
16+++ b/CHANGELOG.md
17@@ -15,6 +15,8 @@ Increment the:
18
19 ## [Unreleased]
20
21+* [SDK] Fix span-limit environment variable handling compilation on 32-bit platforms.
22+
23 ## [1.29.0] 2026-09-13
24
25 * [RELEASE] Bump main branch to 1.29.0-dev (#4259)
26diff --git a/sdk/src/trace/span_limits.cc b/sdk/src/trace/span_limits.cc
27index aba19b12d0..f0f711cd60 100644
28--- a/sdk/src/trace/span_limits.cc
29+++ b/sdk/src/trace/span_limits.cc
30@@ -1,7 +1,6 @@
31 // Copyright The OpenTelemetry Authors
32 // SPDX-License-Identifier: Apache-2.0
33
34-#include <cstddef>
35 #include <cstdint>
36
37 #include "opentelemetry/sdk/common/env_variables.h"
38@@ -31,21 +30,13 @@ static constexpr const char *kLinkAttributeCountLimitEnv = "OTEL_LINK_ATTRIBUTE
39 namespace
40 {
41
42-void UpdateFromEnv(const char *env_var_name, std::uint32_t &limit)
43+template <typename LimitType>
44+void UpdateFromEnv(const char *env_var_name, LimitType &limit)
45 {
46 std::uint32_t value{};
47 if (opentelemetry::sdk::common::GetUintEnvironmentVariable(env_var_name, value))
48 {
49- limit = value;
50- }
51-}
52-
53-void UpdateFromEnv(const char *env_var_name, std::size_t &limit)
54-{
55- std::uint32_t value{};
56- if (opentelemetry::sdk::common::GetUintEnvironmentVariable(env_var_name, value))
57- {
58- limit = static_cast<std::size_t>(value);
59+ limit = static_cast<LimitType>(value);
60 }
61 }
62
63
64From 9d1b80e054cd54be585d0717776da1541fcbd886 Mon Sep 17 00:00:00 2001
65From: Tom Tan <[email protected]>
66Date: Mon, 14 Sep 2026 22:10:23 -0700
67Subject: [PATCH 2/4] Update changelog
68
69---
70 CHANGELOG.md | 3 ++-
71 1 file changed, 2 insertions(+), 1 deletion(-)
72
73diff --git a/CHANGELOG.md b/CHANGELOG.md
74index 435a34cf90..ba1b7bbbb8 100644
75--- a/CHANGELOG.md
76+++ b/CHANGELOG.md
77@@ -15,7 +15,8 @@ Increment the:
78
79 ## [Unreleased]
80
81-* [SDK] Fix span-limit environment variable handling compilation on 32-bit platforms.
82+* [SDK] Fix span-limit environment variable handling compilation on 32-bit platforms (#4573)
83+ [#4573](https://github.com/open-telemetry/opentelemetry-cpp/pull/4573)
84
85 ## [1.29.0] 2026-09-13
86
87
88From 5c35419854ab47743daff4d82d40912d123d4537 Mon Sep 17 00:00:00 2001
89From: Tom Tan <[email protected]>
90Date: Mon, 14 Sep 2026 22:52:12 -0700
91Subject: [PATCH 3/4] Fix markdown lint
92
93---
94 CHANGELOG.md | 3 ++-
95 1 file changed, 2 insertions(+), 1 deletion(-)
96
97diff --git a/CHANGELOG.md b/CHANGELOG.md
98index ba1b7bbbb8..74baff8ea9 100644
99--- a/CHANGELOG.md
100+++ b/CHANGELOG.md
101@@ -15,7 +15,8 @@ Increment the:
102
103 ## [Unreleased]
104
105-* [SDK] Fix span-limit environment variable handling compilation on 32-bit platforms (#4573)
106+* [SDK] Fix span-limit environment variable handling compilation on 32-bit
107+ platforms (#4573)
108 [#4573](https://github.com/open-telemetry/opentelemetry-cpp/pull/4573)
109
110 ## [1.29.0] 2026-09-13
111
112From b0fd9a85e68dfa93d46f412d0f2170424cd07978 Mon Sep 17 00:00:00 2001
113From: Tom Tan <[email protected]>
114Date: Mon, 14 Sep 2026 23:26:15 -0700
115Subject: [PATCH 4/4] Add unittest
116
117---
118 sdk/test/trace/tracer_provider_test.cc | 32 ++++++++++++++++++++++++++
119 1 file changed, 32 insertions(+)
120
121diff --git a/sdk/test/trace/tracer_provider_test.cc b/sdk/test/trace/tracer_provider_test.cc
122index d8c6822388..2ee270a95d 100644
123--- a/sdk/test/trace/tracer_provider_test.cc
124+++ b/sdk/test/trace/tracer_provider_test.cc
125@@ -628,6 +628,38 @@ TEST(TracerProvider, SpanLimitsFromEnvReadsVariables)
126 UnsetSpanLimitsEnv();
127 }
128
129+TEST(TracerProvider, SpanLimitsFromEnvUnsignedBoundaries)
130+{
131+ UnsetSpanLimitsEnv();
132+
133+ const struct
134+ {
135+ const char *value;
136+ std::uint32_t expected;
137+ } test_cases[] = {{"0", 0}, {"4294967295", (std::numeric_limits<std::uint32_t>::max)()}};
138+
139+ for (const auto &test_case : test_cases)
140+ {
141+ SCOPED_TRACE(test_case.value);
142+ setenv("OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT", test_case.value, 1);
143+ setenv("OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT", test_case.value, 1);
144+
145+ const SpanLimits limits = span_limits_env::GetSpanLimitsFromEnv(SpanLimits{});
146+ EXPECT_EQ(limits.attribute_value_length_limit, static_cast<std::size_t>(test_case.expected));
147+ EXPECT_EQ(limits.attribute_count_limit, test_case.expected);
148+ }
149+
150+ setenv("OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT", "4294967296", 1);
151+ setenv("OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT", "4294967296", 1);
152+
153+ const SpanLimits defaults{};
154+ const SpanLimits limits = span_limits_env::GetSpanLimitsFromEnv(defaults);
155+ EXPECT_EQ(limits.attribute_value_length_limit, defaults.attribute_value_length_limit);
156+ EXPECT_EQ(limits.attribute_count_limit, defaults.attribute_count_limit);
157+
158+ UnsetSpanLimitsEnv();
159+}
160+
161 TEST(TracerProvider, SpanLimitsFromEnvCustomFallbackDefaults)
162 {
163 UnsetSpanLimitsEnv();