Skip to content

Commit 0b650a7

Browse files
Merge pull request #2322 from embrace-io/deprecate-resource-attr
Deprecate setResourceAttribute overload
2 parents 9b74220 + 609175d commit 0b650a7

File tree

14 files changed

+53
-49
lines changed

14 files changed

+53
-49
lines changed

embrace-android-api/src/main/kotlin/io/embrace/android/embracesdk/internal/api/OTelApi.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,21 @@ public interface OTelApi {
2929
public fun getOpenTelemetry(): OtelJavaOpenTelemetry
3030

3131
/**
32-
* Set an attribute on the [Resource] used by the OTel SDK instance with the given [AttributeKey] key and String value.
32+
* Set an attribute on the resource used by the OTel SDK instance with the given key and String value.
3333
* The value set will override any value set previously or by the Embrace SDK.
3434
* This must be called before the SDK is started in order for it to take effect.
3535
*/
36+
@Deprecated(
37+
"Use setResourceAttribute(key: String, value: String) instead.",
38+
ReplaceWith("setResourceAttribute(key.key, value)")
39+
)
3640
public fun setResourceAttribute(
3741
key: OtelJavaAttributeKey<String>,
38-
value: String
42+
value: String,
3943
): Unit = setResourceAttribute(key.key, value)
4044

4145
/**
42-
* Set an attribute on the [Resource] used by the OTel SDK instance with the given String key and value.
46+
* Set an attribute on the resource used by the OTel SDK instance with the given String key and value.
4347
* The value set will override any value set previously or by the Embrace SDK.
4448
* This must be called before the SDK is started in order for it to take effect.
4549
*/

embrace-android-core/src/main/kotlin/io/embrace/android/embracesdk/internal/spans/CurrentSessionSpanImpl.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import io.embrace.android.embracesdk.internal.utils.Uuid
2020
import io.embrace.android.embracesdk.spans.EmbraceSpan
2121
import io.embrace.android.embracesdk.spans.ErrorCode
2222
import io.embrace.opentelemetry.kotlin.Clock
23+
import io.embrace.opentelemetry.kotlin.ExperimentalApi
24+
import io.embrace.opentelemetry.kotlin.k2j.tracing.SpanContextAdapter
2325
import io.opentelemetry.semconv.incubating.SessionIncubatingAttributes
2426
import java.util.concurrent.atomic.AtomicBoolean
2527
import java.util.concurrent.atomic.AtomicInteger
@@ -94,20 +96,21 @@ internal class CurrentSessionSpanImpl(
9496
return sessionSpan.get()?.getSystemAttribute(SessionIncubatingAttributes.SESSION_ID.key) ?: ""
9597
}
9698

99+
@OptIn(ExperimentalApi::class)
97100
override fun spanStopCallback(spanId: String) {
98101
val currentSessionSpan = sessionSpan.get()
99102
val spanToStop = spanRepository.getSpan(spanId)
100103

101104
if (currentSessionSpan != spanToStop) {
102105
spanToStop?.spanContext?.let { spanToStopContext ->
103-
currentSessionSpan?.addSystemLink(spanToStopContext, LinkType.EndedIn)
106+
currentSessionSpan?.addSystemLink(SpanContextAdapter(spanToStopContext), LinkType.EndedIn)
104107
}
105108

106109
val sessionId = currentSessionSpan?.getSystemAttribute(SessionIncubatingAttributes.SESSION_ID.key)
107110
if (sessionId != null) {
108111
currentSessionSpan.spanContext?.let { sessionSpanContext ->
109112
spanToStop?.addSystemLink(
110-
linkedSpanContext = sessionSpanContext,
113+
linkedSpanContext = SpanContextAdapter(sessionSpanContext),
111114
type = LinkType.EndSession,
112115
attributes = mapOf(SessionIncubatingAttributes.SESSION_ID.key to sessionId)
113116
)
@@ -196,6 +199,7 @@ internal class CurrentSessionSpanImpl(
196199
/**
197200
* This method should always be used when starting a new session span
198201
*/
202+
@OptIn(ExperimentalApi::class)
199203
private fun startSessionSpan(startTimeMs: Long): EmbraceSdkSpan {
200204
traceCount.set(0)
201205
internalTraceCount.set(0)
@@ -212,7 +216,7 @@ internal class CurrentSessionSpanImpl(
212216
previousSessionSpan?.spanContext?.let {
213217
val prevSessionId = previousSessionSpan.getSystemAttribute(SessionIncubatingAttributes.SESSION_ID.key) ?: ""
214218
addSystemLink(
215-
linkedSpanContext = it,
219+
linkedSpanContext = SpanContextAdapter(it),
216220
type = LinkType.PreviousSession,
217221
attributes = mapOf(SessionIncubatingAttributes.SESSION_ID.key to prevSessionId)
218222
)

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/payload/SpanMapper.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import io.embrace.android.embracesdk.internal.payload.Link
1010
import io.embrace.android.embracesdk.internal.payload.Span
1111
import io.embrace.android.embracesdk.internal.payload.SpanEvent
1212
import io.embrace.android.embracesdk.spans.EmbraceSpanEvent
13+
import io.embrace.opentelemetry.kotlin.ExperimentalApi
1314
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaSpanId
1415
import io.embrace.opentelemetry.kotlin.tracing.StatusCode
1516

@@ -44,6 +45,7 @@ fun Map<String, String>.toEmbracePayload(): List<Attribute> =
4445
fun List<Attribute>.toEmbracePayload(): Map<String, String> =
4546
associate { Pair(it.key ?: "", it.data ?: "") }.filterKeys { it.isNotBlank() }
4647

48+
@OptIn(ExperimentalApi::class)
4749
fun EmbraceLinkData.toEmbracePayload() = Link(
4850
spanId = spanContext.spanId,
4951
traceId = spanContext.traceId,

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/sdk/OtelExt.kt

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,8 @@ import io.embrace.android.embracesdk.internal.otel.spans.EmbraceSpanData.Compani
1010
import io.embrace.android.embracesdk.internal.otel.toOtelKotlin
1111
import io.embrace.android.embracesdk.internal.payload.Attribute
1212
import io.embrace.android.embracesdk.internal.payload.Link
13-
import io.embrace.android.embracesdk.internal.utils.isBlankish
1413
import io.embrace.android.embracesdk.spans.EmbraceSpanEvent
1514
import io.embrace.opentelemetry.kotlin.ExperimentalApi
16-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaAttributeKey
1715
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaAttributes
1816
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaAttributesBuilder
1917
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaLinkData
@@ -60,17 +58,6 @@ fun OtelJavaLogRecordBuilder.setEmbraceAttribute(embraceAttribute: EmbraceAttrib
6058
return this
6159
}
6260

63-
fun OtelJavaLogRecordBuilder.setAttribute(
64-
attributeKey: OtelJavaAttributeKey<String>,
65-
value: String,
66-
keepBlankishValues: Boolean = true,
67-
): OtelJavaLogRecordBuilder {
68-
if (keepBlankishValues || !value.isBlankish()) {
69-
setAttribute(attributeKey, value)
70-
}
71-
return this
72-
}
73-
7461
fun OtelJavaSpan.setEmbraceAttribute(key: EmbraceAttributeKey, value: String): OtelJavaSpan {
7562
setAttribute(key.name, value)
7663
return this

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/sdk/StoreDataResultExt.kt

Lines changed: 0 additions & 8 deletions
This file was deleted.
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package io.embrace.android.embracesdk.internal.otel.spans
22

3-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaSpanContext
3+
import io.embrace.opentelemetry.kotlin.ExperimentalApi
4+
import io.embrace.opentelemetry.kotlin.tracing.model.SpanContext
45

6+
@OptIn(ExperimentalApi::class)
57
data class EmbraceLinkData(
6-
val spanContext: OtelJavaSpanContext,
7-
val attributes: Map<String, String>
8+
val spanContext: SpanContext,
9+
val attributes: Map<String, String>,
810
)

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/spans/EmbraceSdkSpan.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@ import io.embrace.android.embracesdk.internal.otel.schema.EmbType
55
import io.embrace.android.embracesdk.internal.otel.schema.LinkType
66
import io.embrace.android.embracesdk.internal.payload.Span
77
import io.embrace.android.embracesdk.spans.EmbraceSpan
8+
import io.embrace.opentelemetry.kotlin.ExperimentalApi
89
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaContext
910
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaContextKey
1011
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaImplicitContextKeyed
11-
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaSpanContext
1212
import io.embrace.opentelemetry.kotlin.tracing.StatusCode
13+
import io.embrace.opentelemetry.kotlin.tracing.model.SpanContext
1314

1415
/**
1516
* An [EmbraceSpan] that has additional functionality to be used internally by the SDK
@@ -76,8 +77,9 @@ interface EmbraceSdkSpan : EmbraceSpan, OtelJavaImplicitContextKeyed {
7677
/**
7778
* Add a system link to the span that will subjected to a different maximum than typical links.
7879
*/
80+
@OptIn(ExperimentalApi::class)
7981
fun addSystemLink(
80-
linkedSpanContext: OtelJavaSpanContext,
82+
linkedSpanContext: SpanContext,
8183
type: LinkType,
8284
attributes: Map<String, String> = emptyMap(),
8385
): Boolean

embrace-android-otel/src/main/kotlin/io/embrace/android/embracesdk/internal/otel/spans/EmbraceSpanFactoryImpl.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import io.embrace.opentelemetry.kotlin.k2j.tracing.SpanContextAdapter
3535
import io.embrace.opentelemetry.kotlin.tracing.StatusCode
3636
import io.embrace.opentelemetry.kotlin.tracing.Tracer
3737
import io.embrace.opentelemetry.kotlin.tracing.model.Span
38+
import io.embrace.opentelemetry.kotlin.tracing.model.SpanContext
3839
import io.opentelemetry.context.ImplicitContextKeyed
3940
import io.opentelemetry.semconv.ExceptionAttributes
4041
import java.util.Queue
@@ -316,14 +317,14 @@ private class EmbraceSpanImpl(
316317
return false
317318
}
318319

319-
override fun addSystemLink(linkedSpanContext: OtelJavaSpanContext, type: LinkType, attributes: Map<String, String>): Boolean =
320+
override fun addSystemLink(linkedSpanContext: SpanContext, type: LinkType, attributes: Map<String, String>): Boolean =
320321
addObject(systemLinks, systemLinkCount, dataValidator.otelLimitsConfig.getMaxSystemLinkCount()) {
321322
EmbraceLinkData(linkedSpanContext, mutableMapOf(type.asPair()).apply { putAll(attributes) })
322323
}
323324

324325
override fun addLink(linkedSpanContext: OtelJavaSpanContext, attributes: Map<String, String>?): Boolean =
325326
addObject(customLinks, customLinkCount, dataValidator.otelLimitsConfig.getMaxCustomLinkCount()) {
326-
EmbraceLinkData(linkedSpanContext, attributes ?: emptyMap())
327+
EmbraceLinkData(SpanContextAdapter(linkedSpanContext), attributes ?: emptyMap())
327328
}
328329

329330
override fun asNewContext(): OtelJavaContext? = startedSpan.get()?.run {
@@ -453,7 +454,7 @@ private class EmbraceSpanImpl(
453454
} else {
454455
OtelJavaAttributes.empty()
455456
}
456-
spanToStop.addLink(SpanContextAdapter(it.spanContext)) {
457+
spanToStop.addLink(it.spanContext) {
457458
linkAttributes.toStringMap().forEach { entry ->
458459
setStringAttribute(entry.key, entry.value)
459460
}

embrace-android-otel/src/test/kotlin/io/embrace/android/embracesdk/internal/otel/impl/EmbSpanTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import io.embrace.android.embracesdk.internal.otel.schema.ErrorCodeAttribute
88
import io.embrace.android.embracesdk.internal.otel.sdk.hasEmbraceAttribute
99
import io.embrace.android.embracesdk.internal.payload.Span
1010
import io.embrace.opentelemetry.kotlin.Clock
11+
import io.embrace.opentelemetry.kotlin.ExperimentalApi
1112
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaAttributeKey
1213
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaAttributes
1314
import io.embrace.opentelemetry.kotlin.aliases.OtelJavaStatusCode
@@ -20,6 +21,7 @@ import org.junit.Before
2021
import org.junit.Test
2122
import java.util.concurrent.TimeUnit
2223

24+
@OptIn(ExperimentalApi::class)
2325
internal class EmbSpanTest {
2426
private lateinit var fakeClock: FakeClock
2527
private lateinit var openTelemetryClock: Clock

embrace-android-otel/src/test/kotlin/io/embrace/android/embracesdk/internal/otel/spans/EmbraceSpanImplTest.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import io.embrace.android.embracesdk.internal.utils.truncatedStacktraceText
3636
import io.embrace.android.embracesdk.spans.ErrorCode
3737
import io.embrace.opentelemetry.kotlin.ExperimentalApi
3838
import io.embrace.opentelemetry.kotlin.OpenTelemetryInstance
39+
import io.embrace.opentelemetry.kotlin.k2j.tracing.SpanContextAdapter
3940
import io.embrace.opentelemetry.kotlin.kotlinApi
4041
import io.opentelemetry.semconv.ExceptionAttributes
4142
import org.junit.Assert.assertEquals
@@ -213,7 +214,7 @@ internal class EmbraceSpanImplTest {
213214
assertTrue(start())
214215
val linkedSpan = FakeEmbraceSdkSpan.stopped()
215216
val spanContext = checkNotNull(linkedSpan.spanContext)
216-
assertTrue(embraceSpan.addSystemLink(spanContext, LinkType.PreviousSession))
217+
assertTrue(embraceSpan.addSystemLink(SpanContextAdapter(spanContext), LinkType.PreviousSession))
217218
assertTrue(updateNotified)
218219
}
219220
}
@@ -386,10 +387,12 @@ internal class EmbraceSpanImplTest {
386387
assertTrue(embraceSpan.start())
387388
repeat(InstrumentedConfigImpl.otelLimits.getMaxSystemLinkCount()) {
388389
val spanContext = checkNotNull(FakeEmbraceSdkSpan.stopped().spanContext)
389-
assertTrue(embraceSpan.addSystemLink(spanContext, LinkType.PreviousSession))
390+
assertTrue(embraceSpan.addSystemLink(SpanContextAdapter(spanContext), LinkType.PreviousSession))
390391
}
391392

392-
assertFalse(embraceSpan.addSystemLink(checkNotNull(FakeEmbraceSdkSpan.stopped().spanContext), LinkType.PreviousSession))
393+
assertFalse(
394+
embraceSpan.addSystemLink(SpanContextAdapter(checkNotNull(FakeEmbraceSdkSpan.stopped().spanContext)), LinkType.PreviousSession)
395+
)
393396
}
394397

395398
@Test
@@ -424,7 +427,7 @@ internal class EmbraceSpanImplTest {
424427
val linkAttrs = mapOf("link-attr" to "value")
425428
val spanContext = checkNotNull(linkedSpan.spanContext)
426429
assertTrue(embraceSpan.addLink(spanContext, linkAttrs))
427-
assertTrue(embraceSpan.addSystemLink(spanContext, LinkType.PreviousSession))
430+
assertTrue(embraceSpan.addSystemLink(SpanContextAdapter(spanContext), LinkType.PreviousSession))
428431

429432
val snapshot = checkNotNull(embraceSpan.snapshot())
430433

0 commit comments

Comments
 (0)