Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
- The `SentryUser.Segment` property has been deprecated. Consider sending this as a tag or additional data instead ([#3563](https://github.com/getsentry/sentry-dotnet/pull/3563))
- The ITraceContext now includes an [Origin](https://develop.sentry.dev/sdk/telemetry/traces/trace-origin/), which is set automatically and is primarily used internally by the Sentry server ([#3564](https://github.com/getsentry/sentry-dotnet/pull/3564))
- `Device.BatteryLevel` and `Device.ProcessorFrequency` are now stored as floats rather than ints, to align with the Cocoa and Java SDKs ([#3567](https://github.com/getsentry/sentry-dotnet/pull/3567))
- `SentryOptions.EnableTracing` has been removed. Instead, tracing should be enabled or disabled by setting the `SentryOptions.TracesSampleRate` or by using `SentryOptions.TracesSampler` to configure a sampling function ([#3569](https://github.com/getsentry/sentry-dotnet/pull/3569))

## 4.10.2

Expand Down
3 changes: 0 additions & 3 deletions src/Sentry/BindableSentryOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,6 @@ public void ApplyTo(SentryOptions options)
options.FailedRequestTargets = FailedRequestTargets?.Select(s => new SubstringOrRegexPattern(s)).ToList() ?? options.FailedRequestTargets;
options.InitCacheFlushTimeout = InitCacheFlushTimeout ?? options.InitCacheFlushTimeout;
options.DefaultTags = DefaultTags ?? options.DefaultTags;
#pragma warning disable CS0618 // Type or member is obsolete
options.EnableTracing = EnableTracing ?? options.EnableTracing;
#pragma warning restore CS0618 // Type or member is obsolete
options.TracesSampleRate = TracesSampleRate ?? options.TracesSampleRate;
options.ProfilesSampleRate = ProfilesSampleRate ?? options.ProfilesSampleRate;
options.TracePropagationTargets = TracePropagationTargets?.Select(s => new SubstringOrRegexPattern(s)).ToList() ?? options.TracePropagationTargets;
Expand Down
8 changes: 2 additions & 6 deletions src/Sentry/Internal/Hub.cs
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,7 @@ internal ITransactionTracer StartTransaction(
// Additionally, we will always sample out if tracing is explicitly disabled.
// Do not invoke the TracesSampler, evaluate the TracesSampleRate, and override any sampling decision
// that may have been already set (i.e.: from a sentry-trace header).
#pragma warning disable CS0618 // Type or member is obsolete
if (!IsEnabled || _options.EnableTracing is false)
#pragma warning restore CS0618 // Type or member is obsolete
if (!IsEnabled)
{
transaction.IsSampled = false;
transaction.SampleRate = 0.0;
Expand All @@ -156,9 +154,7 @@ internal ITransactionTracer StartTransaction(
// Random sampling runs only if the sampling decision hasn't been made already.
if (transaction.IsSampled == null)
{
#pragma warning disable CS0618 // Type or member is obsolete
var sampleRate = _options.TracesSampleRate ?? (_options.EnableTracing is true ? 1.0 : 0.0);
#pragma warning restore CS0618 // Type or member is obsolete
var sampleRate = _options.TracesSampleRate ?? 0.0;
transaction.IsSampled = _randomValuesFactory.NextBool(sampleRate);
transaction.SampleRate = sampleRate;
}
Expand Down
4 changes: 1 addition & 3 deletions src/Sentry/Platforms/Android/SentrySdk.cs
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,7 @@ private static void InitSentryAndroidSdk(SentryOptions options)
// These options we have behind feature flags
if (options is { IsPerformanceMonitoringEnabled: true, Native.EnableTracing: true })
{
#pragma warning disable CS0618 // Type or member is obsolete
o.EnableTracing = (JavaBoolean?)options.EnableTracing;
#pragma warning restore CS0618 // Type or member is obsolete
o.EnableTracing = null;
o.TracesSampleRate = (JavaDouble?)options.TracesSampleRate;

if (options.TracesSampler is { } tracesSampler)
Expand Down
7 changes: 0 additions & 7 deletions src/Sentry/Platforms/Cocoa/SentrySdk.cs
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,6 @@ private static void InitSentryCocoaSdk(SentryOptions options)
// These options we have behind feature flags
if (options is { IsPerformanceMonitoringEnabled: true, Native.EnableTracing: true })
{
#pragma warning disable CS0618 // Type or member is obsolete
if (options.EnableTracing != null)
{
nativeOptions.EnableTracing = options.EnableTracing.Value;
}
#pragma warning restore CS0618 // Type or member is obsolete

nativeOptions.TracesSampleRate = options.TracesSampleRate;

if (options.TracesSampler is { } tracesSampler)
Expand Down
54 changes: 6 additions & 48 deletions src/Sentry/SentryOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -753,56 +753,16 @@ public Dictionary<string, string> DefaultTags
}

/// <summary>
/// Indicates whether the performance feature is enabled, via any combination of
/// <see cref="EnableTracing"/>, <see cref="TracesSampleRate"/>, or <see cref="TracesSampler"/>.
/// Indicates whether the performance feature is enabled, via either <see cref="TracesSampleRate"/>
/// or <see cref="TracesSampler"/>.
/// </summary>
#pragma warning disable CS0618 // Type or member is obsolete
internal bool IsPerformanceMonitoringEnabled => EnableTracing switch
{
false => false,
null => TracesSampler is not null || TracesSampleRate is > 0.0,
true => TracesSampler is not null || TracesSampleRate is > 0.0 or null
};
#pragma warning restore CS0618 // Type or member is obsolete
internal bool IsPerformanceMonitoringEnabled => TracesSampler is not null || TracesSampleRate is > 0.0;

/// <summary>
/// Indicates whether profiling is enabled, via any combination of
/// <see cref="EnableTracing"/>, <see cref="TracesSampleRate"/>, or <see cref="TracesSampler"/>.
/// Indicates whether profiling is enabled, via <see cref="TracesSampleRate"/>, or <see cref="TracesSampler"/>
/// </summary>
internal bool IsProfilingEnabled => IsPerformanceMonitoringEnabled && ProfilesSampleRate > 0.0;

/// <summary>
/// Simplified option for enabling or disabling tracing.
/// <list type="table">
/// <listheader>
/// <term>Value</term>
/// <description>Effect</description>
/// </listheader>
/// <item>
/// <term><c>true</c></term>
/// <description>
/// Tracing is enabled. <see cref="TracesSampleRate"/> or <see cref="TracesSampler"/> will be used if set,
/// or 100% sample rate will be used otherwise.
/// </description>
/// </item>
/// <item>
/// <term><c>false</c></term>
/// <description>
/// Tracing is disabled, regardless of <see cref="TracesSampleRate"/> or <see cref="TracesSampler"/>.
/// </description>
/// </item>
/// <item>
/// <term><c>null</c></term>
/// <description>
/// <b>The default setting.</b>
/// Tracing is enabled only if <see cref="TracesSampleRate"/> or <see cref="TracesSampler"/> are set.
/// </description>
/// </item>
/// </list>
/// </summary>
[Obsolete("Use TracesSampleRate or TracesSampler instead")]
public bool? EnableTracing { get; set; }

private double? _tracesSampleRate;

/// <summary>
Expand All @@ -815,17 +775,15 @@ public Dictionary<string, string> DefaultTags
/// <item>
/// <term><c>&gt;= 0.0 and &lt;=1.0</c></term>
/// <description>
/// A custom sample rate is used unless <see cref="EnableTracing"/> is <c>false</c>,
/// or unless overriden by a <see cref="TracesSampler"/> function.
/// A custom sample rate is used unless overriden by a <see cref="TracesSampler"/> function.
/// Values outside of this range are invalid.
/// </description>
/// </item>
/// <item>
/// <term><c>null</c></term>
/// <description>
/// <b>The default setting.</b>
/// The tracing sample rate is determined by the <see cref="EnableTracing"/> property,
/// unless overriden by a <see cref="TracesSampler"/> function.
/// The tracing sample rate is determined by the <see cref="TracesSampler"/> function.
/// </description>
/// </item>
/// </list>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,6 @@ public void Configure_BindsConfigurationToOptions()
FailedRequestTargets = new List<SubstringOrRegexPattern> { "target1", "target2" },
InitCacheFlushTimeout = TimeSpan.FromSeconds(27),
// DefaultTags = Dictionary<string,string>,
#pragma warning disable CS0618 // Type or member is obsolete
EnableTracing = true,
#pragma warning restore CS0618 // Type or member is obsolete
TracesSampleRate = 0.8f,
TracePropagationTargets = new List<SubstringOrRegexPattern> { "target3", "target4" },
StackTraceMode = StackTraceMode.Enhanced,
Expand Down Expand Up @@ -96,9 +93,6 @@ public void Configure_BindsConfigurationToOptions()
["FailedRequestTargets:1"] = expected.FailedRequestTargets.Last().ToString(),
["InitCacheFlushTimeout"] = expected.InitCacheFlushTimeout.ToString(),
["DefaultTags"] = expected.DefaultTags.ToString(),
#pragma warning disable CS0618 // Type or member is obsolete
["EnableTracing"] = expected.EnableTracing.ToString(),
#pragma warning restore CS0618 // Type or member is obsolete
["TracesSampleRate"] = expected.TracesSampleRate.Value.ToString(CultureInfo.InvariantCulture),
["TracePropagationTargets:0"] = expected.TracePropagationTargets.First().ToString(),
["TracePropagationTargets:1"] = expected.TracePropagationTargets.Last().ToString(),
Expand Down Expand Up @@ -156,9 +150,6 @@ public void Configure_BindsConfigurationToOptions()
actual.CaptureFailedRequests.Should().Be(expected.CaptureFailedRequests);
actual.FailedRequestTargets.Should().BeEquivalentTo(expected.FailedRequestTargets);
actual.InitCacheFlushTimeout.Should().Be(expected.InitCacheFlushTimeout);
#pragma warning disable CS0618 // Type or member is obsolete
actual.EnableTracing.Should().Be(expected.EnableTracing);
#pragma warning restore CS0618 // Type or member is obsolete
actual.TracesSampleRate.Should().Be(expected.TracesSampleRate);
actual.TracePropagationTargets.Should().BeEquivalentTo(expected.TracePropagationTargets);
actual.StackTraceMode.Should().Be(expected.StackTraceMode);
Expand Down
2 changes: 0 additions & 2 deletions test/Sentry.Tests/ApiApprovalTests.Run.DotNet6_0.verified.txt
Original file line number Diff line number Diff line change
Expand Up @@ -668,8 +668,6 @@ namespace Sentry
public string? Dsn { get; set; }
public bool EnableScopeSync { get; set; }
public bool EnableSpotlight { get; set; }
[System.Obsolete("Use TracesSampleRate or TracesSampler instead")]
public bool? EnableTracing { get; set; }
public string? Environment { get; set; }
public Sentry.ExperimentalMetricsOptions? ExperimentalMetrics { get; set; }
public System.Collections.Generic.IList<Sentry.HttpStatusCodeRange> FailedRequestStatusCodes { get; set; }
Expand Down
2 changes: 0 additions & 2 deletions test/Sentry.Tests/ApiApprovalTests.Run.DotNet7_0.verified.txt
Original file line number Diff line number Diff line change
Expand Up @@ -668,8 +668,6 @@ namespace Sentry
public string? Dsn { get; set; }
public bool EnableScopeSync { get; set; }
public bool EnableSpotlight { get; set; }
[System.Obsolete("Use TracesSampleRate or TracesSampler instead")]
public bool? EnableTracing { get; set; }
public string? Environment { get; set; }
public Sentry.ExperimentalMetricsOptions? ExperimentalMetrics { get; set; }
public System.Collections.Generic.IList<Sentry.HttpStatusCodeRange> FailedRequestStatusCodes { get; set; }
Expand Down
2 changes: 0 additions & 2 deletions test/Sentry.Tests/ApiApprovalTests.Run.DotNet8_0.verified.txt
Original file line number Diff line number Diff line change
Expand Up @@ -669,8 +669,6 @@ namespace Sentry
public string? Dsn { get; set; }
public bool EnableScopeSync { get; set; }
public bool EnableSpotlight { get; set; }
[System.Obsolete("Use TracesSampleRate or TracesSampler instead")]
public bool? EnableTracing { get; set; }
public string? Environment { get; set; }
public Sentry.ExperimentalMetricsOptions? ExperimentalMetrics { get; set; }
public System.Collections.Generic.IList<Sentry.HttpStatusCodeRange> FailedRequestStatusCodes { get; set; }
Expand Down
2 changes: 0 additions & 2 deletions test/Sentry.Tests/ApiApprovalTests.Run.Net4_8.verified.txt
Original file line number Diff line number Diff line change
Expand Up @@ -666,8 +666,6 @@ namespace Sentry
public string? Dsn { get; set; }
public bool EnableScopeSync { get; set; }
public bool EnableSpotlight { get; set; }
[System.Obsolete("Use TracesSampleRate or TracesSampler instead")]
public bool? EnableTracing { get; set; }
public string? Environment { get; set; }
public Sentry.ExperimentalMetricsOptions? ExperimentalMetrics { get; set; }
public System.Collections.Generic.IList<Sentry.HttpStatusCodeRange> FailedRequestStatusCodes { get; set; }
Expand Down
34 changes: 0 additions & 34 deletions test/Sentry.Tests/HubTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -601,23 +601,6 @@ public void StartTransaction_EnableTracing_SampledIn()
transaction.IsSampled.Should().BeTrue();
}

[Fact]
public void StartTransaction_DisableTracing_SampledOut()
{
// Arrange
_fixture.Options.TracesSampleRate = 1.0;
#pragma warning disable CS0618 // Type or member is obsolete
_fixture.Options.EnableTracing = false;
#pragma warning restore CS0618 // Type or member is obsolete
var hub = _fixture.GetSut();

// Act
var transaction = hub.StartTransaction("name", "operation");

// Assert
transaction.IsSampled.Should().BeFalse();
}

[Fact]
public void StartTransaction_SameInstrumenter_SampledIn()
{
Expand Down Expand Up @@ -673,23 +656,6 @@ public void StartTransaction_EnableTracing_Sampler_SampledIn()
transaction.IsSampled.Should().BeTrue();
}

[Fact]
public void StartTransaction_DisableTracing_Sampler_SampledOut()
{
// Arrange
_fixture.Options.TracesSampler = _ => 1.0;
#pragma warning disable CS0618 // Type or member is obsolete
_fixture.Options.EnableTracing = false;
#pragma warning restore CS0618 // Type or member is obsolete
var hub = _fixture.GetSut();

// Act
var transaction = hub.StartTransaction("name", "operation");

// Assert
transaction.IsSampled.Should().BeFalse();
}

[Theory]
[InlineData(0.25f)]
[InlineData(0.50f)]
Expand Down
Loading