Skip to content

Commit e4df4dd

Browse files
HrMathematikerDmitrii Korzhimanov
authored andcommitted
Accept fallback defaults as a parameter in GetSpanLimitsFromEnv
1 parent b9de885 commit e4df4dd

3 files changed

Lines changed: 20 additions & 5 deletions

File tree

sdk/include/opentelemetry/sdk/trace/span_limits.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,15 @@ namespace span_limits_env
7171
* OpenTelemetry specification
7272
* (https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/#span-limits).
7373
*
74-
* A field whose environment variable is not set keeps its SpanLimits::NoLimits() value, so with
75-
* no variables set the result equals SpanLimits::NoLimits() and SDK behavior is unchanged. The
74+
* A field whose environment variable is not set keeps its value from @p defaults, so with no
75+
* variables set the result equals @p defaults. The default of SpanLimits::NoLimits() leaves SDK
76+
* behavior unchanged; pass SpanLimits{} to fall back to the specification defaults instead. The
7677
* span-specific variables (OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT,
7778
* OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT) take precedence over the general ones
7879
* (OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT, OTEL_ATTRIBUTE_COUNT_LIMIT).
7980
*/
80-
OPENTELEMETRY_EXPORT SpanLimits GetSpanLimitsFromEnv();
81+
OPENTELEMETRY_EXPORT SpanLimits
82+
GetSpanLimitsFromEnv(const SpanLimits &defaults = SpanLimits::NoLimits());
8183

8284
} // namespace span_limits_env
8385

sdk/src/trace/span_limits.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ void UpdateFromEnv(const char *env_var_name, std::size_t &limit)
5151

5252
} // namespace
5353

54-
SpanLimits GetSpanLimitsFromEnv()
54+
SpanLimits GetSpanLimitsFromEnv(const SpanLimits &defaults)
5555
{
56-
SpanLimits limits = SpanLimits::NoLimits();
56+
SpanLimits limits = defaults;
5757

5858
// General attribute limits first; the span-specific variables below take precedence.
5959
UpdateFromEnv(kAttributeValueLengthLimitEnv, limits.attribute_value_length_limit);

sdk/test/trace/tracer_provider_test.cc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -628,6 +628,19 @@ TEST(TracerProvider, SpanLimitsFromEnvReadsVariables)
628628
UnsetSpanLimitsEnv();
629629
}
630630

631+
TEST(TracerProvider, SpanLimitsFromEnvCustomFallbackDefaults)
632+
{
633+
UnsetSpanLimitsEnv();
634+
setenv("OTEL_SPAN_EVENT_COUNT_LIMIT", "42", 1);
635+
636+
const SpanLimits limits = span_limits_env::GetSpanLimitsFromEnv(SpanLimits{});
637+
EXPECT_EQ(limits.event_count_limit, 42u);
638+
EXPECT_EQ(limits.attribute_count_limit, SpanLimits::kDefaultAttributeCountLimit);
639+
EXPECT_EQ(limits.link_count_limit, SpanLimits::kDefaultLinkCountLimit);
640+
641+
UnsetSpanLimitsEnv();
642+
}
643+
631644
TEST(TracerProvider, SpanLimitsFromEnvGeneralAttributeVariablesApply)
632645
{
633646
UnsetSpanLimitsEnv();

0 commit comments

Comments
 (0)