fix(runtimed): loop for automerge sync ack in sync_to_daemon#698
Merged
Conversation
sync_to_daemon previously read exactly one frame after sending the sync message. If a Broadcast frame arrived before the AutomergeSync ack, the broadcast was silently dropped and the ack was left unprocessed — leaving peer_state stale. Now loops until the ack arrives (or the 500ms deadline expires), queuing any Broadcast frames in pending_broadcasts for later delivery. Also adds diagnostic logging to ExecuteCell when a cell is not found, including the doc's cell count and IDs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
sync_to_daemonpreviously read exactly one frame after sending the sync message. If a Broadcast frame arrived before the AutomergeSync ack, the broadcast was silently dropped and the ack was left unprocessed in the stream buffer — leavingpeer_statestale.Now loops until the ack arrives (or the 500ms deadline expires), queuing any Broadcast frames in
pending_broadcastsfor later delivery.Also adds diagnostic logging to
ExecuteCellwhen a cell is not found, including the doc's cell count and IDs.Addresses these flaky CI failures:
All three share the same root cause: sync mutations not propagating because a Broadcast frame ate the AutomergeSync ack.
Supersedes #693 (same fix, rebased onto current main after fractional indexing landed).
PR submitted by @rgbkrk's agent Quill, via Zed