Skip to content

Commit 5c44ff6

Browse files
Detect SignalR usage for request tracing (#570)
* collect usage of SignalR * fix typo * fix typo * rename signalR
1 parent 73e8838 commit 5c44ff6

File tree

4 files changed

+23
-5
lines changed

4 files changed

+23
-5
lines changed

src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationProvider.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ internal class AzureAppConfigurationProvider : ConfigurationProvider, IConfigura
2626
{
2727
private bool _optional;
2828
private bool _isInitialLoadComplete = false;
29-
private bool _isFeatureManagementVersionInspected;
29+
private bool _isAssemblyInspected;
3030
private readonly bool _requestTracingEnabled;
3131
private readonly IConfigurationClientManager _configClientManager;
3232
private AzureAppConfigurationOptions _options;
@@ -189,7 +189,7 @@ public async Task RefreshAsync(CancellationToken cancellationToken)
189189
try
190190
{
191191
// FeatureManagement assemblies may not be loaded on provider startup, so version information is gathered upon first refresh for tracing
192-
EnsureFeatureManagementVersionInspected();
192+
EnsureAssemblyInspected();
193193

194194
var utcNow = DateTimeOffset.UtcNow;
195195
IEnumerable<KeyValueWatcher> cacheExpiredWatchers = _options.ChangeWatchers.Where(changeWatcher => utcNow >= changeWatcher.CacheExpires);
@@ -1186,17 +1186,22 @@ private IEnumerable<ConfigurationSetting> GetCurrentKeyValueCollection(string ke
11861186
return currentKeyValues;
11871187
}
11881188

1189-
private void EnsureFeatureManagementVersionInspected()
1189+
private void EnsureAssemblyInspected()
11901190
{
1191-
if (!_isFeatureManagementVersionInspected)
1191+
if (!_isAssemblyInspected)
11921192
{
1193-
_isFeatureManagementVersionInspected = true;
1193+
_isAssemblyInspected = true;
11941194

11951195
if (_requestTracingEnabled && _requestTracingOptions != null)
11961196
{
11971197
_requestTracingOptions.FeatureManagementVersion = TracingUtils.GetAssemblyVersion(RequestTracingConstants.FeatureManagementAssemblyName);
11981198

11991199
_requestTracingOptions.FeatureManagementAspNetCoreVersion = TracingUtils.GetAssemblyVersion(RequestTracingConstants.FeatureManagementAspNetCoreAssemblyName);
1200+
1201+
if (TracingUtils.GetAssemblyVersion(RequestTracingConstants.SignalRAssemblyName) != null)
1202+
{
1203+
_requestTracingOptions.IsSignalRUsed = true;
1204+
}
12001205
}
12011206
}
12021207
}

src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Constants/RequestTracingConstants.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,15 @@ internal class RequestTracingConstants
3030
public const string KeyVaultConfiguredTag = "UsesKeyVault";
3131
public const string KeyVaultRefreshConfiguredTag = "RefreshesKeyVault";
3232
public const string ReplicaCountKey = "ReplicaCount";
33+
public const string SignalRUsedTag = "UsesSignalR";
3334

3435
public const string DiagnosticHeaderActivityName = "Azure.CustomDiagnosticHeaders";
3536
public const string CorrelationContextHeader = "Correlation-Context";
3637
public const string UserAgentHeader = "User-Agent";
3738

3839
public const string FeatureManagementAssemblyName = "Microsoft.FeatureManagement";
3940
public const string FeatureManagementAspNetCoreAssemblyName = "Microsoft.FeatureManagement.AspNetCore";
41+
42+
public const string SignalRAssemblyName = "Microsoft.AspNetCore.SignalR";
4043
}
4144
}

src/Microsoft.Extensions.Configuration.AzureAppConfiguration/RequestTracingOptions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,10 @@ internal class RequestTracingOptions
4646
/// Version of the Microsoft.FeatureManagement.AspNetCore assembly, if present in the application.
4747
/// </summary>
4848
public string FeatureManagementAspNetCoreVersion { get; set; }
49+
50+
/// <summary>
51+
/// Flag to indicate whether Microsoft.AspNetCore.SignalR assembly is present in the application.
52+
/// </summary>
53+
public bool IsSignalRUsed { get; set; } = false;
4954
}
5055
}

src/Microsoft.Extensions.Configuration.AzureAppConfiguration/TracingUtils.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,11 @@ private static string CreateCorrelationContextHeader(RequestType requestType, Re
160160
correlationContextTags.Add(RequestTracingConstants.KeyVaultRefreshConfiguredTag);
161161
}
162162

163+
if (requestTracingOptions.IsSignalRUsed)
164+
{
165+
correlationContextTags.Add(RequestTracingConstants.SignalRUsedTag);
166+
}
167+
163168
var sb = new StringBuilder();
164169

165170
foreach (KeyValuePair<string,string> kvp in correlationContextKeyValues)

0 commit comments

Comments
 (0)