Skip to content

Commit f1b155a

Browse files
committed
RUM-9902 - post review fixes
1 parent e1aea6b commit f1b155a

File tree

10 files changed

+21
-51
lines changed

10 files changed

+21
-51
lines changed

features/dd-sdk-android-trace-api/api/dd-sdk-android-trace-api.api

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ public abstract interface class com/datadog/android/trace/api/tracer/DatadogTrac
192192
public abstract fun withSampleRate (D)Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;
193193
public abstract fun withServiceName (Ljava/lang/String;)Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;
194194
public abstract fun withTag (Ljava/lang/String;Ljava/lang/String;)Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;
195-
public abstract fun withTraceLimit (I)Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;
195+
public abstract fun withTraceRateLimit (I)Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;
196196
public abstract fun withTracingHeadersTypes (Ljava/util/Set;)Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;
197197
}
198198

@@ -215,7 +215,7 @@ public final class com/datadog/android/trace/api/tracer/NoOpDatadogTracerBuilder
215215
public fun withSampleRate (D)Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;
216216
public fun withServiceName (Ljava/lang/String;)Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;
217217
public fun withTag (Ljava/lang/String;Ljava/lang/String;)Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;
218-
public fun withTraceLimit (I)Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;
218+
public fun withTraceRateLimit (I)Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;
219219
public fun withTracingHeadersTypes (Ljava/util/Set;)Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;
220220
}
221221

features/dd-sdk-android-trace-api/src/main/kotlin/com/datadog/android/trace/api/span/DatadogSpanContext.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ interface DatadogSpanContext {
3131
/**
3232
* Represents a collection of tags associated with the span.
3333
*/
34-
val tags: Map<String?, Any?>
34+
val tags: Map<String, Any?>
3535

3636
/**
3737
* Sets the sampling priority for the span.

features/dd-sdk-android-trace-otel/src/main/java/com/datadog/opentelemetry/trace/OtelExtractedContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public int getSamplingPriority() {
7676
return prioritySampling;
7777
}
7878

79-
@Nullable
79+
@NonNull
8080
@Override
8181
public Map<String, Object> getTags() {
8282
// Do nothing

features/dd-sdk-android-trace-otel/src/main/kotlin/com/datadog/android/trace/opentelemetry/OtelTracerProvider.kt

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -153,17 +153,6 @@ class OtelTracerProvider internal constructor(
153153
.withServiceName(serviceName)
154154
.build()
155155

156-
GlobalDatadogTracer.registerIfAbsent(datadogTracer).let { registeredAsGlobal ->
157-
sdkCore.internalLogger.log(
158-
InternalLogger.Level.INFO,
159-
listOf(
160-
InternalLogger.Target.USER,
161-
InternalLogger.Target.MAINTAINER
162-
),
163-
{ if (registeredAsGlobal) USED_AS_GLOBAL_INFO_MESSAGE else NOT_USED_AS_GLOBAL_INFO_MESSAGE }
164-
)
165-
}
166-
167156
return datadogTracer
168157
}
169158

@@ -213,17 +202,6 @@ class OtelTracerProvider internal constructor(
213202
fun setSampleRate(
214203
@FloatRange(from = 0.0, to = 100.0) sampleRate: Double
215204
): Builder {
216-
// In case the sample rate is not set we should not specify it. The agent code under the hood
217-
// will provide different sampler based on this property and also different sampling priorities used
218-
// in the metrics
219-
// -1 MANUAL_DROP User indicated to drop the trace via configuration (sampling rate).
220-
// 0 AUTO_DROP Sampler indicated to drop the trace using a sampling rate provided by the Agent through
221-
// a remote configuration. The Agent API is not used in Android so this `sampling_priority:0` will never
222-
// be used.
223-
// 1 AUTO_KEEP Sampler indicated to keep the trace using a sampling rate from the default configuration
224-
// which right now is 100.0
225-
// (Default sampling priority value. or in our case no specified sample rate will be considered as 100)
226-
// 2 MANUAL_KEEP User indicated to keep the trace, either manually or via configuration (sampling rate)
227205
builderDelegate.withSampleRate(sampleRate)
228206
return this
229207
}
@@ -237,7 +215,7 @@ class OtelTracerProvider internal constructor(
237215
fun setTraceRateLimit(
238216
@IntRange(from = 1, to = Int.MAX_VALUE.toLong()) traceRateLimit: Int
239217
): Builder {
240-
builderDelegate.withTraceLimit(traceRateLimit)
218+
builderDelegate.withTraceRateLimit(traceRateLimit)
241219
return this
242220
}
243221

@@ -306,10 +284,6 @@ class OtelTracerProvider internal constructor(
306284
"You are trying to bundle the traces with a RUM context, " +
307285
"but the RUM context is missing. " +
308286
"You should check if the RUM feature is enabled for your SDK instance."
309-
internal const val USED_AS_GLOBAL_INFO_MESSAGE =
310-
"OpenTracer's DatadogTracer instance will be used as global instance"
311-
internal const val NOT_USED_AS_GLOBAL_INFO_MESSAGE =
312-
"OpenTracer's DatadogTracer instance will not be used as global instance"
313287

314288
// the minimum closed spans required for triggering a flush and deliver
315289
// everything to the writer

features/dd-sdk-android-trace/src/main/kotlin/com/datadog/android/trace/GlobalDatadogTracer.kt

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@ package com.datadog.android.trace
77

88
import com.datadog.android.trace.api.tracer.DatadogTracer
99
import com.datadog.android.trace.api.tracer.NoOpDatadogTracer
10+
import java.util.concurrent.atomic.AtomicReference
1011

1112
/**
1213
* A holder object for managing and retrieving a global instance of the [DatadogTracer].
1314
*
1415
* This object is used to share same instance of [DatadogTracer] across different integrations such as
15-
* `OkHttp, Kotlin's coroutines, ect.
16+
* `OkHttp`, Kotlin's coroutines, ect.
1617
*/
1718
object GlobalDatadogTracer {
1819

19-
@get:Synchronized
20-
internal var instance: DatadogTracer? = null
20+
private val instance = AtomicReference<DatadogTracer?>()
2121

2222
/**
2323
* Registers the provided tracer as the global tracer if no tracer is currently registered.
@@ -27,12 +27,7 @@ object GlobalDatadogTracer {
2727
*/
2828
@Synchronized
2929
fun registerIfAbsent(tracer: DatadogTracer): Boolean {
30-
if (instance == null) {
31-
instance = tracer
32-
return true
33-
}
34-
35-
return false
30+
return instance.compareAndSet(null, tracer)
3631
}
3732

3833
/**
@@ -48,16 +43,17 @@ object GlobalDatadogTracer {
4843
*
4944
* @return An instance of [DatadogTracer] or null.
5045
*/
51-
fun getOrNull(): DatadogTracer? = instance
46+
fun getOrNull(): DatadogTracer? = instance.get()
5247

5348
/**
5449
* Clears the current instance of the global Datadog tracer.
5550
*
5651
* This method sets the internal tracer instance to null, effectively
5752
* removing any active tracer currently held in the global state.
58-
* The general purpose is to use it for test implementation..
53+
* The general purpose is to use it for test implementation.
5954
*/
55+
@Synchronized
6056
fun clear() {
61-
instance = null
57+
instance.set(null)
6258
}
6359
}

features/dd-sdk-android-trace/src/main/kotlin/com/datadog/android/trace/internal/DatadogSpanContextAdapter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import com.datadog.trace.core.PendingTrace
1515
internal class DatadogSpanContextAdapter(internal val delegate: AgentSpan.Context) : DatadogSpanContext {
1616
override val spanId: Long get() = delegate.spanId
1717
override val samplingPriority: Int get() = delegate.samplingPriority
18-
override val tags: Map<String?, Any?> get() = ddSpanContext?.tags.orEmpty()
18+
override val tags: Map<String, Any?> get() = ddSpanContext?.tags.orEmpty()
1919
override val traceId: DatadogTraceId get() = DatadogTraceIdAdapter(delegate.traceId)
2020

2121
private val ddSpanContext: DDSpanContext?

features/dd-sdk-android-trace/src/main/kotlin/com/datadog/android/trace/internal/DatadogTracerBuilderAdapter.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ internal class DatadogTracerBuilderAdapter(
4343
this.serviceName = serviceName
4444
}
4545

46-
override fun withTraceLimit(traceRateLimit: Int) = apply {
46+
override fun withTraceRateLimit(traceRateLimit: Int) = apply {
4747
this.traceRateLimit = traceRateLimit
4848
}
4949

@@ -67,8 +67,8 @@ internal class DatadogTracerBuilderAdapter(
6767
this.sampleRate = sampleRate
6868
}
6969

70-
override fun withPartialFlushMinSpans(withPartialFlushMinSpans: Int) = apply {
71-
this.partialFlushMinSpans = withPartialFlushMinSpans
70+
override fun withPartialFlushMinSpans(partialFlushMinSpans: Int) = apply {
71+
this.partialFlushMinSpans = partialFlushMinSpans
7272
}
7373

7474
override fun withTag(key: String, value: String) = apply {

features/dd-sdk-android-trace/src/main/kotlin/com/datadog/android/trace/internal/domain/event/CoreTracerSpanToSpanEventMapper.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,11 @@ internal class CoreTracerSpanToSpanEventMapper(
5353
return DDSpanId.toHexStringPadded(model.spanId)
5454
}
5555

56-
// todo RUM-10805 - make it back private and re-create objects in tests
5756
private fun resolveParentId(model: DDSpan): String {
5857
return DDSpanId.toHexStringPadded(model.parentId)
5958
}
6059

61-
// todo RUM-10805 - make it back private and re-create objects in tests
60+
// TODO RUM-10805 - make it back private and re-create objects in tests
6261
internal fun resolveMetrics(event: DDSpan): SpanEvent.Metrics {
6362
val metrics = resolveMetricsFromSpanContext(event).apply {
6463
this[DDSpanContext.PRIORITY_SAMPLING_KEY] = event.samplingPriority()
@@ -69,6 +68,7 @@ internal class CoreTracerSpanToSpanEventMapper(
6968
)
7069
}
7170

71+
// TODO RUM-10805 - make it back private and re-create objects in tests
7272
internal fun resolveMeta(datadogContext: DatadogContext, event: DDSpan): SpanEvent.Meta {
7373
val deviceInfo = resolveDeviceInfo(datadogContext.deviceInfo)
7474
val osInfo = resolveOsInfo(datadogContext.deviceInfo)

instrumented/integration/src/androidTest/kotlin/com/datadog/android/sdk/integration/trace/TracesTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ internal abstract class TracesTest {
171171
const val OPERATION_NAME_KEY = "name"
172172
const val META_KEY = "meta"
173173
const val METRICS_KEY = "metrics"
174-
internal val INITIAL_WAIT_MS = TimeUnit.SECONDS.toMillis(100)
174+
internal val INITIAL_WAIT_MS = TimeUnit.SECONDS.toMillis(60)
175175

176176
private const val TAG_STATUS = "status"
177177
private const val TAG_MESSAGE = "message"

integrations/dd-sdk-android-okhttp/src/test/kotlin/com/datadog/android/okhttp/internal/utils/SpanSamplingIdProviderTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ internal class SpanSamplingIdProviderTest {
4545
@Mock
4646
lateinit var mockSpanContext: DatadogSpanContext
4747

48-
private lateinit var fakeTags: Map<String?, Any?>
48+
private lateinit var fakeTags: Map<String, Any?>
4949

5050
@BeforeEach
5151
fun `set up`(forge: Forge) {

0 commit comments

Comments
 (0)