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
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// <copyright file="NullDiscoveryService.cs" company="Datadog">
// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2 License.
// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc.
// </copyright>

#nullable enable
using System;
using System.Threading.Tasks;

namespace Datadog.Trace.Agent.DiscoveryService;

internal class NullDiscoveryService : IDiscoveryService
{
public static readonly NullDiscoveryService Instance = new();

public void SubscribeToChanges(Action<AgentConfiguration> callback)
{
}

public void RemoveSubscription(Action<AgentConfiguration> callback)
{
}

public Task DisposeAsync() => Task.CompletedTask;
}
3 changes: 3 additions & 0 deletions tracer/src/Datadog.Trace/Ci/CITracerManagerFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -75,5 +75,8 @@ protected override IAgentWriter GetAgentWriter(ImmutableTracerSettings settings,
return new CIAgentWriter(settings, sampler, discoveryService, traceBufferSize);
}
}

protected override IDiscoveryService GetDiscoveryService(ImmutableTracerSettings settings)
=> _settings.Agentless ? NullDiscoveryService.Instance : base.GetDiscoveryService(settings);
}
}
2 changes: 1 addition & 1 deletion tracer/src/Datadog.Trace/Tracer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public Tracer(TracerSettings settings)
/// The <see cref="TracerManager"/> created will be scoped specifically to this instance.
/// </summary>
internal Tracer(TracerSettings settings, IAgentWriter agentWriter, ITraceSampler sampler, IScopeManager scopeManager, IDogStatsd statsd, ITelemetryController telemetry = null, IDiscoveryService discoveryService = null)
: this(TracerManagerFactory.Instance.CreateTracerManager(settings?.Build(), agentWriter, sampler, scopeManager, statsd, runtimeMetrics: null, logSubmissionManager: null, telemetry: telemetry ?? NullTelemetryController.Instance, discoveryService))
: this(TracerManagerFactory.Instance.CreateTracerManager(settings?.Build(), agentWriter, sampler, scopeManager, statsd, runtimeMetrics: null, logSubmissionManager: null, telemetry: telemetry ?? NullTelemetryController.Instance, discoveryService ?? NullDiscoveryService.Instance))
{
}

Expand Down
5 changes: 4 additions & 1 deletion tracer/src/Datadog.Trace/TracerManagerFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ internal TracerManager CreateTracerManager(
GetApplicationName() ??
UnknownServiceName;

discoveryService ??= DiscoveryService.Create(settings.Exporter);
discoveryService ??= GetDiscoveryService(settings);

statsd = settings.TracerMetricsEnabled
? (statsd ?? CreateDogStatsdClient(settings, defaultServiceName))
Expand Down Expand Up @@ -180,6 +180,9 @@ protected virtual IAgentWriter GetAgentWriter(ImmutableTracerSettings settings,
return new AgentWriter(api, statsAggregator, statsd, maxBufferSize: settings.TraceBufferSize);
}

protected virtual IDiscoveryService GetDiscoveryService(ImmutableTracerSettings settings)
=> DiscoveryService.Create(settings.Exporter);

private static IDogStatsd CreateDogStatsdClient(ImmutableTracerSettings settings, string serviceName)
{
try
Expand Down
12 changes: 7 additions & 5 deletions tracer/test/Datadog.Trace.IntegrationTests/StatsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using System.Threading;
using System.Threading.Tasks;
using Datadog.Trace.Agent;
using Datadog.Trace.Agent.DiscoveryService;
using Datadog.Trace.Configuration;
using Datadog.Trace.ExtensionMethods;
using Datadog.Trace.PlatformHelpers;
Expand Down Expand Up @@ -59,8 +60,8 @@ public async Task SendsStatsWithProcessing_Normalizer()
}
};

var immutableSettings = settings.Build();
var tracer = new Tracer(settings, agentWriter: null, sampler: null, scopeManager: null, statsd: null);
var discovery = DiscoveryService.Create(settings.Build().Exporter);
var tracer = new Tracer(settings, agentWriter: null, sampler: null, scopeManager: null, statsd: null, discoveryService: discovery);
Span span;

// Wait until the discovery service has been reached and we've confirmed that we can send stats
Expand Down Expand Up @@ -207,8 +208,8 @@ public async Task SendsStatsWithProcessing_Obfuscator()
}
};

var immutableSettings = settings.Build();
var tracer = new Tracer(settings, agentWriter: null, sampler: null, scopeManager: null, statsd: null);
var discovery = DiscoveryService.Create(settings.Build().Exporter);
var tracer = new Tracer(settings, agentWriter: null, sampler: null, scopeManager: null, statsd: null, discoveryService: discovery);

// Wait until the discovery service has been reached and we've confirmed that we can send stats
var spinSucceeded = SpinWait.SpinUntil(() => tracer.TracerManager.AgentWriter is AgentWriter { CanComputeStats: true }, 5_000);
Expand Down Expand Up @@ -367,7 +368,8 @@ private async Task SendStatsHelper(bool statsComputationEnabled, bool expectStat

var immutableSettings = settings.Build();

var tracer = new Tracer(settings, agentWriter: null, sampler: null, scopeManager: null, statsd: null);
var discovery = DiscoveryService.Create(immutableSettings.Exporter);
var tracer = new Tracer(settings, agentWriter: null, sampler: null, scopeManager: null, statsd: null, discoveryService: discovery);

// Wait until the discovery service has been reached and we've confirmed that we can send stats
if (expectStats)
Expand Down