|
97 | 97 | import datadog.trace.core.propagation.XRayPropagator; |
98 | 98 | import datadog.trace.core.scopemanager.ContinuableScopeManager; |
99 | 99 | import datadog.trace.core.servicediscovery.ServiceDiscovery; |
| 100 | +import datadog.trace.core.servicediscovery.ServiceDiscoveryFactory; |
100 | 101 | import datadog.trace.core.taginterceptor.RuleFlags; |
101 | 102 | import datadog.trace.core.taginterceptor.TagInterceptor; |
102 | 103 | import datadog.trace.core.traceinterceptor.LatencyTraceInterceptor; |
@@ -322,7 +323,7 @@ public static class CoreTracerBuilder { |
322 | 323 | private TagInterceptor tagInterceptor; |
323 | 324 | private boolean strictTraceWrites; |
324 | 325 | private InstrumentationGateway instrumentationGateway; |
325 | | - private ServiceDiscovery serviceDiscovery; |
| 326 | + private ServiceDiscoveryFactory serviceDiscoveryFactory; |
326 | 327 | private TimeSource timeSource; |
327 | 328 | private DataStreamsMonitoring dataStreamsMonitoring; |
328 | 329 | private ProfilingContextIntegration profilingContextIntegration = |
@@ -438,8 +439,9 @@ public CoreTracerBuilder instrumentationGateway(InstrumentationGateway instrumen |
438 | 439 | return this; |
439 | 440 | } |
440 | 441 |
|
441 | | - public CoreTracerBuilder serviceDiscovery(ServiceDiscovery serviceDiscovery) { |
442 | | - this.serviceDiscovery = serviceDiscovery; |
| 442 | + public CoreTracerBuilder serviceDiscoveryFactory( |
| 443 | + ServiceDiscoveryFactory serviceDiscoveryFactory) { |
| 444 | + this.serviceDiscoveryFactory = serviceDiscoveryFactory; |
443 | 445 | return this; |
444 | 446 | } |
445 | 447 |
|
@@ -535,7 +537,7 @@ public CoreTracer build() { |
535 | 537 | tagInterceptor, |
536 | 538 | strictTraceWrites, |
537 | 539 | instrumentationGateway, |
538 | | - serviceDiscovery, |
| 540 | + serviceDiscoveryFactory, |
539 | 541 | timeSource, |
540 | 542 | dataStreamsMonitoring, |
541 | 543 | profilingContextIntegration, |
@@ -628,7 +630,7 @@ private CoreTracer( |
628 | 630 | final TagInterceptor tagInterceptor, |
629 | 631 | final boolean strictTraceWrites, |
630 | 632 | final InstrumentationGateway instrumentationGateway, |
631 | | - final ServiceDiscovery serviceDiscovery, |
| 633 | + final ServiceDiscoveryFactory serviceDiscoveryFactory, |
632 | 634 | final TimeSource timeSource, |
633 | 635 | final DataStreamsMonitoring dataStreamsMonitoring, |
634 | 636 | final ProfilingContextIntegration profilingContextIntegration, |
@@ -897,8 +899,18 @@ private CoreTracer( |
897 | 899 |
|
898 | 900 | this.localRootSpanTagsNeedIntercept = |
899 | 901 | this.tagInterceptor.needsIntercept(this.localRootSpanTags); |
900 | | - if (serviceDiscovery != null) { |
901 | | - serviceDiscovery.writeTracerMetadata(config); |
| 902 | + if (serviceDiscoveryFactory != null) { |
| 903 | + AgentTaskScheduler.get() |
| 904 | + .schedule( |
| 905 | + () -> { |
| 906 | + final ServiceDiscovery serviceDiscovery = |
| 907 | + serviceDiscoveryFactory.createServiceDiscovery(); |
| 908 | + if (serviceDiscovery != null) { |
| 909 | + serviceDiscovery.writeTracerMetadata(config); |
| 910 | + } |
| 911 | + }, |
| 912 | + 1, |
| 913 | + SECONDS); |
902 | 914 | } |
903 | 915 | } |
904 | 916 |
|
|
0 commit comments