Skip to content

Commit f82fa15

Browse files
author
Nacho Bonafonte
committed
Remove OpenTelemetrySDK instance, the logic associated there was old not compatible with the documented way of initialising things.
1 parent 98c8396 commit f82fa15

File tree

17 files changed

+128
-141
lines changed

17 files changed

+128
-141
lines changed

Examples/Datadog Sample/main.swift

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,9 @@ let sampleValue = "sampleValue"
2121

2222
let instrumentationScopeName = "DatadogExporter"
2323
let instrumentationScopeVersion = "semver:0.1.0"
24-
var instrumentationScopeInfo = InstrumentationScopeInfo(name: instrumentationScopeName, version: instrumentationScopeVersion)
2524

26-
var tracer: TracerSdk
27-
tracer = OpenTelemetrySDK.instance.tracerProvider.get(instrumentationName: instrumentationScopeName, instrumentationVersion: instrumentationScopeVersion) as! TracerSdk
25+
var tracer: Tracer
26+
tracer = OpenTelemetry.instance.tracerProvider.get(instrumentationName: instrumentationScopeName, instrumentationVersion: instrumentationScopeVersion)
2827

2928
#if os(macOS)
3029
let hostName = Host.current().localizedName
@@ -54,7 +53,13 @@ sleep(10)
5453

