Skip to content

Commit 7e58940

Browse files
committed
Merge branch 'main' into mohammad/mass_transit_intg
2 parents 8d30d90 + 27b7257 commit 7e58940

3 files changed

Lines changed: 33 additions & 65 deletions

File tree

tracer/src/Datadog.Trace/Configuration/ConfigurationSources/JsonConfigurationSource.cs

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,29 @@ internal class JsonConfigurationSource : IConfigurationSource
2929
{
3030
private static readonly IDatadogLogger Log = DatadogLogging.GetLoggerFor(typeof(JsonConfigurationSource));
3131
private readonly JToken? _configuration;
32+
private readonly ConfigurationOrigins _origin;
3233

33-
internal JsonConfigurationSource(string json, ConfigurationOrigins origin)
34-
: this(json, origin, j => (JToken?)JsonHelper.DeserializeObject(j))
34+
/// <summary>
35+
/// Initializes a new instance of the <see cref="JsonConfigurationSource"/>
36+
/// class with the specified JSON string.
37+
/// </summary>
38+
/// <param name="json">A JSON string that contains configuration values.</param>
39+
[PublicApi]
40+
public JsonConfigurationSource(string json)
41+
: this(json, ConfigurationOrigins.Code)
3542
{
43+
TelemetryFactory.Metrics.Record(PublicApiUsage.JsonConfigurationSource_Ctor_Json);
3644
}
3745

38-
internal JsonConfigurationSource(string json, ConfigurationOrigins origin, string? filename)
39-
: this(json, origin, j => (JToken?)JsonHelper.DeserializeObject(j))
46+
internal JsonConfigurationSource(string json, ConfigurationOrigins origin)
47+
: this(json, origin, j => (JToken?)JsonConvert.DeserializeObject(j))
4048
{
41-
JsonConfigurationFilePath = filename;
4249
}
4350

44-
internal JsonConfigurationSource(JToken? configToken, ConfigurationOrigins origin, Func<JToken?, JToken?> extractConfig)
51+
internal JsonConfigurationSource(string json, ConfigurationOrigins origin, string filename)
52+
: this(json, origin, j => (JToken?)JsonConvert.DeserializeObject(j))
4553
{
46-
if (configToken is null) { ThrowHelper.ThrowArgumentNullException(nameof(configToken)); }
47-
48-
if (extractConfig is null) { ThrowHelper.ThrowArgumentNullException(nameof(extractConfig)); }
49-
50-
_configuration = extractConfig(configToken);
51-
Origin = origin;
54+
ConfigurationSource = filename;
5255
}
5356

5457
private protected JsonConfigurationSource(string json, ConfigurationOrigins origin, Func<string, JToken?> deserialize)
@@ -61,9 +64,7 @@ private protected JsonConfigurationSource(string json, ConfigurationOrigins orig
6164
Origin = origin;
6265
}
6366

64-
public ConfigurationOrigins Origin { get; }
65-
66-
internal string? JsonConfigurationFilePath { get; }
67+
internal string ConfigurationSource { get; set; } = "N/A because Jsonconfigsource.cs";
6768

6869
internal bool TreatNullDictionaryAsEmpty { get; set; } = true;
6970

@@ -80,6 +81,17 @@ internal static JsonConfigurationSource FromFile(string filename, ConfigurationO
8081
return new JsonConfigurationSource(json, origin, filename);
8182
}
8283

84+
/// <summary>
85+
/// Returns a string that represents the current object.
86+
/// </summary>
87+
/// <returns>
88+
/// A string that indicates the source of the datadog.json configuration.
89+
/// </returns>
90+
public override string ToString()
91+
{
92+
return "The datadog.json configuration is coming from " + ConfigurationSource;
93+
}
94+
8395
/// <summary>
8496
/// Gets the value of the setting with the specified key and converts it into type <typeparamref name="T"/>.
8597
/// Supports JPath.

tracer/src/Datadog.Trace/Configuration/TracerSettings.cs

Lines changed: 3 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -663,33 +663,7 @@ not null when string.Equals(value, "otlp", StringComparison.OrdinalIgnoreCase) =
663663
DisabledAdoNetCommandTypes.UnionWith(userSplit);
664664
}
665665

