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
{{ message }}
Repository navigation
Replay flush followed by immediate stop deletes the buffered video #6247
Reproduced on a Pixel 6a emulator running Android 13, using the default native recorder in a plain Android Activity without a Flutter engine or bridge. Also reproduced through Flutter.
Expected Result
Stop preserves the video from the requested flush so its queued envelope can be serialized.
Actual Result
Segment 0 uploads with zero video bytes. Adding a 10-second delay before stop uploads segment 0 with 15,039 video bytes in the native reproduction.
Flush creates 0.mp4, but immediate stop can attempt segment 0 again with no frames because the asynchronous callback advancing the converted session's segment ID is skipped after stop.
ReplayCache.createVideoOf() deletes the existing output before checking for empty frames, removing the flushed video before transport reads it. Native diagnostics during the Flutter reproduction confirmed deletion of the existing 4,394-byte file.
Suggested fix: Move output-file deletion below the empty-frame guard and add a regression test preserving an existing video. A temporary native guard made the Flutter reproduction pass with 4,394 video bytes. Segment-ID reuse also needs investigation; this guard addresses the confirmed empty-frame deletion.
Activity
linear-code commentedon Oct 12, 2026
JAVA-772
fix(replay): Keep flushed video and segment id when stop follows flush
chore(replay): Add ReplayCacheTest to the detekt LargeClass baseline
fix(replay): Keep flushed video and segment id when stop follows flush (
github-actions commentedon Oct 22, 2026
A PR closing this issue has just been released 🚀
This issue was referenced by PR #6340, which was included in the 8.61.1 release.