Troubleshooting sync
On this page: How sync works · Where sync shows · Sync problems · Common reasons, and what to do · For assistants · Files waiting · Offline · Reset this device · When an assistant's change meets yours
LazyJack works at the boat with no signal, so every device holds its own copy of the record and syncs it with your account when it can. Almost always this is invisible. This chapter is for the times it is not: a change your account refused, a file that will not upload, a device that seems out of date.
How sync works
- Each device keeps its own copy of the whole record, in the browser, kept apart for each person who signs in on it. Every page reads from that copy, and every change is made to it first.
- A change joins a queue. It is saved on the device at once and waits in the queue until your account accepts it. Nothing in the queue is dropped on its own.
- The queue is sent as soon as it can be: right after each change while online, on reconnecting, and when the app is opened. If the server could not be reached, the device tries again while the app is open, waiting longer after each failure, up to five minutes.
- Your account's copy is fetched when the app opens, on reconnecting, after a change is accepted, when the app comes back to the front, and every 60 seconds. A change made on another device or by an assistant therefore appears without a reload.
- Your account's copy wins, except for your own changes still in the queue. Once a queued change is accepted, the record is replaced by your account's version of it.
- Two tabs on one device share one copy. A change saved in one tab appears in the other.
- Photos and files queue too, apart from changes, and survive closing the app. A file is uploaded after the change that made its document has been accepted.
| Timing or limit | Value |
|---|---|
| Fetching your account's copy while the app is open | Every 60 seconds |
| Retrying a queue the server could not take | From 15 seconds, doubling after each failure, at most 5 minutes apart |
| Retrying files waiting to upload | Every 30 seconds while online |
| Largest file | 25 MB |
| Photos, before saving | Made smaller on the device to at most 2,560 px on the longer side (the boat's photo 1,600 px) |
| Requests from the app, all your devices together | 600 sends and 600 fetches every 10 minutes; 300 uploads and 600 file downloads every 10 minutes |
Where sync shows
The sync badge is in the top bar on every page.
| Wide screen | Phone | Means |
|---|---|---|
| All changes synced | Synced | Nothing is waiting |
| 3 waiting to sync | 3 waiting | Changes or files are queued; normal for a moment, and while offline |
| Working offline | Offline | The device has no connection; changes are saved and queued |
| 3 waiting · sign in again to sync | 3 waiting | Your sign-in was refused, so nothing is being sent |
| … · 1 needs attention | Sync problem | Your account refused a change; it waits in Sync problems |
On a wide screen "1 needs attention" is a link to Sync problems. On a phone the whole badge is that link while a change is refused, and a screen reader reads its full sentence.
The Sync card on the Account page says Online or Offline, when the device last synced, and how many changes are waiting. "Synced just now" means within the last minute; then "Last synced 2 minutes ago", then hours, then days. The time is kept only while the page is open, so a page just loaded says "Not synced yet" until its first fetch answers.
Today shows a quiet Syncing line ("3 changes and 2 files waiting to sync") while things are queued; it opens the Account page. A refused change is not quiet: it is a Do first row, "Changes need your attention", and opens Sync problems.
A toast appears when a new set of changes is refused ("Some changes need your attention before they can sync.") and when your sign-in is refused ("Your sign-in was refused, so changes are not syncing. Sign out and back in; nothing is lost.").
Sync problems
Sync problems is a card on the Account page, right under the Sync card, shown only while your account has refused a change. The changes in it are saved on the device. They are sent again on every sync until they succeed or you discard them.
Each row says three things:
- What the change was, in plain words, and the record it was for: "Edit equipment: Volvo Penta D2", "Record a reading", "Undo a stock change", "Ordered: Impeller".
- When it was saved: "Saved 3 Oct".
- Why it was refused: the server's reason, word for word.
There are three things you can do.
- Try again now (under the list) sends the whole queue again. Many refusals pass on a second try: the change they depended on has arrived, or the server was busy.
- Apply to latest is offered on a change refused because the record was changed elsewhere after you edited it. It fetches the record as your account has it now and points your change at that version. Your change keeps what it set, and fields it did not touch keep the other change. Later queued changes to the same record move with it. A Did the job applied to latest lets your account work out the next job's dates from the plan as it is now. If the record no longer exists, the app says so: "That record no longer exists on the server, so this change cannot be applied. You can discard it."
- Discard, in the row's More menu, removes the change from the device; it is never sent. "Discard all 3" removes them all. A later change that cannot succeed without a discarded one (a reading for a trip that was never accepted, an edit to an item that was never added) is named in the dialog and discarded with it. After discarding, the device fetches your account's copy again: "Discarded. Refreshed from the server."
Only a "changed elsewhere" refusal can be applied to latest. Every other refusal (an added record, a reading, a stock entry, an order, a change refused for its content) can only be tried again or discarded. To make a discarded change again, make it fresh, from what is true now.
All three need a connection. Offline, the card says "You are offline. Changes sync automatically when you reconnect."
Common reasons, and what to do
The server's reason names the kind of record in its own terms, so a refusal can read Equipment changed elsewhere. or Document was not found.
| What you see | What it means | What to do |
|---|---|---|
… changed elsewhere. with Apply to latest | Someone changed or archived the record after you edited it: another device, another tab, or an assistant | Open the record and look at what changed. If your change still makes sense, Apply to latest; otherwise Discard |
Reading is lower than the accepted current value (432.5 h). | A higher reading reached your account first, from another device, a trip or an assistant | Discard yours if the higher reading is right. If yours is right, correct the higher reading on the equipment page, then Try again now |
Not enough stock of Impeller at that location. | Another device or an assistant used or moved the same stock first | Look at the item's stock, Count it to set what is really there, then Discard the refused change |
… was not found. | The record was deleted after you changed it, or the change that added it was never accepted | Discard; Apply to latest cannot help a record that is gone |
… field … cannot be changed through this capability. or Capability … is not available in this gateway. | An older version of the app queued the change, for something your account no longer accepts | Reload the app to get the current version, then Discard and make the change again |
| Changes stay waiting with nothing refused; Try again now says "The server could not be reached. Changes stay saved on this device." | The server is down, being updated, or asked the app to slow down (too many requests from your devices together) | Wait. The queue is sent again on its own; nothing is lost |
| "This boat's data was cleared or restored on another device. This device now shows the current copy." | Clear all data or a restore was done on another device, so this device's copy was out of date. Its unsynced changes and files were discarded, and the message says how many | Nothing can bring them back. Make again anything the message says was discarded |
| A file's row says "Could not upload: …" and its document says "Upload failed" | Your account refused the file (too large, or not accepted) | Try again on the file's row, or Discard it and add the file again from the document's page |
| A file leaves the waiting list without uploading | Its document was archived or deleted, here or elsewhere, before the file arrived | Nothing; there is no document left for it |
For assistants
If you are an assistant connected to LazyJack, this is how to behave when your change and the owner's meet.
- You have no queue. Your call is applied at once or refused at once. A refusal with code
version-conflictmeans the record changed since you read it, possibly by the owner's own device a moment ago: read it again (*_get), tell the owner what is different, and retry only if they still want the change. - Never retry a refused reading or stock entry unchanged. "Lower than the accepted current value" and "Not enough stock" are facts about the record, not transient errors. Read the current value, tell the owner, and ask what is right.
- Your write can make the owner's queued change fail. If the owner says they edited the same record on their phone while out of signal, prefer to wait: a change you make now turns their queued edit into a Sync problem they must resolve by hand. Say so, and let them sync first.
- Do not tell the owner to reset or clear. A Sync problem is resolved on the Account page with Try again now, Apply to latest or Discard. Reset this device and Clear all data lose work; neither is a fix for a refused change.
- A refusal with code
rate-limitedis yours to wait out. Slow down; the owner's devices share nothing with your budget, and nothing is lost.
Files waiting
A photo or file captured offline (a document, a receipt, the photo from Did the job, an item's photo) is kept on the device until it uploads. While any are queued, the Account page lists them under the Sync card, headed "Waiting to upload" or, when only refused ones are left, "Could not upload".
- A file waiting says "Not tried yet", or the last error and how many times it was tried. It is retried on its own.
- A file refused says "Could not upload" and the reason, and has Try again. It is not retried on its own.
- Discard, in the row's More menu, removes the file from the device. Its document stays, marked "Upload failed", and Today reports it until you add a file from the document's page or archive the document.
- The files belong to the person signed in. Another person signing in on the same browser does not see them, and does not upload or clear them.
Some browsers do not let the app keep files between sessions (a private window, blocked site data). The app then holds files in memory and says so: "This browser cannot keep files between sessions, so keep the app open until they upload." Closing the app loses those files.
If the device itself is full, a banner says "This device is out of storage." (or that the browser is not allowing the app to save on this device). Changes made then are not kept on the device: stay online until they sync, free up some space, and reload.
Offline
Once opened online, the app opens offline too, and everything you record offline is queued.
| Works offline | Needs a connection |
|---|---|
| Every page and every record already on the device | The map's tiles: the map says "Map unavailable offline" and offers Use my location and Saved place instead |
| Adding, editing, archiving and every other change | Opening a document's file: a file is not kept on the device once it is uploaded |
| Capturing photos and files, which wait to upload | The boat's photo: "Photo not available offline." (a photo chosen on this device and not yet uploaded still shows) |
| Today, Work, Budget and search | Send feedback: "You're offline. Your text stays here until you're back online." |
| Discard in Sync problems and the files waiting | Apply to latest, Try again now, Clear all data, Delete account, backup and restore |
After an update to the app, a device fetches the new version the next time it is online and keeps the previous one until the new one is complete, so an update never leaves a phone at the boat with a blank page.
Reset this device
Reset this device is in the last card of the Account page. It clears this browser's copy, including changes and files that have not synced, and loads the copy again from your account. Your account's data is not affected.
Use it last, when a device shows something your account does not and nothing above has helped. Before resetting, look at Sync problems and the files waiting: whatever is there is lost. The device needs a connection to load its copy back.
When an assistant's change meets yours
An assistant connected over MCP changes your account directly; it has no queue. Its changes and yours meet like two devices' changes.
- You edited a record offline and the assistant changed it meanwhile. Your change is refused as "changed elsewhere" and waits in Sync problems with Apply to latest, which puts your edit on top of the assistant's. The row says the record was changed elsewhere, "for example by an agent or another device".
- The assistant read an old version. Its change is refused with a version conflict, and it should read the record again before asking you whether to retry.
- Stock and readings do not merge. If an assistant recorded a higher reading or used the last of an item, your queued reading or stock entry is refused with the reasons in the table above.
- The assistant's change appears on your device at the next fetch, within about a minute while the app is open.
Not in this chapter
The ideas behind offline work and the stale copy, in short: How LazyJack thinks. What an assistant may do and how its refusals read: Assistants. Download a copy, restore it, and move to a new device: Backup, restore and moving devices. Engine-hour readings and how a wrong one is corrected: Setting up the boat and engine and Work: plans, jobs and problems. Stock, Count and Undo: Inventory and To buy. Documents and their files: Documents and papers. Trips: A trip: before, during and after. Money: Budget and projects.