-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
Version Used
Linux v14.2.2 and Android v14.2.2
Expected Behavior
My Laptop was power off, then I added some tasks on my Android phone, completed others tasks and so on.
The sync process is run on Android and it shows the sync process is already completed.
Then I power on my Linux Laptop, open the SP app and It said there are some conflicts and need to decide which changes are fine, remote or local. I choose Remote (Because last job was done on my Android Device) but it doesn't keep remote changes because some issues with the data.
I have tried multiple things without success:
- Export data into a file from my Android Device then import it on my Linux device and re-sync again. -> I have the same issue
- Keep local changes on my Linux Device -> Sync process work on Linux Device (It override data on WebDav server) but then I have the same issue on my Android Device
- Start a clean SP instance on my Linux Device (Using
-user-data-dir
argument), configure the WebDav server and sync. -> The same issue, even though I don't do anything on this initial instance, it says there are some conflicts
I don't really understand why even I choose "Keep Remote", the data is not overrided and use the remote data. If there is any conflict, we should have some similar button as Force Upload Local
but to Froce Download Remote
Current Behavior
Tasks are synced across devices using WebDav.
If there is some conflict on the data the app tries to sync, be able to choose if we want to use remote or local, and properly apply this decision, even if the data is overridden
Steps to Reproduce
- Android and Linux apps are synced with a WebDAV server
- The Linux App is closed
- The Android App does some changes (Add tasks, mark as completed, move to a different project, ...)
- The Android App syncs this job to the WebDav server, and the Sync Button is marked with ✔️ icon
- Open the Linux App. It starts to sync, but the issue arises.
Can you reproduce this reliably?
Yes, I can reproduce it reliably.
Console Output
log.ts:259 [pf] Rev mismatch 84994c0a4208a03e15fd04401f76266a Mon, 21 Jul 2025 15:27:20 GMT
log.ts:228 [pf] Error pluginUserData {rev: '84994c0a4208a03e15fd04401f76266a', expectedRev: 'Mon, 21 Jul 2025 15:27:20 GMT'}
log.ts:228 [pf] additional error log: ["pluginUserData",{"rev":"84994c0a4208a03e15fd04401f76266a","expectedRev":"Mon, 21 Jul 2025 15:27:20 GMT"}]
log.ts:259 [pf] EV:syncError RevMismatchForModelError: pluginUserData
at t.<anonymous> (model-sync.service.ts:109:17)
at Generator.next (<anonymous>)
at k (chunk-MRDY6PNU.js:1:1614) {syncDone: Array(0), syncStart: Array(1), syncError: Array(0), syncStatusChange: Array(1), metaModelChange: Array(1), …}
log.ts:259 [pf] EV:syncDone RevMismatchForModelError: pluginUserData
at t.<anonymous> (model-sync.service.ts:109:17)
at Generator.next (<anonymous>)
at k (chunk-MRDY6PNU.js:1:1614) {syncDone: Array(0), syncStart: Array(1), syncError: Array(0), syncStatusChange: Array(1), metaModelChange: Array(1), …}
log.ts:259 [pf] EV:syncStatusChange ERROR {syncDone: Array(0), syncStart: Array(1), syncError: Array(0), syncStatusChange: Array(1), metaModelChange: Array(1), …}
log.ts:259 [pf] Database.unlock()
log.ts:222 [sync] RevMismatchForModelError: pluginUserData
at t.<anonymous> (model-sync.service.ts:109:17)
at Generator.next (<anonymous>)
at k (chunk-MRDY6PNU.js:1:1614)
err @ log.ts:222
(anonymous) @ sync-wrapper.service.ts:165
i @ chunk-MRDY6PNU.js:1
Promise.then
g @ chunk-MRDY6PNU.js:1
k @ chunk-MRDY6PNU.js:1
Promise.then
g @ chunk-MRDY6PNU.js:1
k @ chunk-MRDY6PNU.js:1
Promise.then
g @ chunk-MRDY6PNU.js:1
k @ chunk-MRDY6PNU.js:1
Promise.then
g @ chunk-MRDY6PNU.js:1
(anonymous) @ chunk-MRDY6PNU.js:1
S @ chunk-MRDY6PNU.js:1
_sync @ sync-wrapper.service.ts:92
(anonymous) @ sync-wrapper.service.ts:87
(anonymous) @ chunk-MRDY6PNU.js:1
S @ chunk-MRDY6PNU.js:1
sync @ sync-wrapper.service.ts:85
(anonymous) @ sync.effects.ts:149
tryNext @ exhaustMap.js:35
_next @ exhaustMap.js:28
next @ Subscriber.js:50
_next @ withLatestFrom.js:55
next @ Subscriber.js:50
_next @ tap.js:44
next @ Subscriber.js:50
notifyNext @ switchMap.js:67
_next @ innerSubscribe.js:10
next @ Subscriber.js:50
notifyNext @ mergeMap.js:67
_next @ innerSubscribe.js:10
next @ Subscriber.js:50
notifyNext @ switchMap.js:67
_next @ innerSubscribe.js:10
next @ Subscriber.js:50
debouncedNext @ debounceTime.js:42
jH @ debounceTime.js:55
_execute @ AsyncAction.js:50
execute @ AsyncAction.js:39
flush @ AsyncScheduler.js:33
setInterval
requestAsyncId @ AsyncAction.js:25
schedule @ AsyncAction.js:21
schedule @ Scheduler.ts:67
schedule @ AsyncScheduler.js:19
_next @ debounceTime.js:28
next @ Subscriber.js:50
notifyNext @ mergeMap.js:67
_next @ innerSubscribe.js:10
next @ Subscriber.js:50
_next @ tap.js:44
next @ Subscriber.js:50
notifyNext @ mergeMap.js:67
_next @ innerSubscribe.js:10
next @ Subscriber.js:50
_next @ throttleTime.js:39
next @ Subscriber.js:50
_next @ mapTo.js:19
next @ Subscriber.js:50
_next @ filter.js:32
next @ Subscriber.js:50
_next @ withLatestFrom.js:55
next @ Subscriber.js:50
i @ fromEvent.js:19
log.ts:228 [sync] RevMismatchForModelError: pluginUserData
at t.<anonymous> (model-sync.service.ts:109:17)
at Generator.next (<anonymous>)
at k (chunk-MRDY6PNU.js:1:1614) (2) ['additionalLog', 'name']
The full error trace: error.txt