diff --git a/tracer/src/Datadog.Trace/ClrProfiler/AutoInstrumentation/ManualInstrumentation/Tracer/ConfigureIntegration.cs b/tracer/src/Datadog.Trace/ClrProfiler/AutoInstrumentation/ManualInstrumentation/Tracer/ConfigureIntegration.cs
index cd5c0c751dc9..c58650f96475 100644
--- a/tracer/src/Datadog.Trace/ClrProfiler/AutoInstrumentation/ManualInstrumentation/Tracer/ConfigureIntegration.cs
+++ b/tracer/src/Datadog.Trace/ClrProfiler/AutoInstrumentation/ManualInstrumentation/Tracer/ConfigureIntegration.cs
@@ -1,4 +1,4 @@
-//
+//
// 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.
//
@@ -11,6 +11,7 @@
using Datadog.Trace.Configuration.ConfigurationSources;
using Datadog.Trace.Configuration.ConfigurationSources.Telemetry;
using Datadog.Trace.Configuration.Telemetry;
+using Datadog.Trace.Logging;
using Datadog.Trace.Telemetry;
using Datadog.Trace.Telemetry.Metrics;
@@ -32,6 +33,8 @@ namespace Datadog.Trace.ClrProfiler.AutoInstrumentation.ManualInstrumentation.Tr
[EditorBrowsable(EditorBrowsableState.Never)]
public class ConfigureIntegration
{
+ private static readonly IDatadogLogger Log = DatadogLogging.GetLoggerFor();
+
internal static CallTargetState OnMethodBegin(Dictionary values)
{
ConfigureSettingsWithManualOverrides(values, useLegacySettings: false);
@@ -43,6 +46,14 @@ internal static void ConfigureSettingsWithManualOverrides(Dictionary
+// 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.
+//
+
+#nullable enable
+
+using System.Collections.Generic;
+using Datadog.Trace.Agent;
+using Datadog.Trace.ClrProfiler.AutoInstrumentation.ManualInstrumentation.Tracer;
+using Datadog.Trace.Configuration;
+using Datadog.Trace.Logging.TracerFlare;
+using Datadog.Trace.RemoteConfigurationManagement;
+using Datadog.Trace.TestHelpers;
+using FluentAssertions;
+using Moq;
+using Xunit;
+
+namespace Datadog.Trace.Tests.ManualInstrumentation;
+
+[Collection(nameof(TracerInstanceTestCollection))]
+[TracerRestorer]
+public class ConfigureIntegrationTests
+{
+ [Fact]
+ public void ConfigureSettingsWithManualOverrides_DoesNotThrow_WhenTracerIsLocked()
+ {
+ // Arrange: lock the global tracer manager
+ TracerManager.UnsafeReplaceGlobalManager(new LockedTracerManager());
+ TracerManager.Instance.Should().BeAssignableTo();
+
+ // Act/Assert: should not throw and should not replace the manager
+ ConfigureIntegration.ConfigureSettingsWithManualOverrides(new Dictionary(), useLegacySettings: false);
+
+ TracerManager.Instance.Should().BeAssignableTo();
+ }
+
+ private class LockedTracerManager : TracerManager, ILockedTracer
+ {
+ public LockedTracerManager()
+ : base(new TracerSettings(), null, null, null, null, null, null, null, null, null, null, null, null, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())
+ {
+ }
+ }
+}