Skip to content

Commit 42f6ca6

Browse files
fix: return early from AddSentryOtlpExporter when DSN is the disable-SDK sentinel (#5247)
When the caller passes `SentryConstants.DisableSdkDsnValue` (empty string) to `AddSentryOtlpExporter`, we now short-circuit before attempting to parse it as a real DSN. This prevents a spurious `ArgumentException` when the SDK is intentionally disabled. Fixes #5246 Signed-off-by: James Crosswell <james.crosswell@gmail.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent b682a76 commit 42f6ca6

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

src/Sentry.OpenTelemetry.Exporter/SentryTracerProviderBuilderExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ public static class SentryTracerProviderBuilderExtensions
4242
public static TracerProviderBuilder AddSentryOtlpExporter(this TracerProviderBuilder tracerProviderBuilder,
4343
string dsnString, Uri? collectorUrl = null, TextMapPropagator? defaultTextMapPropagator = null)
4444
{
45+
if (Dsn.IsDisabled(dsnString))
46+
{
47+
return tracerProviderBuilder;
48+
}
49+
4550
if (Dsn.TryParse(dsnString) is not { } dsn)
4651
{
4752
throw new ArgumentException(MissingDsnWarning, nameof(dsnString));

test/Sentry.OpenTelemetry.Exporter.Tests/SentryTracerProviderBuilderExtensionsTests.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ public class SentryTracerProviderBuilderExtensionsTests
77
{
88
[Theory]
99
[InlineData(null)]
10-
[InlineData("")]
1110
[InlineData("foo")]
1211
public void AddSentryOtlpExporter_InvalidDsn_ThrowsArgumentException(string dsn)
1312
{
@@ -22,6 +21,20 @@ public void AddSentryOtlpExporter_InvalidDsn_ThrowsArgumentException(string dsn)
2221
.WithMessage($"{SentryTracerProviderBuilderExtensions.MissingDsnWarning}*");
2322
}
2423

24+
[Fact]
25+
public void AddSentryOtlpExporter_DisabledSdkDsn_ReturnsWithoutConfiguringExporter()
26+
{
27+
// Arrange
28+
var tracerProviderBuilder = Substitute.For<TracerProviderBuilder>();
29+
30+
// Act
31+
var result = tracerProviderBuilder.AddSentryOtlpExporter(SentryConstants.DisableSdkDsnValue);
32+
33+
// Assert
34+
result.Should().BeSameAs(tracerProviderBuilder);
35+
tracerProviderBuilder.DidNotReceive().AddInstrumentation(Arg.Any<Func<object>>());
36+
}
37+
2538
[Fact]
2639
public void OtlpConfigurationCallback_WithCustomCollectorUrl_SetsEndpointToCustomUrl()
2740
{

0 commit comments

Comments
 (0)