You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If there is a gap between frames of more than sessionSegmentDuration, a segment would be created only for the duration prior to this frame.
I've noticed this while investigating why breadcrumbs are sometimes not send on Flutter - it's because if there are no changes on the UI, there is no frame created but when next there are some changes (and breadcrumbs created for UI taps), these were not sent because:
the current segment start timestamp was the end timestamp of the previous segment
the duration of the segment was capped at the sessionSegmentDuration (5 seconds at the moment)
thus when the current screenshot timestamp was, for example, a minute after the previous one (because the app sat idle), it would take additional 60/5 = 12 frames (12 seconds when the user actively did something on the UI) to catch up; or actually 12 + at least additional 3 for those 12 seconds
I've tried a minor change of passing the actual duration between the last segment end-timestamp and the current frame timestamp, although I'm not sure that is the way to go:
val now = dateProvider.currentTimeMillis
val duration = now - currentSegmentTimestamp.time
if ((duration >= options.experimental.sessionReplay.sessionSegmentDuration)) {
val segment =
createSegmentInternal(
duration,
currentSegmentTimestamp,
Instead, I think it may be necessary to either loop here or add more job instances: replayExecutor.submitSafely(options, "$TAG.add_frame") {
The text was updated successfully, but these errors were encountered:
vaind
changed the title
Missing replay screenshots cause segments not include latest data
Missing replay screenshots cause segments to not include latest data
Sep 3, 2024
Description
Consider the following code that creates segments in response to a screenshot being captured
sentry-java/sentry-android-replay/src/main/java/io/sentry/android/replay/capture/SessionCaptureStrategy.kt
Lines 75 to 124 in f6e97b1
Specifically,
sentry-java/sentry-android-replay/src/main/java/io/sentry/android/replay/capture/SessionCaptureStrategy.kt
Lines 103 to 105 in f6e97b1
If there is a gap between frames of more than
sessionSegmentDuration
, a segment would be created only for the duration prior to this frame.I've noticed this while investigating why breadcrumbs are sometimes not send on Flutter - it's because if there are no changes on the UI, there is no frame created but when next there are some changes (and breadcrumbs created for UI taps), these were not sent because:
sessionSegmentDuration
(5 seconds at the moment)thus when the current screenshot timestamp was, for example, a minute after the previous one (because the app sat idle), it would take additional 60/5 = 12 frames (12 seconds when the user actively did something on the UI) to catch up; or actually 12 + at least additional 3 for those 12 seconds
I've tried a minor change of passing the actual duration between the last segment end-timestamp and the current frame timestamp, although I'm not sure that is the way to go:
Instead, I think it may be necessary to either loop here or add more job instances:
replayExecutor.submitSafely(options, "$TAG.add_frame") {
The text was updated successfully, but these errors were encountered: