Skip to content

Commit c8f50f9

Browse files
committed
RUM-15138: Move session_sample_rate key to LogAttributes
Replace the internal RumContextKeys object (single-constant file in dd-sdk-android-trace) with LogAttributes.RUM_SESSION_SAMPLE_RATE in dd-sdk-android-core, consistent with where the other RUM context propagation keys (RUM_SESSION_ID, RUM_VIEW_ID, etc.) are defined.
1 parent d14f89a commit c8f50f9

8 files changed

Lines changed: 18 additions & 21 deletions

File tree

dd-sdk-android-core/api/apiSurface

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,7 @@ object com.datadog.android.log.LogAttributes
448448
const val RUM_SESSION_ID: String
449449
const val RUM_VIEW_ID: String
450450
const val RUM_ACTION_ID: String
451+
const val RUM_SESSION_SAMPLE_RATE: String
451452
const val SERVICE_NAME: String
452453
const val SOURCE: String
453454
const val STATUS: String

dd-sdk-android-core/api/dd-sdk-android-core.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,6 +1081,7 @@ public final class com/datadog/android/log/LogAttributes {
10811081
public static final field RUM_ACTION_ID Ljava/lang/String;
10821082
public static final field RUM_APPLICATION_ID Ljava/lang/String;
10831083
public static final field RUM_SESSION_ID Ljava/lang/String;
1084+
public static final field RUM_SESSION_SAMPLE_RATE Ljava/lang/String;
10841085
public static final field RUM_VIEW_ID Ljava/lang/String;
10851086
public static final field SERVICE Ljava/lang/String;
10861087
public static final field SERVICE_NAME Ljava/lang/String;

dd-sdk-android-core/src/main/kotlin/com/datadog/android/log/LogAttributes.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,13 @@ object LogAttributes {
279279
*/
280280
const val RUM_ACTION_ID: String = "user_action.id"
281281

282+
/**
283+
* Key for the RUM session sample rate used for cross-product trace sampling rebasing.
284+
* This key is written to spans by [com.datadog.android.trace.internal.RumContextPropagator]
285+
* and read by [com.datadog.android.trace.DeterministicTraceSampler].
286+
*/
287+
const val RUM_SESSION_SAMPLE_RATE: String = "session_sample_rate"
288+
282289
/**
283290
* The name of the application or service generating the log events. (String)
284291
* This value is filled automatically by the [Logger].

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ import com.datadog.android.api.feature.FeatureContextUpdateReceiver
1212
import com.datadog.android.core.configuration.HostsSanitizer
1313
import com.datadog.android.core.internal.net.DefaultFirstPartyHostHeaderTypeResolver
1414
import com.datadog.android.core.sampling.Sampler
15+
import com.datadog.android.log.LogAttributes
1516
import com.datadog.android.trace.api.span.DatadogSpan
1617
import com.datadog.android.trace.api.tracer.DatadogTracer
1718
import com.datadog.android.trace.internal.ApmNetworkInstrumentation
18-
import com.datadog.android.trace.internal.RumContextKeys
1919
import com.datadog.android.trace.internal.net.TracerProvider
2020
import java.util.concurrent.atomic.AtomicReference
2121

@@ -257,7 +257,7 @@ class ApmNetworkInstrumentationConfiguration internal constructor(
257257
"UnsafeThirdPartyFunctionCall"
258258
) // resolveSessionSampleRate always returns non-null Float
259259
cachedSessionSampleRate.set(
260-
resolveSessionSampleRate(context[RumContextKeys.SESSION_SAMPLE_RATE])
260+
resolveSessionSampleRate(context[LogAttributes.RUM_SESSION_SAMPLE_RATE])
261261
)
262262
}
263263
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ package com.datadog.android.trace
99
import androidx.annotation.FloatRange
1010
import com.datadog.android.core.sampling.DeterministicSampler
1111
import com.datadog.android.internal.sampling.computeSamplingDecision
12+
import com.datadog.android.log.LogAttributes
1213
import com.datadog.android.trace.api.span.DatadogSpan
13-
import com.datadog.android.trace.internal.RumContextKeys
1414
import com.datadog.android.trace.internal.net.SpanSamplingIdProvider
1515

1616
/**
@@ -125,7 +125,7 @@ open class DeterministicTraceSampler private constructor(
125125
val providerRateIsValid = providerRate >= 0f && providerRate < DeterministicSampler.SAMPLE_ALL_RATE
126126
val sessionSampleRate = when {
127127
providerRateIsValid -> providerRate
128-
else -> (item.context().tags[RumContextKeys.SESSION_SAMPLE_RATE] as? Number)?.toFloat()
128+
else -> (item.context().tags[LogAttributes.RUM_SESSION_SAMPLE_RATE] as? Number)?.toFloat()
129129
}
130130

131131
return if (sessionSampleRate != null &&

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

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

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ class RumContextPropagator(private val sdkCoreProvider: () -> FeatureSdkCore?) {
6363
instance.setTag(LogAttributes.RUM_VIEW_ID, rumContext["view_id"])
6464
instance.setTag(LogAttributes.RUM_ACTION_ID, rumContext["action_id"])
6565
instance.setTag(
66-
RumContextKeys.SESSION_SAMPLE_RATE,
67-
rumContext[RumContextKeys.SESSION_SAMPLE_RATE]
66+
LogAttributes.RUM_SESSION_SAMPLE_RATE,
67+
rumContext[LogAttributes.RUM_SESSION_SAMPLE_RATE]
6868
)
6969
instance.setTag(HttpCodec.RUM_KEY_USER_ID, datadogContext.userInfo.id)
7070
instance.setTag(HttpCodec.RUM_KEY_ACCOUNT_ID, datadogContext.accountInfo?.id)

features/dd-sdk-android-trace/src/test/kotlin/com/datadog/android/trace/internal/net/ApmInstrumentationConfigurationTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ package com.datadog.android.trace.internal.net
99
import com.datadog.android.api.SdkCore
1010
import com.datadog.android.api.feature.Feature
1111
import com.datadog.android.core.sampling.Sampler
12+
import com.datadog.android.log.LogAttributes
1213
import com.datadog.android.trace.ApmNetworkInstrumentationConfiguration
1314
import com.datadog.android.trace.ApmNetworkInstrumentationConfiguration.Companion.createInstrumentation
1415
import com.datadog.android.trace.ApmNetworkTracingScope
@@ -18,7 +19,6 @@ import com.datadog.android.trace.TraceContextInjection
1819
import com.datadog.android.trace.TracingHeaderType
1920
import com.datadog.android.trace.api.span.DatadogSpan
2021
import com.datadog.android.trace.api.tracer.DatadogTracer
21-
import com.datadog.android.trace.internal.RumContextKeys
2222
import com.datadog.android.utils.forge.Configurator
2323
import fr.xgouchet.elmyr.Forge
2424
import fr.xgouchet.elmyr.annotation.BoolForgery
@@ -309,7 +309,7 @@ internal class ApmInstrumentationConfigurationTest {
309309
// When
310310
result.sessionSampleRateReceiver!!.onContextUpdate(
311311
Feature.RUM_FEATURE_NAME,
312-
mapOf(RumContextKeys.SESSION_SAMPLE_RATE to fakeSessionRate)
312+
mapOf(LogAttributes.RUM_SESSION_SAMPLE_RATE to fakeSessionRate)
313313
)
314314

315315
// Then
@@ -332,7 +332,7 @@ internal class ApmInstrumentationConfigurationTest {
332332
// When
333333
result.sessionSampleRateReceiver!!.onContextUpdate(
334334
fakeOtherFeature,
335-
mapOf(RumContextKeys.SESSION_SAMPLE_RATE to fakeSessionRate)
335+
mapOf(LogAttributes.RUM_SESSION_SAMPLE_RATE to fakeSessionRate)
336336
)
337337

338338
// Then - no rebasing, rate unchanged

0 commit comments

Comments
 (0)