Skip to content

Fix SSE keepalive to use wall-clock timer, not progress callback#227

Open
ridhinva wants to merge 1 commit into
antirez:mainfrom
ridhinva:fix/sse-keepalive-wallclock-timer
Open

Fix SSE keepalive to use wall-clock timer, not progress callback#227
ridhinva wants to merge 1 commit into
antirez:mainfrom
ridhinva:fix/sse-keepalive-wallclock-timer

Conversation

@ridhinva
Copy link
Copy Markdown

The SSE keepalive comment () was emitted from inside the server_prefill_progress callback, which only fires on chunk boundaries. When a single prefill chunk stalls internally for longer than the client's idle timeout, no progress callback fires, no keepalive is sent, and the client eventually drops the socket.

Fix: add a background pthread () that sends keepalive comments on a 5-second wall-clock timer independent of progress events. The thread is started before ds4_session_sync() and joined after it completes (or fails), covering both the main prefill path (generate_job) and the tool-checkpoint rebuild path (canonicalize_tool_checkpoint).

Fixes #222

The SSE keepalive comment () was emitted from inside the
server_prefill_progress callback, which only fires on chunk boundaries.
When a single prefill chunk stalls internally for longer than the client's
idle timeout, no progress callback fires, no keepalive is sent, and the
client eventually drops the socket.

Fix: add a background pthread () that sends keepalive
comments on a 5-second wall-clock timer independent of progress events.
The thread is started before ds4_session_sync() and joined after it
completes (or fails), covering both the main prefill path (generate_job)
and the tool-checkpoint rebuild path (canonicalize_tool_checkpoint).

Fixes antirez#222
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BUG: SSE keepalive misses prefill stalls because the comment is emitted from the progress callback, not a wall-clock timer

1 participant