666-
IsFlaggingProviderEnabled = config.WithKeys(ConfigurationKeys.FeatureFlags.FlaggingProviderEnabled)
667-
.AsBool(false);
668-
669-
if (source is CompositeConfigurationSource compositeSource)
670-
{
671-
foreach (var nestedSource in compositeSource)
672-
{
673-
if (nestedSource is JsonConfigurationSource { JsonConfigurationFilePath: { } jsonFilePath }
674-
&& !string.IsNullOrEmpty(jsonFilePath))
675-
{
676-
JsonConfigurationFilePaths.Add(jsonFilePath);
677-
}
678-
}
679-
}
680-
681-
OpenTelemetryMetricsEnabled = config
682-
.WithKeys(ConfigurationKeys.FeatureFlags.OpenTelemetryMetricsEnabled)
683-
.AsBool(defaultValue: false);
684-
685-
var enabledMeters = config.WithKeys(ConfigurationKeys.FeatureFlags.OpenTelemetryMeterNames).AsString();
686-
OpenTelemetryMeterNames = !string.IsNullOrEmpty(enabledMeters)
687-
? new HashSet<string>(TrimSplitString(enabledMeters, commaSeparator), StringComparer.Ordinal)
688-
: new HashSet<string>(StringComparer.Ordinal);
689-
690-
var disabledActivitySources = config.WithKeys(ConfigurationKeys.DisabledActivitySources).AsString();
691-
692-
DisabledActivitySources = !string.IsNullOrEmpty(disabledActivitySources) ? TrimSplitString(disabledActivitySources, commaSeparator) : [];
666+
this.JsonConfigurationSource = source.ToString() ?? "N/A because Tracer Settings";
693667

694668
// we "enrich" with these values which aren't _strictly_ configuration, but which we want to track as we tracked them in v1
695669
telemetry.Record(ConfigTelemetryData.NativeTracerVersion, Instrumentation.GetNativeTracerVersion(), recordValue: true, ConfigurationOrigins.Default);
@@ -1325,30 +1299,9 @@ not null when string.Equals(value, "otlp", StringComparison.OrdinalIgnoreCase) =
13251299
/// </summary>
13261300
internal HashSet<string> DisabledAdoNetCommandTypes { get; }
13271301

1328-
/// <summary>
1329-
/// Gets a value indicating whether remote Feature Flags Provider is enabled
1330-
/// </summary>
1331-
internal bool IsFlaggingProviderEnabled { get; }
1332-
1333-
/// <summary>
1334-
/// Gets a value indicating whether partial flush is enabled
1335-
/// </summary>
1336-
public bool PartialFlushEnabled { get; }
1337-
1338-
/// <summary>
1339-
/// Gets the minimum number of closed spans in a trace before it's partially flushed
1340-
/// </summary>
1341-
public int PartialFlushMinSpans { get; }
1342-
1343-
internal SettingsManager Manager { get; }
1344-
1345-
internal List<string> JsonConfigurationFilePaths { get; } = new();
1302+
internal ImmutableDynamicSettings DynamicSettings { get; init; } = new();
13461303

1347-
/// <summary>
1348-
/// Gets which GraphQL error extensions to capture.
1349-
/// A comma-separated list of extension keys to capture. Empty or not present means no extensions are captured. /// </summary>
1350-
/// <seealso cref="ConfigurationKeys.GraphQLErrorExtensions"/>
1351-
internal string[] GraphQLErrorExtensions { get; }
1304+
internal string JsonConfigurationSource { get; set; } = "N/A from default";
13521305

13531306
/// <summary>
13541307
/// Gets a value indicating whether remote configuration is potentially available.

tracer/src/Datadog.Trace/TracerManager.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,9 @@ void WriteDictionary(IReadOnlyDictionary<string, string> dictionary)
603603
writer.WritePropertyName("trace_propagation_behavior_extract");
604604
writer.WriteValue(instanceSettings.PropagationBehaviorExtract);
605605

606+
writer.WritePropertyName("tracer_datadog_json_configuration_source");
607+
writer.WriteValue(instanceSettings.JsonConfigurationSource);
608+
606609
writer.WritePropertyName("trace_propagation_style_inject");
607610
writer.WriteStartArray();
608611

0 commit comments

Comments
 (0)