5554
func testTraces() {
5655
let spanProcessor = SimpleSpanProcessor(spanExporter: datadogExporter)
57-
OpenTelemetrySDK.instance.tracerProvider.addSpanProcessor(spanProcessor)
56+
57+
OpenTelemetry.registerTracerProvider(tracerProvider:
58+
TracerProviderBuilder()
59+
.add(spanProcessor: spanProcessor)
60+
.build()
61+
)
62+
tracer = OpenTelemetry.instance.tracerProvider.get(instrumentationName: instrumentationScopeName, instrumentationVersion: instrumentationScopeVersion) as! TracerSdk
5863

5964
simpleSpan()
6065
childSpan()
@@ -82,6 +87,7 @@ func testMetrics() {
8287
let processor = MetricProcessorSdk()
8388

8489
let meterProvider = MeterProviderSdk(metricProcessor: processor, metricExporter: datadogExporter, metricPushInterval: 0.1)
90+
OpenTelemetry.registerMeterProvider(meterProvider: meterProvider)
8591

8692
let meter = meterProvider.get(instrumentationName: "MyMeter")
8793

Examples/Logging Tracer/LoggingTracer.swift

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,7 @@ class LoggingTracer: Tracer {
2828
}
2929

3030
func startSpan() -> Span {
31-
if spanContext == nil, !isRootSpan {
32-
spanContext = OpenTelemetry.instance.contextProvider.activeSpan?.context
33-
}
34-
if spanContext != nil {
35-
return LoggingSpan(name: name, kind: .client)
36-
} else {
37-
return DefaultTracer.instance.spanBuilder(spanName: name).startSpan()
38-
}
31+
return LoggingSpan(name: name, kind: .client)
3932
}
4033

4134
func setParent(_ parent: Span) -> Self {

Examples/Logging Tracer/main.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,18 @@ OpenTelemetry.registerTracerProvider(tracerProvider: LoggingTracerProvider())
1313
var tracer = OpenTelemetry.instance.tracerProvider.get(instrumentationName: "ConsoleApp", instrumentationVersion: "semver:1.0.0")
1414

1515

16-
let span1 = tracer.spanBuilder(spanName: "Main (span1)").setActive(true).startSpan()
16+
let span1 = tracer.spanBuilder(spanName: "Main (span1)").startSpan()
17+
OpenTelemetry.instance.contextProvider.setActiveSpan(span1)
1718
let semaphore = DispatchSemaphore(value: 0)
1819
DispatchQueue.global().async {
1920
let span2 = tracer.spanBuilder(spanName: "Main (span2)").startSpan()
2021
OpenTelemetry.instance.contextProvider.setActiveSpan(span2)
2122
OpenTelemetry.instance.contextProvider.activeSpan?.setAttribute(key: "myAttribute", value: "myValue")
2223
sleep(1)
23-
semaphore.signal()
2424
span2.end()
25+
semaphore.signal()
2526
}
2627
span1.end()
2728

2829
semaphore.wait()
30+

Examples/Network Sample/main.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55

66
import Foundation
7+
import OpenTelemetryApi
78
import OpenTelemetrySdk
89
import StdoutExporter
910
import URLSessionInstrumentation
@@ -51,7 +52,11 @@ func simpleNetworkCallWithDelegate() {
5152

5253

5354
let spanProcessor = SimpleSpanProcessor(spanExporter: StdoutExporter(isDebug: true))
54-
OpenTelemetrySDK.instance.tracerProvider.addSpanProcessor(spanProcessor)
55+
OpenTelemetry.registerTracerProvider(tracerProvider:
56+
TracerProviderBuilder()
57+
.add(spanProcessor: spanProcessor)
58+
.build()
59+
)
5560

5661
let networkInstrumentation = URLSessionInstrumentation(configuration: URLSessionInstrumentationConfiguration())
5762

Examples/OTLP Exporter/main.swift

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44
*/
55

66
import Foundation
7-
import OpenTelemetryProtocolExporter
7+
import GRPC
8+
import NIO
9+
import NIOSSL
810
import OpenTelemetryApi
11+
import OpenTelemetryProtocolExporter
912
import OpenTelemetrySdk
1013
import ResourceExtension
14+
import SignPostIntegration
1115
import StdoutExporter
1216
import ZipkinExporter
13-
import SignPostIntegration
14-
import GRPC
15-
import NIO
16-
import NIOSSL
1717

1818
let sampleKey = "sampleKey"
1919
let sampleValue = "sampleValue"
@@ -22,10 +22,6 @@ var resources = DefaultResources().get()
2222

2323
let instrumentationScopeName = "OTLPExporter"
2424
let instrumentationScopeVersion = "semver:0.1.0"
25-
var instrumentationScopeInfo = InstrumentationScopeInfo(name: instrumentationScopeName, version: instrumentationScopeVersion)
26-
27-
var tracer: TracerSdk
28-
tracer = OpenTelemetrySDK.instance.tracerProvider.get(instrumentationName: instrumentationScopeName, instrumentationVersion: instrumentationScopeVersion) as! TracerSdk
2925

3026
let configuration = ClientConnection.Configuration.default(
3127
target: .hostAndPort("localhost", 4317),
@@ -38,10 +34,18 @@ let stdoutExporter = StdoutExporter()
3834
let spanExporter = MultiSpanExporter(spanExporters: [otlpTraceExporter, stdoutExporter])
3935

4036
let spanProcessor = SimpleSpanProcessor(spanExporter: spanExporter)
41-
OpenTelemetrySDK.instance.tracerProvider.addSpanProcessor(spanProcessor)
37+
OpenTelemetry.registerTracerProvider(tracerProvider:
38+
TracerProviderBuilder()
39+
.add(spanProcessor: spanProcessor)
40+
.build()
41+
)
42+
43+
let tracer = OpenTelemetry.instance.tracerProvider.get(instrumentationName: instrumentationScopeName, instrumentationVersion: instrumentationScopeVersion)
44+
4245

4346
if #available(macOS 10.14, *), #available(iOS 12.0, *) {
44-
OpenTelemetrySDK.instance.tracerProvider.addSpanProcessor(SignPostIntegration())
47+
let tracerProviderSDK = OpenTelemetry.instance.tracerProvider as? TracerProviderSdk
48+
tracerProviderSDK?.addSpanProcessor(SignPostIntegration())
4549
}
4650

4751
func createSpans() {
@@ -52,34 +56,37 @@ func createSpans() {
5256
doWork()
5357
}
5458
Thread.sleep(forTimeInterval: 0.5)
55-
59+
5660
let parentSpan2 = tracer.spanBuilder(spanName: "Another").setSpanKind(spanKind: .client).setActive(true).startSpan()
5761
parentSpan2.setAttribute(key: sampleKey, value: sampleValue)
5862
// do more Work
5963
for _ in 1...3 {
6064
doWork()
6165
}
6266
Thread.sleep(forTimeInterval: 0.5)
63-
67+
6468
parentSpan2.end()
6569
parentSpan1.end()
6670
}
6771

6872
func doWork() {
6973
let childSpan = tracer.spanBuilder(spanName: "doWork").setSpanKind(spanKind: .client).startSpan()
7074
childSpan.setAttribute(key: sampleKey, value: sampleValue)
71-
Thread.sleep(forTimeInterval: Double.random(in: 0..<10)/100)
75+
Thread.sleep(forTimeInterval: Double.random(in: 0 ..< 10) / 100)
7276
childSpan.end()
7377
}
7478

7579
// Create a Parent span (Main) and do some Work (child Spans). Repeat for another Span.
7680
createSpans()
7781

78-
//Metrics
82+
// Metrics
7983
let otlpMetricExporter = OtlpMetricExporter(channel: client)
8084
let processor = MetricProcessorSdk()
8185
let meterProvider = MeterProviderSdk(metricProcessor: processor, metricExporter: otlpMetricExporter, metricPushInterval: 0.1)
8286

87+
OpenTelemetry.registerMeterProvider(meterProvider: meterProvider)
88+
89+
8390
var meter = meterProvider.get(instrumentationName: "otlp_example_meter'")
8491
var exampleCounter = meter.createIntCounter(name: "otlp_example_counter")
8592
var exampleMeasure = meter.createIntMeasure(name: "otlp_example_measure")

Examples/Prometheus Sample/main.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55

66
import Foundation
7+
import OpenTelemetryApi
78
import OpenTelemetrySdk
89
import PrometheusExporter
910

@@ -31,6 +32,7 @@ let processor = MetricProcessorSdk()
3132

3233

3334
let meterProvider = MeterProviderSdk(metricProcessor: processor, metricExporter: promExporter, metricPushInterval: 0.1)
35+
OpenTelemetry.registerMeterProvider(meterProvider: meterProvider)
3436

3537
var meter = meterProvider.get(instrumentationName: "MyMeter")
3638

Examples/Simple Exporter/main.swift

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,43 @@ import JaegerExporter
88
import OpenTelemetryApi
99
import OpenTelemetrySdk
1010
import ResourceExtension
11+
import SignPostIntegration
1112
import StdoutExporter
1213
import ZipkinExporter
13-
import SignPostIntegration
1414

1515
let sampleKey = "sampleKey"
1616
let sampleValue = "sampleValue"
1717

18-
let resources = DefaultResources().get()
19-
2018
let instrumentationScopeName = "SimpleExporter"
2119
let instrumentationScopeVersion = "semver:0.1.0"
22-
var instrumentationScopeInfo = InstrumentationScopeInfo(name: instrumentationScopeName, version: instrumentationScopeVersion)
2320

2421
var tracer: TracerSdk
25-
tracer = OpenTelemetrySDK.instance.tracerProvider.get(instrumentationName: instrumentationScopeName, instrumentationVersion: instrumentationScopeVersion) as! TracerSdk
22+
let jaegerCollectorAdress = "localhost"
23+
let jaegerExporter = JaegerSpanExporter(serviceName: "SimpleExporter", collectorAddress: jaegerCollectorAdress)
24+
let stdoutExporter = StdoutExporter()
25+
26+
// let zipkinExporterOptions = ZipkinTraceExporterOptions()
27+
// let zipkinExporter = ZipkinTraceExporter(options: zipkinExporterOptions)
28+
29+
let spanExporter = MultiSpanExporter(spanExporters: [jaegerExporter, stdoutExporter /* , zipkinExporter */ ])
30+
let spanProcessor = SimpleSpanProcessor(spanExporter: spanExporter)
31+
let resources = DefaultResources().get()
32+
33+
OpenTelemetry.registerTracerProvider(tracerProvider:
34+
TracerProviderBuilder()
35+
.add(spanProcessor: spanProcessor)
36+
.with(resource: resources)
37+
.build()
38+
)
39+
40+
tracer = OpenTelemetry.instance.tracerProvider.get(instrumentationName: instrumentationScopeName, instrumentationVersion: instrumentationScopeVersion) as! TracerSdk
41+
42+
43+
if #available(iOS 12.0, macOS 10.14, *) {
44+
let tracerProviderSDK = OpenTelemetry.instance.tracerProvider as? TracerProviderSdk
45+
tracerProviderSDK?.addSpanProcessor(SignPostIntegration())
46+
}
47+
2648

2749
func simpleSpan() {
2850
let span = tracer.spanBuilder(spanName: "SimpleSpan").setSpanKind(spanKind: .client).startSpan()
@@ -42,23 +64,6 @@ func childSpan() {
4264
span.end()
4365
}
4466

45-
let jaegerCollectorAdress = "localhost"
46-
let jaegerExporter = JaegerSpanExporter(serviceName: "SimpleExporter", collectorAddress: jaegerCollectorAdress)
47-
let stdoutExporter = StdoutExporter()
48-
49-
// let zipkinExporterOptions = ZipkinTraceExporterOptions()
50-
// let zipkinExporter = ZipkinTraceExporter(options: zipkinExporterOptions)
51-
52-
let spanExporter = MultiSpanExporter(spanExporters: [jaegerExporter, stdoutExporter /* , zipkinExporter */ ])
53-
54-
let spanProcessor = SimpleSpanProcessor(spanExporter: spanExporter)
55-
OpenTelemetrySDK.instance.tracerProvider.addSpanProcessor(spanProcessor)
56-
57-
if #available(iOS 12.0, macOS 10.14, *) {
58-
OpenTelemetrySDK.instance.tracerProvider.addSpanProcessor(SignPostIntegration())
59-
}
60-
61-
6267
simpleSpan()
6368
sleep(1)
6469
childSpan()

Sources/Importers/OpenTracingShim/TraceShim.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ public class TraceShim {
1818
}
1919

2020
public static func createTracerShim() -> OTTracer {
21-
return TracerShim(telemetryInfo: TelemetryInfo(tracer: TraceShim.getTracer(tracerProvider: OpenTelemetrySDK.instance.tracerProvider),
22-
baggageManager: OpenTelemetrySDK.instance.baggageManager,
23-
propagators: OpenTelemetrySDK.instance.propagators))
21+
return TracerShim(telemetryInfo: TelemetryInfo(tracer: TraceShim.getTracer(tracerProvider: OpenTelemetry.instance.tracerProvider),
22+
baggageManager: OpenTelemetry.instance.baggageManager,
23+
propagators: OpenTelemetry.instance.propagators))
2424
}
2525

2626
public static func createTracerShim(tracerProvider: TracerProvider, baggageManager: BaggageManager) -> OTTracer {
2727
return TracerShim(telemetryInfo: TelemetryInfo(tracer: TraceShim.getTracer(tracerProvider: tracerProvider),
2828
baggageManager: baggageManager,
29-
propagators: OpenTelemetrySDK.instance.propagators))
29+
propagators: OpenTelemetry.instance.propagators))
3030
}
3131

3232
private static func getTracer(tracerProvider: TracerProvider) -> Tracer {

Sources/Instrumentation/URLSession/URLSessionInstrumentation.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public class URLSessionInstrumentation {
3131

3232
static var instrumentedKey = "io.opentelemetry.instrumentedCall"
3333

34-
public private(set) var tracer: TracerSdk
34+
public private(set) var tracer: Tracer
3535

3636
public var startedRequestSpans: [Span] {
3737
var spans = [Span]()
@@ -43,7 +43,7 @@ public class URLSessionInstrumentation {
4343

4444
public init(configuration: URLSessionInstrumentationConfiguration) {
4545
self.configuration = configuration
46-
tracer = OpenTelemetrySDK.instance.tracerProvider.get(instrumentationName: "NSURLSession", instrumentationVersion: "0.0.1") as! TracerSdk
46+
tracer = OpenTelemetry.instance.tracerProvider.get(instrumentationName: "NSURLSession", instrumentationVersion: "0.0.1")
4747
self.injectInNSURLClasses()
4848
}
4949

Sources/OpenTelemetrySdk/OpenTelemetrySdk.swift

Lines changed: 0 additions & 41 deletions
This file was deleted.

0 commit comments

Comments
 (0)