88 addTelemetryDebug ,
99 elapsed ,
1010 relativeNow ,
11+ relativeToClocks ,
1112} from '@datadog/browser-core'
1213import type { RumSessionManager } from '../rumSessionManager'
1314import { SessionReplayState , SessionType } from '../rumSessionManager'
@@ -16,6 +17,7 @@ import type { RecorderApi } from '../../boot/rumPublicApi'
1617import type { DefaultRumEventAttributes , DefaultTelemetryEventAttributes , Hooks } from '../hooks'
1718import type { ViewHistory } from './viewHistory'
1819import type { PageStateHistory } from './pageStateHistory'
20+ import { PageState } from './pageStateHistory'
1921
2022export 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