Sync drift: no recovery when Kobo loses books server thinks are delivered #11
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Symptoms
Books are shelved on the server and marked
delivered=1in the latest sync session, but absent from the Kobo's library. Reproduced today: 2/12 shelved books missing on device.Root cause
internal/kobo/sync.go(line ~173) marks books delivered without emitting any envelope when theirmeta_revandfile_hashmatch the previous session — the "already there, nothing to do" fast path.If the Kobo's local DB lost a book (manual delete on device, factory reset, sync interruption, swap to new device), the server has no signal of the drift and never re-sends. The book is stuck in a "server thinks delivered, device doesn't have it" state with no recovery path.
Workaround (confirmed working)
On the shelf page: unshelve the missing book → sync from Kobo → reshelve → sync again. Forces removed→added envelopes.
Possible fixes
added→NewEntitlement). Low risk, fixes drift in one shot.Out of scope (Kobo protocol limit)
The storefront API has no way to query what books the Kobo currently holds. Only the device's local KoboReader.sqlite (USB-only) is authoritative.
Why not now
Workaround is acceptable. Errata page is the natural home if/when we build a diagnostic view.