@@ -65,6 +65,7 @@ internal class RumSessionScope(
6565
6666 internal var sessionId = RumContext .NULL_UUID
6767 internal var sessionState: State = State .NOT_TRACKED
68+ internal val sessionSampleRate: Float = sessionSampler.getSampleRate() ? : RumContext .SAMPLE_ALL_RATE
6869 private var startReason: StartReason = StartReason .USER_APP_LAUNCH
6970 internal var isActive: Boolean = true
7071 private val sessionStartNs = AtomicLong (sdkCore.timeProvider.getDeviceElapsedTimeNanos())
@@ -88,7 +89,7 @@ internal class RumSessionScope(
8889 memoryVitalMonitor = memoryVitalMonitor,
8990 frameRateVitalMonitor = frameRateVitalMonitor,
9091 applicationDisplayed = applicationDisplayed,
91- sampleRate = sessionSampler.getSampleRate() ? : 100f ,
92+ sampleRate = sessionSampleRate ,
9293 initialResourceIdentifier = networkSettledResourceIdentifier,
9394 slowFramesListener = slowFramesListener,
9495 lastInteractionIdentifier = lastInteractionIdentifier,
@@ -275,7 +276,7 @@ internal class RumSessionScope(
275276 renewSession(event.eventTime, StartReason .MAX_DURATION )
276277 }
277278
278- updateSessionStateForSessionReplay(sessionState, sessionId)
279+ updateSessionStateForSessionReplay(sessionId)
279280 }
280281
281282 private fun renewSession (time : Time , reason : StartReason ) {
@@ -298,13 +299,16 @@ internal class RumSessionScope(
298299 sessionListener?.onSessionStarted(sessionId, ! keepSession)
299300 }
300301
301- private fun updateSessionStateForSessionReplay (state : State , sessionId : String ) {
302- val keepSession = (state == State .TRACKED )
302+ private fun updateSessionStateForSessionReplay (sessionId : String ) {
303303 sdkCore.getFeature(Feature .SESSION_REPLAY_FEATURE_NAME )?.sendEvent(
304304 mapOf (
305305 SESSION_REPLAY_BUS_MESSAGE_TYPE_KEY to RUM_SESSION_RENEWED_BUS_MESSAGE ,
306- RUM_KEEP_SESSION_BUS_MESSAGE_KEY to keepSession,
307- RUM_SESSION_ID_BUS_MESSAGE_KEY to sessionId
306+ RUM_SESSION_ID_BUS_MESSAGE_KEY to sessionId,
307+ RUM_SESSION_SAMPLE_RATE_BUS_MESSAGE_KEY to sessionSampleRate,
308+ // Kept for backward compatibility with older Session Replay modules that
309+ // don't yet consume sessionSampleRate.
310+ // RUM-15962: Remove with SDK v4 release (RUM-13454).
311+ RUM_KEEP_SESSION_BUS_MESSAGE_KEY to (sessionState == State .TRACKED )
308312 )
309313 )
310314 }
@@ -315,8 +319,11 @@ internal class RumSessionScope(
315319
316320 internal const val SESSION_REPLAY_BUS_MESSAGE_TYPE_KEY = " type"
317321 internal const val RUM_SESSION_RENEWED_BUS_MESSAGE = " rum_session_renewed"
318- internal const val RUM_KEEP_SESSION_BUS_MESSAGE_KEY = " keepSession"
319322 internal const val RUM_SESSION_ID_BUS_MESSAGE_KEY = " sessionId"
323+
324+ // RUM-15962: Remove with SDK v4 release (RUM-13454).
325+ internal const val RUM_KEEP_SESSION_BUS_MESSAGE_KEY = " keepSession"
326+ internal const val RUM_SESSION_SAMPLE_RATE_BUS_MESSAGE_KEY = " sessionSampleRate"
320327 internal val DEFAULT_SESSION_INACTIVITY_NS = TimeUnit .MINUTES .toNanos(15 )
321328 internal val DEFAULT_SESSION_MAX_DURATION_NS = TimeUnit .HOURS .toNanos(4 )
322329 }
0 commit comments