Skip to content

Commit 22d49d2

Browse files
Merge branch 'main' into fix/wrap-user-ip-auto-pii
2 parents 7f71200 + 5a83313 commit 22d49d2

19 files changed

+245
-76
lines changed

.github/workflows/codeql-analysis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
uses: ./.github/actions/environment
3636

3737
- name: Initialize CodeQL
38-
uses: github/codeql-action/init@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # pin@v2
38+
uses: github/codeql-action/init@b6a472f63d85b9c78a3ac5e89422239fc15e9b3c # pin@v2
3939
with:
4040
languages: csharp
4141

@@ -49,6 +49,6 @@ jobs:
4949
run: dotnet build Sentry-CI-CodeQL.slnf --no-restore --nologo
5050

5151
- name: Perform CodeQL Analysis
52-
uses: github/codeql-action/analyze@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # pin@v2
52+
uses: github/codeql-action/analyze@b6a472f63d85b9c78a3ac5e89422239fc15e9b3c # pin@v2
5353
with:
5454
category: '/language:csharp'

CHANGELOG.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,17 @@
66

77
- The User.IpAddress is now only set to `{{auto}}` when `SendDefaultPii` is enabled. This change gives you control over IP address collection directly on the client ([#3893](https://github.com/getsentry/sentry-dotnet/pull/3893))
88

9+
### Features
10+
11+
- .NET on iOS: Add experimental EnableAppHangTrackingV2 configuration flag to the options binding SDK ([#3877](https://github.com/getsentry/sentry-dotnet/pull/3877))
12+
- Added `SentryOptions.DisableSentryHttpMessageHandler`. Useful if you're using `OpenTelemetry.Instrumentation.Http` and ending up with duplicate spans. ([#3879](https://github.com/getsentry/sentry-dotnet/pull/3879))
13+
14+
## 5.0.1
15+
916
### Fixes
1017

1118
- .NET Mobile: Disable and made obsolete the iOS Watchdog termination feature which is based on heuristics that don't work in .NET ([#3867](https://github.com/getsentry/sentry-dotnet/pull/3867))
12-
19+
- .NET on Android: NullReferenceException handled by Mono cause the app to crash (PR #3694) ([#3871](https://github.com/getsentry/sentry-dotnet/pull/3871))
1320

1421
### Dependencies
1522

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project>
22

33
<PropertyGroup>
4-
<VersionPrefix>5.0.0</VersionPrefix>
4+
<VersionPrefix>5.0.1</VersionPrefix>
55
<LangVersion>13</LangVersion>
66
<AccelerateBuildsInVisualStudio>true</AccelerateBuildsInVisualStudio>
77
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

src/Sentry.Extensions.Logging/SentryHttpMessageHandlerBuilderFilter.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ public Action<HttpMessageHandlerBuilder> Configure(Action<HttpMessageHandlerBuil
1414
handlerBuilder =>
1515
{
1616
var hub = _getHub();
17-
if (!handlerBuilder.AdditionalHandlers.Any(h => h is SentryHttpMessageHandler))
17+
var enableHandler = hub.GetSentryOptions()?.DisableSentryHttpMessageHandler == false;
18+
if (enableHandler && !handlerBuilder.AdditionalHandlers.Any(h => h is SentryHttpMessageHandler))
1819
{
1920
handlerBuilder.AdditionalHandlers.Add(
2021
new SentryHttpMessageHandler(hub)

src/Sentry/BindableSentryOptions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ internal partial class BindableSentryOptions
4848
public TimeSpan? AutoSessionTrackingInterval { get; set; }
4949
public bool? AutoSessionTracking { get; set; }
5050
public bool? UseAsyncFileIO { get; set; }
51+
public bool? DisableSentryHttpMessageHandler { get; set; }
5152
public bool? JsonPreserveReferences { get; set; }
5253
public bool? EnableSpotlight { get; set; }
5354
public string? SpotlightUrl { get; set; }
@@ -94,6 +95,7 @@ public void ApplyTo(SentryOptions options)
9495
options.AutoSessionTrackingInterval = AutoSessionTrackingInterval ?? options.AutoSessionTrackingInterval;
9596
options.AutoSessionTracking = AutoSessionTracking ?? options.AutoSessionTracking;
9697
options.UseAsyncFileIO = UseAsyncFileIO ?? options.UseAsyncFileIO;
98+
options.DisableSentryHttpMessageHandler = DisableSentryHttpMessageHandler ?? options.DisableSentryHttpMessageHandler;
9799
options.JsonPreserveReferences = JsonPreserveReferences ?? options.JsonPreserveReferences;
98100
options.EnableSpotlight = EnableSpotlight ?? options.EnableSpotlight;
99101
options.SpotlightUrl = SpotlightUrl ?? options.SpotlightUrl;

src/Sentry/BuiltInSystemDiagnosticsMeters.cs

Lines changed: 84 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,15 @@ public static partial class BuiltInSystemDiagnosticsMeters
2424
/// <summary>
2525
/// Matches the built-in Microsoft.AspNetCore.Hosting metrics
2626
/// </summary>
27-
#if NET8_0_OR_GREATER
27+
#if NET9_0_OR_GREATER
28+
public static readonly StringOrRegex MicrosoftAspNetCoreHosting = MicrosoftAspNetCoreHostingRegex;
29+
30+
[GeneratedRegex(MicrosoftAspNetCoreHostingPattern)]
31+
private static partial Regex MicrosoftAspNetCoreHostingRegex { get; }
32+
#elif NET8_0
2833
public static readonly StringOrRegex MicrosoftAspNetCoreHosting = MicrosoftAspNetCoreHostingRegex();
2934

30-
[GeneratedRegex(MicrosoftAspNetCoreHostingPattern, RegexOptions.Compiled)]
35+
[GeneratedRegex(MicrosoftAspNetCoreHostingPattern)]
3136
private static partial Regex MicrosoftAspNetCoreHostingRegex();
3237
#else
3338
public static readonly StringOrRegex MicrosoftAspNetCoreHosting = new Regex(MicrosoftAspNetCoreHostingPattern, RegexOptions.Compiled);
@@ -36,10 +41,15 @@ public static partial class BuiltInSystemDiagnosticsMeters
3641
/// <summary>
3742
/// Matches the built-in Microsoft.AspNetCore.Routing metrics
3843
/// </summary>
39-
#if NET8_0_OR_GREATER
44+
#if NET9_0_OR_GREATER
45+
public static readonly StringOrRegex MicrosoftAspNetCoreRouting = MicrosoftAspNetCoreRoutingRegex;
46+
47+
[GeneratedRegex(MicrosoftAspNetCoreRoutingPattern)]
48+
private static partial Regex MicrosoftAspNetCoreRoutingRegex { get; }
49+
#elif NET8_0
4050
public static readonly StringOrRegex MicrosoftAspNetCoreRouting = MicrosoftAspNetCoreRoutingRegex();
4151

42-
[GeneratedRegex(MicrosoftAspNetCoreRoutingPattern, RegexOptions.Compiled)]
52+
[GeneratedRegex(MicrosoftAspNetCoreRoutingPattern)]
4353
private static partial Regex MicrosoftAspNetCoreRoutingRegex();
4454
#else
4555
public static readonly StringOrRegex MicrosoftAspNetCoreRouting = new Regex(MicrosoftAspNetCoreRoutingPattern, RegexOptions.Compiled);
@@ -48,10 +58,15 @@ public static partial class BuiltInSystemDiagnosticsMeters
4858
/// <summary>
4959
/// Matches the built-in Microsoft.AspNetCore.Diagnostics metrics
5060
/// </summary>
51-
#if NET8_0_OR_GREATER
61+
#if NET9_0_OR_GREATER
62+
public static readonly StringOrRegex MicrosoftAspNetCoreDiagnostics = MicrosoftAspNetCoreDiagnosticsRegex;
63+
64+
[GeneratedRegex(MicrosoftAspNetCoreDiagnosticsPattern)]
65+
private static partial Regex MicrosoftAspNetCoreDiagnosticsRegex { get; }
66+
#elif NET8_0
5267
public static readonly StringOrRegex MicrosoftAspNetCoreDiagnostics = MicrosoftAspNetCoreDiagnosticsRegex();
5368

54-
[GeneratedRegex(MicrosoftAspNetCoreDiagnosticsPattern, RegexOptions.Compiled)]
69+
[GeneratedRegex(MicrosoftAspNetCoreDiagnosticsPattern)]
5570
private static partial Regex MicrosoftAspNetCoreDiagnosticsRegex();
5671
#else
5772
public static readonly StringOrRegex MicrosoftAspNetCoreDiagnostics = new Regex(MicrosoftAspNetCoreDiagnosticsPattern, RegexOptions.Compiled);
@@ -60,10 +75,15 @@ public static partial class BuiltInSystemDiagnosticsMeters
6075
/// <summary>
6176
/// Matches the built-in Microsoft.AspNetCore.RateLimiting metrics
6277
/// </summary>
63-
#if NET8_0_OR_GREATER
78+
#if NET9_0_OR_GREATER
79+
public static readonly StringOrRegex MicrosoftAspNetCoreRateLimiting = MicrosoftAspNetCoreRateLimitingRegex;
80+
81+
[GeneratedRegex(MicrosoftAspNetCoreRateLimitingPattern)]
82+
private static partial Regex MicrosoftAspNetCoreRateLimitingRegex { get; }
83+
#elif NET8_0
6484
public static readonly StringOrRegex MicrosoftAspNetCoreRateLimiting = MicrosoftAspNetCoreRateLimitingRegex();
6585

66-
[GeneratedRegex(MicrosoftAspNetCoreRateLimitingPattern, RegexOptions.Compiled)]
86+
[GeneratedRegex(MicrosoftAspNetCoreRateLimitingPattern)]
6787
private static partial Regex MicrosoftAspNetCoreRateLimitingRegex();
6888
#else
6989
public static readonly StringOrRegex MicrosoftAspNetCoreRateLimiting = new Regex(MicrosoftAspNetCoreRateLimitingPattern, RegexOptions.Compiled);
@@ -72,10 +92,15 @@ public static partial class BuiltInSystemDiagnosticsMeters
7292
/// <summary>
7393
/// Matches the built-in Microsoft.AspNetCore.HeaderParsing metrics
7494
/// </summary>
75-
#if NET8_0_OR_GREATER
95+
#if NET9_0_OR_GREATER
96+
public static readonly StringOrRegex MicrosoftAspNetCoreHeaderParsing = MicrosoftAspNetCoreHeaderParsingRegex;
97+
98+
[GeneratedRegex(MicrosoftAspNetCoreHeaderParsingPattern)]
99+
private static partial Regex MicrosoftAspNetCoreHeaderParsingRegex { get; }
100+
#elif NET8_0
76101
public static readonly StringOrRegex MicrosoftAspNetCoreHeaderParsing = MicrosoftAspNetCoreHeaderParsingRegex();
77102

78-
[GeneratedRegex(MicrosoftAspNetCoreHeaderParsingPattern, RegexOptions.Compiled)]
103+
[GeneratedRegex(MicrosoftAspNetCoreHeaderParsingPattern)]
79104
private static partial Regex MicrosoftAspNetCoreHeaderParsingRegex();
80105
#else
81106
public static readonly StringOrRegex MicrosoftAspNetCoreHeaderParsing = new Regex(MicrosoftAspNetCoreHeaderParsingPattern, RegexOptions.Compiled);
@@ -84,10 +109,15 @@ public static partial class BuiltInSystemDiagnosticsMeters
84109
/// <summary>
85110
/// Matches the built-in Microsoft.AspNetCore.Server.Kestrel metrics
86111
/// </summary>
87-
#if NET8_0_OR_GREATER
112+
#if NET9_0_OR_GREATER
113+
public static readonly StringOrRegex MicrosoftAspNetCoreServerKestrel = MicrosoftAspNetCoreServerKestrelRegex;
114+
115+
[GeneratedRegex(MicrosoftAspNetCoreServerKestrelPattern)]
116+
private static partial Regex MicrosoftAspNetCoreServerKestrelRegex { get; }
117+
#elif NET8_0
88118
public static readonly StringOrRegex MicrosoftAspNetCoreServerKestrel = MicrosoftAspNetCoreServerKestrelRegex();
89119

90-
[GeneratedRegex(MicrosoftAspNetCoreServerKestrelPattern, RegexOptions.Compiled)]
120+
[GeneratedRegex(MicrosoftAspNetCoreServerKestrelPattern)]
91121
private static partial Regex MicrosoftAspNetCoreServerKestrelRegex();
92122
#else
93123
public static readonly StringOrRegex MicrosoftAspNetCoreServerKestrel = new Regex(MicrosoftAspNetCoreServerKestrelPattern, RegexOptions.Compiled);
@@ -96,10 +126,15 @@ public static partial class BuiltInSystemDiagnosticsMeters
96126
/// <summary>
97127
/// Matches the built-in Microsoft.AspNetCore.Http.Connections metrics
98128
/// </summary>
99-
#if NET8_0_OR_GREATER
129+
#if NET9_0_OR_GREATER
130+
public static readonly StringOrRegex MicrosoftAspNetCoreHttpConnections = MicrosoftAspNetCoreHttpConnectionsRegex;
131+
132+
[GeneratedRegex(MicrosoftAspNetCoreHttpConnectionsPattern)]
133+
private static partial Regex MicrosoftAspNetCoreHttpConnectionsRegex { get; }
134+
#elif NET8_0
100135
public static readonly StringOrRegex MicrosoftAspNetCoreHttpConnections = MicrosoftAspNetCoreHttpConnectionsRegex();
101136

102-
[GeneratedRegex(MicrosoftAspNetCoreHttpConnectionsPattern, RegexOptions.Compiled)]
137+
[GeneratedRegex(MicrosoftAspNetCoreHttpConnectionsPattern)]
103138
private static partial Regex MicrosoftAspNetCoreHttpConnectionsRegex();
104139
#else
105140
public static readonly StringOrRegex MicrosoftAspNetCoreHttpConnections = new Regex(MicrosoftAspNetCoreHttpConnectionsPattern, RegexOptions.Compiled);
@@ -108,10 +143,15 @@ public static partial class BuiltInSystemDiagnosticsMeters
108143
/// <summary>
109144
/// Matches the built-in Microsoft.Extensions.Diagnostics.HealthChecks metrics
110145
/// </summary>
111-
#if NET8_0_OR_GREATER
146+
#if NET9_0_OR_GREATER
147+
public static readonly StringOrRegex MicrosoftExtensionsDiagnosticsHealthChecks = MicrosoftExtensionsDiagnosticsHealthChecksRegex;
148+
149+
[GeneratedRegex(MicrosoftExtensionsDiagnosticsHealthChecksPattern)]
150+
private static partial Regex MicrosoftExtensionsDiagnosticsHealthChecksRegex { get; }
151+
#elif NET8_0
112152
public static readonly StringOrRegex MicrosoftExtensionsDiagnosticsHealthChecks = MicrosoftExtensionsDiagnosticsHealthChecksRegex();
113153

114-
[GeneratedRegex(MicrosoftExtensionsDiagnosticsHealthChecksPattern, RegexOptions.Compiled)]
154+
[GeneratedRegex(MicrosoftExtensionsDiagnosticsHealthChecksPattern)]
115155
private static partial Regex MicrosoftExtensionsDiagnosticsHealthChecksRegex();
116156
#else
117157
public static readonly StringOrRegex MicrosoftExtensionsDiagnosticsHealthChecks = new Regex(MicrosoftExtensionsDiagnosticsHealthChecksPattern, RegexOptions.Compiled);
@@ -120,10 +160,15 @@ public static partial class BuiltInSystemDiagnosticsMeters
120160
/// <summary>
121161
/// Matches the built-in Microsoft.Extensions.Diagnostics.ResourceMonitoring metrics
122162
/// </summary>
123-
#if NET8_0_OR_GREATER
163+
#if NET9_0_OR_GREATER
164+
public static readonly StringOrRegex MicrosoftExtensionsDiagnosticsResourceMonitoring = MicrosoftExtensionsDiagnosticsResourceMonitoringRegex;
165+
166+
[GeneratedRegex(MicrosoftExtensionsDiagnosticsResourceMonitoringPattern)]
167+
private static partial Regex MicrosoftExtensionsDiagnosticsResourceMonitoringRegex { get; }
168+
#elif NET8_0
124169
public static readonly StringOrRegex MicrosoftExtensionsDiagnosticsResourceMonitoring = MicrosoftExtensionsDiagnosticsResourceMonitoringRegex();
125170

126-
[GeneratedRegex(MicrosoftExtensionsDiagnosticsResourceMonitoringPattern, RegexOptions.Compiled)]
171+
[GeneratedRegex(MicrosoftExtensionsDiagnosticsResourceMonitoringPattern)]
127172
private static partial Regex MicrosoftExtensionsDiagnosticsResourceMonitoringRegex();
128173
#else
129174
public static readonly StringOrRegex MicrosoftExtensionsDiagnosticsResourceMonitoring = new Regex(MicrosoftExtensionsDiagnosticsResourceMonitoringPattern, RegexOptions.Compiled);
@@ -132,10 +177,15 @@ public static partial class BuiltInSystemDiagnosticsMeters
132177
/// <summary>
133178
/// Matches the built-in System.Net.NameResolution metrics
134179
/// </summary>
135-
#if NET8_0_OR_GREATER
180+
#if NET9_0_OR_GREATER
181+
public static readonly StringOrRegex OpenTelemetryInstrumentationRuntime = OpenTelemetryInstrumentationRuntimeRegex;
182+
183+
[GeneratedRegex(OpenTelemetryInstrumentationRuntimePattern)]
184+
private static partial Regex OpenTelemetryInstrumentationRuntimeRegex { get; }
185+
#elif NET8_0
136186
public static readonly StringOrRegex OpenTelemetryInstrumentationRuntime = OpenTelemetryInstrumentationRuntimeRegex();
137187

138-
[GeneratedRegex(OpenTelemetryInstrumentationRuntimePattern, RegexOptions.Compiled)]
188+
[GeneratedRegex(OpenTelemetryInstrumentationRuntimePattern)]
139189
private static partial Regex OpenTelemetryInstrumentationRuntimeRegex();
140190
#else
141191
public static readonly StringOrRegex OpenTelemetryInstrumentationRuntime = new Regex(OpenTelemetryInstrumentationRuntimePattern, RegexOptions.Compiled);
@@ -144,10 +194,15 @@ public static partial class BuiltInSystemDiagnosticsMeters
144194
/// <summary>
145195
/// Matches the built-in System.Net.NameResolution metrics
146196
/// </summary>
147-
#if NET8_0_OR_GREATER
197+
#if NET9_0_OR_GREATER
198+
public static readonly StringOrRegex SystemNetNameResolution = SystemNetNameResolutionRegex;
199+
200+
[GeneratedRegex(SystemNetNameResolutionPattern)]
201+
private static partial Regex SystemNetNameResolutionRegex { get; }
202+
#elif NET8_0
148203
public static readonly StringOrRegex SystemNetNameResolution = SystemNetNameResolutionRegex();
149204

150-
[GeneratedRegex(SystemNetNameResolutionPattern, RegexOptions.Compiled)]
205+
[GeneratedRegex(SystemNetNameResolutionPattern)]
151206
private static partial Regex SystemNetNameResolutionRegex();
152207
#else
153208
public static readonly StringOrRegex SystemNetNameResolution = new Regex(SystemNetNameResolutionPattern, RegexOptions.Compiled);
@@ -156,10 +211,15 @@ public static partial class BuiltInSystemDiagnosticsMeters
156211
/// <summary>
157212
/// Matches the built-in <see cref="System.Net.Http"/> metrics
158213
/// </summary>
159-
#if NET8_0_OR_GREATER
214+
#if NET9_0_OR_GREATER
215+
public static readonly StringOrRegex SystemNetHttp = SystemNetHttpRegex;
216+
217+
[GeneratedRegex(SystemNetHttpPattern)]
218+
private static partial Regex SystemNetHttpRegex { get; }
219+
#elif NET8_0
160220
public static readonly StringOrRegex SystemNetHttp = SystemNetHttpRegex();
161221

162-
[GeneratedRegex(SystemNetHttpPattern, RegexOptions.Compiled)]
222+
[GeneratedRegex(SystemNetHttpPattern)]
163223
private static partial Regex SystemNetHttpRegex();
164224
#else
165225
public static readonly StringOrRegex SystemNetHttp = new Regex(SystemNetHttpPattern, RegexOptions.Compiled);

src/Sentry/Internal/OriginHelper.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@ internal static partial class OriginHelper
55
internal const string Manual = "manual";
66
private const string ValidOriginPattern = @"^(auto|manual)(\.[\w]+){0,3}$";
77

8-
#if NET8_0_OR_GREATER
9-
[GeneratedRegex(ValidOriginPattern, RegexOptions.Compiled)]
10-
private static partial Regex ValidOriginRegEx();
11-
private static readonly Regex ValidOrigin = ValidOriginRegEx();
8+
#if NET9_0_OR_GREATER
9+
[GeneratedRegex(ValidOriginPattern)]
10+
private static partial Regex ValidOrigin { get; }
11+
#elif NET8_0
12+
[GeneratedRegex(ValidOriginPattern)]
13+
private static partial Regex ValidOriginRegex();
14+
private static readonly Regex ValidOrigin = ValidOriginRegex();
1215
#else
13-
private static readonly Regex ValidOrigin = new (ValidOriginPattern, RegexOptions.Compiled);
16+
private static readonly Regex ValidOrigin = new(ValidOriginPattern, RegexOptions.Compiled);
1417
#endif
1518

1619
public static bool IsValidOrigin(string? value) => value == null || ValidOrigin.IsMatch(value);

0 commit comments

Comments
 (0)