PANA-8412: Order Flutter records after their placeholder wireframe - #3741
PANA-8412: Order Flutter records after their placeholder wireframe#3741JuanNaranjoDD wants to merge 1 commit into
Conversation
🎉 All green!🧪 All tests passed 🔄 Datadog retried 1 test - 1 passed on retry 🔗 Commit SHA: 5b41f07 | Docs | View more details | Give us feedback! |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5b41f07e0f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| ViewOnDrawInterceptor.CaptureRequestResult.CAPTURED -> { | ||
| captureRequested.set(false) | ||
| return |
There was a problem hiding this comment.
Keep capture pending until its placeholder persists
When the queued snapshot is later rejected by RecordWriter or contains no visible wireframe for the requested slot, CAPTURED still clears this flag even though RecordedDataProcessor deliberately does not register a placeholder. The embedded batch therefore remains held, and subsequent batches for that slot do not request another capture because its pending queue is already nonempty; on the idle native host this path is intended to support, the records can remain stuck indefinitely or eventually be emitted misordered through eviction. The request needs to remain/re-arm until the requested placeholder is successfully persisted.
Useful? React with 👍 / 👎.
What does this PR do?
Makes the Android SDK order embedded Flutter records after the placeholder wireframe they composite into.
Motivation
The Session Replay player composites a Flutter record into a placeholder but requires that placeholder to be already present in the same segment, and records replay in timestamp order per view. The Android recorder is draw-driven, while Flutter renders to its own surface — so a Flutter view over an idle host produces records with no placeholder ahead of them, and the player does not know how to render it.
This is the Android half of the hybrid Session Replay support already merged for iOS in dd-sdk-flutter.
Review checklist (to be filled by reviewers)