Skip to content

Commit 0941efa

Browse files
authored
Remove properties from TracerSettings which can change at runtime (#7723)
## Summary of changes Instead of exposing settings like `ServiceVerion` and `Environment` on `TracerSettings`, only expose them on `MutableSettings` ## Reason for change This is all part of the refactoring towards having `TracerSettings` being an immutable settings object, that's created once on app startup, and fixed for the lifetime. `ServiceVerion` and `Environment` currently delegate to the `MutableSettings` object stored on `TracerSettings`, but are going to move that elsewhere shortly so that consumers can subscribe to changes ## Implementation details For this PR, it's just a case of changing `TracerSettings.XXX` => `TracerSettings.Mutable.XXX`. A future PR will then subsequently "fix" these usages properly. This is just a small step to be able to remove the mutable properties from `TracerSettings` ## Test coverage Just a refactoring, covered by existing tests. ## Other details https://datadoghq.atlassian.net/browse/LANGPLAT-819 Part of a config stack - #7522 - #7525 - #7530 - #7532 - #7543 - #7544 - #7721 - #7722 - #7695 - #7723 👈 - #7724 - #7796
1 parent 68dfdf8 commit 0941efa

File tree

40 files changed

+255
-322
lines changed

40 files changed

+255
-322
lines changed

tracer/src/Datadog.Trace.BenchmarkDotNet/DatadogDiagnoser.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,12 +216,12 @@ private static void SetEnvironmentVariables(DiagnoserActionParameters parameters
216216

217217
if (!environment.TryGetValue(ConfigurationKeys.Environment, out _))
218218
{
219-
environment[ConfigurationKeys.Environment] = tracer.Settings.Environment;
219+
environment[ConfigurationKeys.Environment] = tracer.CurrentTraceSettings.Settings.Environment;
220220
}
221221

222222
if (!environment.TryGetValue(ConfigurationKeys.ServiceVersion, out _))
223223
{
224-
environment[ConfigurationKeys.ServiceVersion] = tracer.Settings.ServiceVersion;
224+
environment[ConfigurationKeys.ServiceVersion] = tracer.CurrentTraceSettings.Settings.ServiceVersion;
225225
}
226226

227227
const string ProfilerId = "{846F5F1C-F9AE-4B07-969E-05C26BC060D8}";

tracer/src/Datadog.Trace/Agent/StatsAggregator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ internal StatsAggregator(IApi api, TracerSettings settings, IDiscoveryService di
6565

6666
var header = new ClientStatsPayload
6767
{
68-
Environment = settings.Environment,
69-
Version = settings.ServiceVersion,
68+
Environment = settings.MutableSettings.Environment,
69+
Version = settings.MutableSettings.ServiceVersion,
7070
HostName = HostMetadata.Instance.Hostname,
7171
ProcessTags = settings.PropagateProcessTags ? ProcessTags.SerializedTags : null
7272
};

tracer/src/Datadog.Trace/Ci/Agent/MessagePack/CIEventMessagePackFormatter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ internal class CIEventMessagePackFormatter : EventMessagePackFormatter<CIVisibil
4040

4141
public CIEventMessagePackFormatter(TracerSettings tracerSettings)
4242
{
43-
if (!string.IsNullOrEmpty(tracerSettings.Environment))
43+
if (!string.IsNullOrEmpty(tracerSettings.MutableSettings.Environment))
4444
{
45-
_environmentValueBytes = StringEncoding.UTF8.GetBytes(tracerSettings.Environment);
45+
_environmentValueBytes = StringEncoding.UTF8.GetBytes(tracerSettings.MutableSettings.Environment);
4646
}
4747

4848
var testOptimization = TestOptimization.Instance;

tracer/src/Datadog.Trace/Ci/Net/TestOptimizationClient.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,11 @@ private TestOptimizationClient(string workingDirectory, ITestOptimization testOp
7272
var settings = _testOptimization.Settings;
7373

7474
_workingDirectory = workingDirectory;
75-
_environment = TraceUtil.NormalizeTag(settings.TracerSettings.Environment ?? "none") ?? "none";
76-
_serviceName = NormalizerTraceProcessor.NormalizeService(settings.TracerSettings.ServiceName) ?? string.Empty;
75+
_environment = TraceUtil.NormalizeTag(settings.TracerSettings.MutableSettings.Environment ?? "none") ?? "none";
76+
_serviceName = NormalizerTraceProcessor.NormalizeService(settings.TracerSettings.MutableSettings.ServiceName) ?? string.Empty;
7777

7878
// Extract custom tests configurations from DD_TAGS
79-
_customConfigurations = GetCustomTestsConfigurations(settings.TracerSettings.GlobalTags);
79+
_customConfigurations = GetCustomTestsConfigurations(settings.TracerSettings.MutableSettings.GlobalTags);
8080

8181
_apiRequestFactory = _testOptimization.TracerManagement!.GetRequestFactory(settings.TracerSettings, TimeSpan.FromSeconds(45));
8282
_eventPlatformProxySupport = settings.Agentless ? EventPlatformProxySupport.None : _testOptimization.TracerManagement.EventPlatformProxySupport;

tracer/src/Datadog.Trace/Ci/TestOptimization.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ public void Initialize()
264264

265265
var tracerSettings = settings.TracerSettings;
266266
Log.Debug("TestOptimization: Setting up the test session name to: {TestSessionName}", settings.TestSessionName);
267-
Log.Debug("TestOptimization: Setting up the service name to: {ServiceName}", tracerSettings.ServiceName);
267+
Log.Debug("TestOptimization: Setting up the service name to: {ServiceName}", tracerSettings.MutableSettings.ServiceName);
268268

269269
// Initialize Tracer
270270
Log.Information("TestOptimization: Initialize Test Tracer instance");
@@ -328,7 +328,7 @@ public void InitializeFromRunner(TestOptimizationSettings settings, IDiscoverySe
328328

329329
var tracerSettings = settings.TracerSettings;
330330
Log.Debug("TestOptimization: Setting up the test session name to: {TestSessionName}", settings.TestSessionName);
331-
Log.Debug("TestOptimization: Setting up the service name to: {ServiceName}", tracerSettings.ServiceName);
331+
Log.Debug("TestOptimization: Setting up the service name to: {ServiceName}", tracerSettings.MutableSettings.ServiceName);
332332

333333
// Initialize Tracer
334334
Log.Information("TestOptimization: Initialize Test Tracer instance");

tracer/src/Datadog.Trace/ClrProfiler/AutoInstrumentation/ManualInstrumentation/Configuration/TracerSettings/PopulateDictionaryIntegration.cs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -48,29 +48,29 @@ internal static void PopulateSettings(Dictionary<string, object?> values, Trace.
4848
// record all the settings in the dictionary
4949
values[TracerSettingKeyConstants.AgentUriKey] = settings.Exporter.AgentUri;
5050
#pragma warning disable CS0618 // Type or member is obsolete
51-
values[TracerSettingKeyConstants.AnalyticsEnabledKey] = settings.AnalyticsEnabled;
51+
values[TracerSettingKeyConstants.AnalyticsEnabledKey] = settings.MutableSettings.AnalyticsEnabled;
5252
#pragma warning restore CS0618 // Type or member is obsolete
53-
values[TracerSettingKeyConstants.CustomSamplingRules] = settings.CustomSamplingRules;
53+
values[TracerSettingKeyConstants.CustomSamplingRules] = settings.MutableSettings.CustomSamplingRules;
5454
values[TracerSettingKeyConstants.DiagnosticSourceEnabledKey] = GlobalSettings.Instance.DiagnosticSourceEnabled;
55-
values[TracerSettingKeyConstants.DisabledIntegrationNamesKey] = settings.DisabledIntegrationNames;
56-
values[TracerSettingKeyConstants.EnvironmentKey] = settings.Environment;
57-
values[TracerSettingKeyConstants.GlobalSamplingRateKey] = settings.GlobalSamplingRate;
58-
values[TracerSettingKeyConstants.GrpcTags] = settings.GrpcTags;
59-
values[TracerSettingKeyConstants.HeaderTags] = settings.HeaderTags;
60-
values[TracerSettingKeyConstants.KafkaCreateConsumerScopeEnabledKey] = settings.KafkaCreateConsumerScopeEnabled;
55+
values[TracerSettingKeyConstants.DisabledIntegrationNamesKey] = settings.MutableSettings.DisabledIntegrationNames;
56+
values[TracerSettingKeyConstants.EnvironmentKey] = settings.MutableSettings.Environment;
57+
values[TracerSettingKeyConstants.GlobalSamplingRateKey] = settings.MutableSettings.GlobalSamplingRate;
58+
values[TracerSettingKeyConstants.GrpcTags] = settings.MutableSettings.GrpcTags;
59+
values[TracerSettingKeyConstants.HeaderTags] = settings.MutableSettings.HeaderTags;
60+
values[TracerSettingKeyConstants.KafkaCreateConsumerScopeEnabledKey] = settings.MutableSettings.KafkaCreateConsumerScopeEnabled;
6161
#pragma warning disable DD0002 // This API is only for public usage and should not be called internally (there's no internal version currently)
62-
values[TracerSettingKeyConstants.LogsInjectionEnabledKey] = settings.LogsInjectionEnabled;
62+
values[TracerSettingKeyConstants.LogsInjectionEnabledKey] = settings.MutableSettings.LogsInjectionEnabled;
6363
#pragma warning restore DD0002
64-
values[TracerSettingKeyConstants.MaxTracesSubmittedPerSecondKey] = settings.MaxTracesSubmittedPerSecond;
65-
values[TracerSettingKeyConstants.ServiceNameKey] = settings.ServiceName;
66-
values[TracerSettingKeyConstants.ServiceVersionKey] = settings.ServiceVersion;
67-
values[TracerSettingKeyConstants.StartupDiagnosticLogEnabledKey] = settings.StartupDiagnosticLogEnabled;
64+
values[TracerSettingKeyConstants.MaxTracesSubmittedPerSecondKey] = settings.MutableSettings.MaxTracesSubmittedPerSecond;
65+
values[TracerSettingKeyConstants.ServiceNameKey] = settings.MutableSettings.ServiceName;
66+
values[TracerSettingKeyConstants.ServiceVersionKey] = settings.MutableSettings.ServiceVersion;
67+
values[TracerSettingKeyConstants.StartupDiagnosticLogEnabledKey] = settings.MutableSettings.StartupDiagnosticLogEnabled;
6868
values[TracerSettingKeyConstants.StatsComputationEnabledKey] = settings.StatsComputationEnabled;
69-
values[TracerSettingKeyConstants.TraceEnabledKey] = settings.TraceEnabled;
70-
values[TracerSettingKeyConstants.TracerMetricsEnabledKey] = settings.TracerMetricsEnabled;
69+
values[TracerSettingKeyConstants.TraceEnabledKey] = settings.MutableSettings.TraceEnabled;
70+
values[TracerSettingKeyConstants.TracerMetricsEnabledKey] = settings.MutableSettings.TracerMetricsEnabled;
7171

72-
values[TracerSettingKeyConstants.GlobalTagsKey] = settings.GlobalTags;
73-
values[TracerSettingKeyConstants.IntegrationSettingsKey] = BuildIntegrationSettings(settings.Integrations);
72+
values[TracerSettingKeyConstants.GlobalTagsKey] = settings.MutableSettings.GlobalTags;
73+
values[TracerSettingKeyConstants.IntegrationSettingsKey] = BuildIntegrationSettings(settings.MutableSettings.Integrations);
7474
}
7575

7676
private static Dictionary<string, object?[]>? BuildIntegrationSettings(IntegrationSettingsCollection settings)

tracer/src/Datadog.Trace/ClrProfiler/AutoInstrumentation/ManualInstrumentation/Tracer/CtorIntegration.cs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -48,30 +48,30 @@ internal static void PopulateSettings(Dictionary<string, object?> values, Tracer
4848
// This key is used to detect if the settings have been populated _at all_, so should always be sent
4949
values[TracerSettingKeyConstants.AgentUriKey] = settings.Exporter.AgentUri;
5050
#pragma warning disable CS0618 // Type or member is obsolete
51-
values[TracerSettingKeyConstants.AnalyticsEnabledKey] = settings.AnalyticsEnabled;
51+
values[TracerSettingKeyConstants.AnalyticsEnabledKey] = settings.MutableSettings.AnalyticsEnabled;
5252
#pragma warning restore CS0618 // Type or member is obsolete
53-
values[TracerSettingKeyConstants.CustomSamplingRules] = settings.CustomSamplingRules;
53+
values[TracerSettingKeyConstants.CustomSamplingRules] = settings.MutableSettings.CustomSamplingRules;
5454
values[TracerSettingKeyConstants.DiagnosticSourceEnabledKey] = GlobalSettings.Instance.DiagnosticSourceEnabled;
55-
values[TracerSettingKeyConstants.EnvironmentKey] = settings.Environment;
56-
values[TracerSettingKeyConstants.GlobalSamplingRateKey] = settings.GlobalSamplingRate;
57-
values[TracerSettingKeyConstants.KafkaCreateConsumerScopeEnabledKey] = settings.KafkaCreateConsumerScopeEnabled;
55+
values[TracerSettingKeyConstants.EnvironmentKey] = settings.MutableSettings.Environment;
56+
values[TracerSettingKeyConstants.GlobalSamplingRateKey] = settings.MutableSettings.GlobalSamplingRate;
57+
values[TracerSettingKeyConstants.KafkaCreateConsumerScopeEnabledKey] = settings.MutableSettings.KafkaCreateConsumerScopeEnabled;
5858
#pragma warning disable DD0002 // This API is only for public usage and should not be called internally (there's no internal version currently)
59-
values[TracerSettingKeyConstants.LogsInjectionEnabledKey] = settings.LogsInjectionEnabled;
59+
values[TracerSettingKeyConstants.LogsInjectionEnabledKey] = settings.MutableSettings.LogsInjectionEnabled;
6060
#pragma warning restore DD0002
61-
values[TracerSettingKeyConstants.MaxTracesSubmittedPerSecondKey] = settings.MaxTracesSubmittedPerSecond;
62-
values[TracerSettingKeyConstants.ServiceNameKey] = settings.ServiceName;
63-
values[TracerSettingKeyConstants.ServiceVersionKey] = settings.ServiceVersion;
64-
values[TracerSettingKeyConstants.StartupDiagnosticLogEnabledKey] = settings.StartupDiagnosticLogEnabled;
61+
values[TracerSettingKeyConstants.MaxTracesSubmittedPerSecondKey] = settings.MutableSettings.MaxTracesSubmittedPerSecond;
62+
values[TracerSettingKeyConstants.ServiceNameKey] = settings.MutableSettings.ServiceName;
63+
values[TracerSettingKeyConstants.ServiceVersionKey] = settings.MutableSettings.ServiceVersion;
64+
values[TracerSettingKeyConstants.StartupDiagnosticLogEnabledKey] = settings.MutableSettings.StartupDiagnosticLogEnabled;
6565
values[TracerSettingKeyConstants.StatsComputationEnabledKey] = settings.StatsComputationEnabled;
66-
values[TracerSettingKeyConstants.TraceEnabledKey] = settings.TraceEnabled;
67-
values[TracerSettingKeyConstants.TracerMetricsEnabledKey] = settings.TracerMetricsEnabled;
66+
values[TracerSettingKeyConstants.TraceEnabledKey] = settings.MutableSettings.TraceEnabled;
67+
values[TracerSettingKeyConstants.TracerMetricsEnabledKey] = settings.MutableSettings.TracerMetricsEnabled;
6868

6969
// probably don't _have_ to copy these dictionaries, but playing it safe
70-
values[TracerSettingKeyConstants.GlobalTagsKey] = new ConcurrentDictionary<string, string>(settings.GlobalTags);
71-
values[TracerSettingKeyConstants.GrpcTags] = new ConcurrentDictionary<string, string>(settings.GrpcTags);
72-
values[TracerSettingKeyConstants.HeaderTags] = new ConcurrentDictionary<string, string>(settings.HeaderTags);
70+
values[TracerSettingKeyConstants.GlobalTagsKey] = new ConcurrentDictionary<string, string>(settings.MutableSettings.GlobalTags);
71+
values[TracerSettingKeyConstants.GrpcTags] = new ConcurrentDictionary<string, string>(settings.MutableSettings.GrpcTags);
72+
values[TracerSettingKeyConstants.HeaderTags] = new ConcurrentDictionary<string, string>(settings.MutableSettings.HeaderTags);
7373

74-
values[TracerSettingKeyConstants.IntegrationSettingsKey] = BuildIntegrationSettings(settings.Integrations);
74+
values[TracerSettingKeyConstants.IntegrationSettingsKey] = BuildIntegrationSettings(settings.MutableSettings.Integrations);
7575
}
7676

7777
private static Dictionary<string, object?[]>? BuildIntegrationSettings(IntegrationSettingsCollection settings)

tracer/src/Datadog.Trace/ClrProfiler/Instrumentation.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,14 +93,14 @@ private static void PropagateStableConfiguration()
9393
_ => NativeInterop.ProfilingEnabled.Disabled
9494
},
9595

96-
TracingEnabled = tracerSettings.TraceEnabled,
96+
TracingEnabled = tracerSettings.MutableSettings.TraceEnabled,
9797
IastEnabled = Iast.Iast.Instance.Settings.Enabled,
9898
RaspEnabled = Security.Instance.Settings.RaspEnabled,
9999
DynamicInstrumentationEnabled = false, // TODO: find where to get this value from but for the other native p/invoke call
100100
RuntimeId = RuntimeId.Get(),
101-
Environment = tracerSettings.Environment,
101+
Environment = tracerSettings.MutableSettings.Environment,
102102
ServiceName = tracer.DefaultServiceName,
103-
Version = tracerSettings.ServiceVersion
103+
Version = tracerSettings.MutableSettings.ServiceVersion
104104
};
105105

106106
// Make sure nothing bubbles up, even if there are issues

tracer/src/Datadog.Trace/Configuration/ConfigurationKeys.Logging.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ internal static partial class ConfigurationKeys
1212
/// <summary>
1313
/// Configuration key for enabling or disabling the diagnostic log at startup
1414
/// </summary>
15-
/// <seealso cref="TracerSettings.StartupDiagnosticLogEnabled"/>
15+
/// <seealso cref="MutableSettings.StartupDiagnosticLogEnabled"/>
1616
public const string StartupDiagnosticLogEnabled = "DD_TRACE_STARTUP_LOGS";
1717

1818
/// <summary>

0 commit comments

Comments
 (0)