Repository navigation
fix(pipecat): bound observer frame ID tracking - #821
Abhijeet Prasad (AbhiPrasad) merged 4 commits into
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 43f1794131
ℹ️ 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 (@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 (@codex) address that feedback".
| async def on_process_frame(self, data: Any) -> None: | ||
| if self._uses_native_frame_deduplication: | ||
| return |
There was a problem hiding this comment.
Preserve terminal-frame delivery at the pipeline sink
With Pipecat 1.12+, observe_every_push=False delivers a frame only on its first push, whose source is not the pipeline sink. The terminal-frame guard at lines 139–140 therefore discards every EndFrame, StopFrame, and CancelFrame, while this early return also disables the per-processor callback that could observe the frame at the sink. Consequently _end_pipeline_span() never records terminal_frame or reason, and the span remains open until generic observer cleanup; keep a sink-visible path for terminal frames while deduplicating the other frame types.
Useful? React with 👍 / 👎.
52e0fc5 to
d59bf54
Compare
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Summary
observe_every_push=Falseto handle a frame only on its first push, avoiding session-long_seen_frame_idsretention.Linear: SDK-429
Test plan
test_pipecat(latest)— 8 passedtest_pipecat(1.3.0)— 8 passed