Skip to content

fix(sync): keep reading other devices past one that stopped - #450

Open
A-EDev wants to merge 1 commit into
mainfrom
fix/sync2-page-past-stalled
Open

A-EDev wants to merge 1 commit into
mainfrom
fix/sync2-page-past-stalled

Conversation

@A-EDev

@A-EDev A-EDev commented Nov 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

Reading stopped at the first page that held a discarded or missing object, so other senders' objects on later pages were never read, against "the device still reads the other senders" in spec/store.md. Reading now goes on with that sender held back. The saved cursor stays at the first page that held one back, so the next sync lists it again. Objects of a held sender are skipped unless they are the next one it needs, so a log listed backwards across pages still gets read.

Related issue

None.

Change type

  • Bug fix

Validation

  • cargo fmt --all: run before committing.
  • cargo test --test sync2_engine in src-tauri: 12 passed. The 2 new tests fail without the fix.
  • Mutations: always saving the cursor fails the new tests, and so does skipping every object of a held sender.
  • cargo test --test sync2_gc --test sync2_hybrid --test sync2_lan --test sync2_removed_log --test sync2_snapshots --test sync2_webdav: passed.
  • CI runs the full suite on this PR.
  • Not smoke-tested in a window or on a device.

Risk and compatibility

No format change. While a sender stays held back, each sync lists again from that page, up to the existing read limits. Past those limits (200,000 objects), objects after them wait until the held sender moves or its log is collected. Garbage collection keeps logs well below that, so this is reasoned, not measured.

  • No new secrets, private data, telemetry, or broad Tauri permissions were introduced.

Copilot AI balanced review requested due to automatic review settings November 7, 2026 14:00

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

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.

2 participants