Skip to content

Commit 2413b85

Browse files
committed
tweak telemetry
1 parent 09c516a commit 2413b85

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

packages/core/src/domain/session/sessionManager.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,15 @@ export function startSessionManager<TrackingType extends string>(
8989
}
9090
}
9191

92+
sessionStore.sessionStateUpdateObservable.subscribe(({ previousState, newState }) => {
93+
if (previousState.id === newState.id && previousState.expire !== newState.expire) {
94+
const entry = sessionContextHistory.find()
95+
if (entry) {
96+
entry.expire = newState.expire
97+
}
98+
}
99+
})
100+
92101
trackingConsentState.observable.subscribe(() => {
93102
if (trackingConsentState.isGranted()) {
94103
sessionStore.expandOrRenewSession()

packages/rum-core/src/domain/contexts/sessionContext.ts

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
addTelemetryDebug,
99
elapsed,
1010
relativeNow,
11+
relativeToClocks,
1112
} from '@datadog/browser-core'
1213
import type { RumSessionManager } from '../rumSessionManager'
1314
import { SessionReplayState, SessionType } from '../rumSessionManager'
@@ -16,6 +17,7 @@ import type { RecorderApi } from '../../boot/rumPublicApi'
1617
import type { DefaultRumEventAttributes, DefaultTelemetryEventAttributes, Hooks } from '../hooks'
1718
import type { ViewHistory } from './viewHistory'
1819
import type { PageStateHistory } from './pageStateHistory'
20+
import { PageState } from './pageStateHistory'
1921

2022
export function startSessionContext(
2123
hooks: Hooks,
@@ -31,15 +33,26 @@ export function startSessionContext(
3133
if (!session || !view) {
3234
return DISCARDED
3335
}
34-
if (session.expire && dateNow() - Number(session.expire) > ONE_MINUTE) {
35-
const duration = elapsed(startTime, relativeNow())
36+
// TODO share constant
37+
const isSessionExpired = dateNow() - Number(session.expire) > 15 * ONE_MINUTE
38+
const eventDuration = elapsed(startTime, relativeNow())
39+
const wasInFrozenState = pageStateHistory.wasInPageStateDuringPeriod(PageState.FROZEN, startTime, eventDuration)
40+
if (isSessionExpired || (wasInFrozenState && eventType !== RumEventType.VIEW)) {
3641
// monitor-until: 2026-01-01
37-
addTelemetryDebug('Event sent after session expiration', {
42+
addTelemetryDebug('Event sent after session expiration or frozen page state', {
3843
debug: {
39-
duration,
44+
eventDuration,
4045
eventType,
41-
expired_since: dateNow() - Number(session.expire),
42-
page_state: pageStateHistory.findPageStatesForPeriod(startTime, duration) as ContextValue,
46+
isSessionExpired,
47+
sessionExpiredSince: isSessionExpired ? dateNow() - Number(session.expire) : undefined,
48+
elapsedBetweenStartAndExpire: isSessionExpired
49+
? Number(session.expire) - relativeToClocks(startTime).timeStamp
50+
: undefined,
51+
wasInFrozenState,
52+
pageStateDuringEventDuration: pageStateHistory.findPageStatesForPeriod(
53+
startTime,
54+
eventDuration
55+
) as ContextValue,
4356
},
4457
})
4558
}

0 commit comments

Comments
 (0)