Grampsweb Sync Addon help with troubleshooting - Stuck in a loop

Hello there…

I am trying to choose the option in the sync, from a Ubuntu client, that says update remote to local and I see it finding 74 missing media objects remote side. I see it trying to send up the media files (i can see that in “nginx-proxy logs“ going to the server) but it fails with a 409 errors. Snippet below.

17/Nov/2025:19:40:26 +0000] "PUT /api/media/fb5e171b6ba35142313ac5cfd70/file?uploadmissing=1 HTTP/1.1" 409 103 "-" "Python-urllib/3.12" "172.18.0.4:5000"

I tried to do the same sync from a windows machine that has been working recently (and my backup) and I get the “please wait, there are too many request” message. Guessing I have put the sync in a bad state but I don’t know how to recover or how to tell the client just rebuilt the entire server side from the backups I have.

Where can I look to see why it’s not successful with the PUT command or how can I reset the thing to just have it rebuild the data server side?

I am also uploading some logging from the run I did of the grampswebsync with gramps debug command using the following. Maybe that helps

Thank you

gramps --debug grampswebsync

Output

setup debugging grampswebsync
Gtk-Message: 14:39:31.592: Not loading module “atk-bridge”: The functionality is provided by GTK natively. Please try to not load it.
2025-11-17 14:39:47.848: DEBUG: grampswebsync.py: line 102: Initializing Gramps Web Sync addon.
2025-11-17 14:39:49.715: DEBUG: grampswebsync.py: line 79: Retrieving password for user akhemaniadmin
2025-11-17 14:39:53.805: DEBUG: grampswebsync.py: line 221: Moving to next page from page 0.
2025-11-17 14:39:53.806: DEBUG: grampswebsync.py: line 221: Moving to next page from page 1.
2025-11-17 14:39:53.807: DEBUG: grampswebsync.py: line 221: Moving to next page from page 1.
2025-11-17 14:39:55.518: DEBUG: grampswebsync.py: line 221: Moving to next page from page 1.
2025-11-17 14:39:55.519: DEBUG: grampswebsync.py: line 221: Moving to next page from page 2.
2025-11-17 14:39:55.519: DEBUG: grampswebsync.py: line 93: Storing password for user akhemaniadmin
2025-11-17 14:39:55.640: DEBUG: webapihandler.py: line 160: Fetching an access token from the server
2025-11-17 14:39:55.883: DEBUG: webapihandler.py: line 160: Fetching an access token from the server
2025-11-17 14:39:56.133: DEBUG: grampswebsync.py: line 221: Moving to next page from page 2.
2025-11-17 14:39:56.143: INFO: grampswebsync.py: line 493: Downloading Gramps XML file.
2025-11-17 14:39:56.566: DEBUG: grampswebsync.py: line 497: Importing Gramps XML file.
100%2025-11-17 14:39:58.387: DEBUG: grampswebsync.py: line 502: Successfully imported Gramps XML file.
2025-11-17 14:39:58.388: INFO: grampswebsync.py: line 506: Comparing local and remote data…
2025-11-17 14:39:59.595: INFO: grampswebsync.py: line 515: Databases are in sync.
2025-11-17 14:39:59.595: DEBUG: grampswebsync.py: line 650: Saving current time stamp (1763408399.595456) as last successful sync time.
2025-11-17 14:39:59.596: DEBUG: grampswebsync.py: line 221: Moving to next page from page 2.
2025-11-17 14:39:59.596: DEBUG: grampswebsync.py: line 226: Skipping to media sync as databases are in sync.
2025-11-17 14:39:59.597: DEBUG: grampswebsync.py: line 221: Moving to next page from page 4.
2025-11-17 14:39:59.598: DEBUG: grampswebsync.py: line 650: Saving current time stamp (1763408399.598048) as last successful sync time.
2025-11-17 14:39:59.652: DEBUG: grampswebsync.py: line 221: Moving to next page from page 4.
2025-11-17 14:39:59.652: DEBUG: grampswebsync.py: line 296: No files missing locally.
2025-11-17 14:39:59.835: DEBUG: grampswebsync.py: line 299: The following media files are missing on the remote side: O0073, O0083, O0086, O0087, O0025, O0026, O0012, O0070, O0011, O0096, O0072, O0009, O0062, O0045, O0018, O0047, O0017, O0027, O0066, O0060, O0030, O0033, O0055, O0054, O0005, O0008, O0002, O0067, O0068, O0058, O0043, O0075, O0089, O0090, O0085, O0093, O0029, O0078, O0064, O0013, O0020, O0063, O0081, O0039, O0076, O0050, O0040, O0041, O0065, O0077, O0042, O0061, O0038, O0071, O0036, O0082, O0053, O0046, O0049, O0034, O0095, O0080, O0094, O0079, O0057, O0074, O0056, O0048, O0084, O0088, O0069, O0059, O0091, O0044
2025-11-17 14:40:03.723: DEBUG: grampswebsync.py: line 221: Moving to next page from page 5.
2025-11-17 14:40:03.726: DEBUG: grampswebsync.py: line 221: Moving to next page from page 6.
2025-11-17 14:40:03.727: DEBUG: grampswebsync.py: line 449: Uploading file O0073
2025-11-17 14:40:04.055: DEBUG: grampswebsync.py: line 449: Uploading file O0083
2025-11-17 14:40:04.263: DEBUG: grampswebsync.py: line 449: Uploading file O0086
2025-11-17 14:40:04.492: DEBUG: grampswebsync.py: line 449: Uploading file O0087
2025-11-17 14:40:04.669: DEBUG: grampswebsync.py: line 449: Uploading file O0025
2025-11-17 14:40:05.064: DEBUG: grampswebsync.py: line 449: Uploading file O0026
2025-11-17 14:40:05.553: DEBUG: grampswebsync.py: line 449: Uploading file O0012
2025-11-17 14:40:05.758: DEBUG: grampswebsync.py: line 449: Uploading file O0070
2025-11-17 14:40:05.977: DEBUG: grampswebsync.py: line 449: Uploading file O0011
2025-11-17 14:40:06.183: DEBUG: grampswebsync.py: line 449: Uploading file O0096
2025-11-17 14:40:06.391: DEBUG: grampswebsync.py: line 449: Uploading file O0072
2025-11-17 14:40:06.593: DEBUG: grampswebsync.py: line 449: Uploading file O0009
2025-11-17 14:40:06.817: DEBUG: grampswebsync.py: line 449: Uploading file O0062
2025-11-17 14:40:07.051: DEBUG: grampswebsync.py: line 449: Uploading file O0045
2025-11-17 14:40:07.251: DEBUG: grampswebsync.py: line 449: Uploading file O0018
2025-11-17 14:40:07.476: DEBUG: grampswebsync.py: line 449: Uploading file O0047
2025-11-17 14:40:07.680: DEBUG: grampswebsync.py: line 449: Uploading file O0017
2025-11-17 14:40:07.915: DEBUG: grampswebsync.py: line 449: Uploading file O0027
2025-11-17 14:40:11.816: DEBUG: grampswebsync.py: line 449: Uploading file O0066
2025-11-17 14:40:12.030: DEBUG: grampswebsync.py: line 449: Uploading file O0060
2025-11-17 14:40:12.355: DEBUG: grampswebsync.py: line 449: Uploading file O0030
2025-11-17 14:40:12.548: DEBUG: grampswebsync.py: line 449: Uploading file O0033
2025-11-17 14:40:12.720: DEBUG: grampswebsync.py: line 449: Uploading file O0055
2025-11-17 14:40:12.931: DEBUG: grampswebsync.py: line 449: Uploading file O0054
2025-11-17 14:40:18.188: DEBUG: grampswebsync.py: line 449: Uploading file O0005
2025-11-17 14:40:18.389: DEBUG: grampswebsync.py: line 449: Uploading file O0008
2025-11-17 14:40:18.617: DEBUG: grampswebsync.py: line 449: Uploading file O0002
2025-11-17 14:40:18.881: DEBUG: grampswebsync.py: line 449: Uploading file O0067
2025-11-17 14:40:19.109: DEBUG: grampswebsync.py: line 449: Uploading file O0068
2025-11-17 14:40:19.336: DEBUG: grampswebsync.py: line 449: Uploading file O0058
2025-11-17 14:40:19.571: DEBUG: grampswebsync.py: line 449: Uploading file O0043
2025-11-17 14:40:19.790: DEBUG: grampswebsync.py: line 449: Uploading file O0075
2025-11-17 14:40:20.012: DEBUG: grampswebsync.py: line 449: Uploading file O0089
2025-11-17 14:40:20.354: DEBUG: grampswebsync.py: line 449: Uploading file O0090
2025-11-17 14:40:20.565: DEBUG: grampswebsync.py: line 449: Uploading file O0085
2025-11-17 14:40:21.326: DEBUG: grampswebsync.py: line 449: Uploading file O0093
2025-11-17 14:40:21.898: DEBUG: grampswebsync.py: line 449: Uploading file O0029
2025-11-17 14:40:22.129: DEBUG: grampswebsync.py: line 449: Uploading file O0078
2025-11-17 14:40:22.350: DEBUG: grampswebsync.py: line 449: Uploading file O0064
2025-11-17 14:40:22.525: DEBUG: grampswebsync.py: line 449: Uploading file O0013
2025-11-17 14:40:22.750: DEBUG: grampswebsync.py: line 449: Uploading file O0020
2025-11-17 14:40:22.997: DEBUG: grampswebsync.py: line 449: Uploading file O0063
2025-11-17 14:40:23.271: DEBUG: grampswebsync.py: line 449: Uploading file O0081
2025-11-17 14:40:23.522: DEBUG: grampswebsync.py: line 449: Uploading file O0039
2025-11-17 14:40:23.705: DEBUG: grampswebsync.py: line 449: Uploading file O0076
2025-11-17 14:40:23.914: DEBUG: grampswebsync.py: line 449: Uploading file O0050
2025-11-17 14:40:24.123: DEBUG: grampswebsync.py: line 449: Uploading file O0040
2025-11-17 14:40:24.329: DEBUG: grampswebsync.py: line 449: Uploading file O0041
2025-11-17 14:40:24.546: DEBUG: grampswebsync.py: line 449: Uploading file O0065
2025-11-17 14:40:26.054: DEBUG: grampswebsync.py: line 449: Uploading file O0077
2025-11-17 14:40:26.309: DEBUG: grampswebsync.py: line 449: Uploading file O0042
2025-11-17 14:40:26.522: DEBUG: grampswebsync.py: line 449: Uploading file O0061
2025-11-17 14:40:26.729: DEBUG: grampswebsync.py: line 449: Uploading file O0038
2025-11-17 14:40:26.942: DEBUG: grampswebsync.py: line 449: Uploading file O0071
2025-11-17 14:40:27.128: DEBUG: grampswebsync.py: line 449: Uploading file O0036
2025-11-17 14:40:27.432: DEBUG: grampswebsync.py: line 449: Uploading file O0082
2025-11-17 14:40:27.666: DEBUG: grampswebsync.py: line 449: Uploading file O0053
2025-11-17 14:40:27.921: DEBUG: grampswebsync.py: line 449: Uploading file O0046
2025-11-17 14:40:28.171: DEBUG: grampswebsync.py: line 449: Uploading file O0049
2025-11-17 14:40:28.366: DEBUG: grampswebsync.py: line 449: Uploading file O0034
2025-11-17 14:40:28.598: DEBUG: grampswebsync.py: line 449: Uploading file O0095
2025-11-17 14:40:28.798: DEBUG: grampswebsync.py: line 449: Uploading file O0080
2025-11-17 14:40:29.068: DEBUG: grampswebsync.py: line 449: Uploading file O0094
2025-11-17 14:40:29.257: DEBUG: grampswebsync.py: line 449: Uploading file O0079
2025-11-17 14:40:29.463: DEBUG: grampswebsync.py: line 449: Uploading file O0057
2025-11-17 14:40:29.670: DEBUG: grampswebsync.py: line 449: Uploading file O0074
2025-11-17 14:40:29.854: DEBUG: grampswebsync.py: line 449: Uploading file O0056
2025-11-17 14:40:30.056: DEBUG: grampswebsync.py: line 449: Uploading file O0048
2025-11-17 14:40:30.308: DEBUG: grampswebsync.py: line 449: Uploading file O0084
2025-11-17 14:40:30.629: DEBUG: grampswebsync.py: line 449: Uploading file O0088
2025-11-17 14:40:30.870: DEBUG: grampswebsync.py: line 449: Uploading file O0069
2025-11-17 14:40:31.147: DEBUG: grampswebsync.py: line 449: Uploading file O0059
2025-11-17 14:40:31.305: DEBUG: grampswebsync.py: line 449: Uploading file O0091
2025-11-17 14:40:31.514: DEBUG: grampswebsync.py: line 449: Uploading file O0044
2025-11-17 14:40:31.675: DEBUG: grampswebsync.py: line 221: Moving to next page from page 6.
2025-11-17 14:40:31.676: DEBUG: grampswebsync.py: line 221: Moving to next page from page 6.
2025-11-17 14:40:42.919: DEBUG: grampswebsync.py: line 213: Closing Gramps Web Sync addon.

Both Gramps client (windows 10 and Ubuntu are on 6.x.x. More info below

Gramps 6.0.4
Gramps Web API 3.3.0
Gramps Web Frontend 25.9.0
Gramps QL 0.4.0
Sifts 1.0.0
locale: en
multi-tree: false
task queue: true
OCR: true
chat: false

Hi,

please check the logs of your Gramps Web backend container. I’m pretty sure you’ll see the error “Uploaded file has the wrong checksum”

See this section in the docs: Synchronize with Gramps - Gramps Web

Hi there… Thank you…That link is really helpful. Probably should have looked there first :slight_smile:

However, I was able to fix the issue by adding an image file server side, so the websync addon would see the change and prompt me for bidirectional/remote/local option (which it was not earlier when I was stuck in a loop). This time I chose bi-directional and it completed successfully. I verified the images also. I guess something (thankfully) set everything back :slight_smile: . I did see the checksum error also in the logfile like you mentioned and saw the file (from earlier when I was stuck). I also verified the file after bi-directional update and it looks good both local/remote.. So all good.. thank you again.

I did see another error in there where someone did a search with the word Bob’s and it gave a 500 and I see the error in the logfile. Is there some special config I am missing to search things w/ an apostrophe

I can open a new thread with the error details and keep this thread clean (mostly) if that is the right approach.

Thanks

However, I was able to fix the issue by adding an image file server side, so the websync addon would see the change and prompt me for bidirectional/remote/local option (which it was not earlier when I was stuck in a loop).

This option is always present. The only case when the selection is not shown is when the two databases are in sync (the databases can be in sync even if image files are missing).

I did see another error in there where someone did a search with the word Bob’s and it gave a 500 and I see the error in the logfile. Is there some special config I am missing to search things w/ an apostrophe

The best approach would be to open a bug report at GitHub - gramps-project/gramps-web-api: A RESTful web API for Gramps - backend of Gramps Web. Thanks!

1 Like

In my case, I’m getting multiple errors on the first sync with multiple image upload. I’ve fixed it by using the “Check and Repair Database” button between each upload. This way, it ends up uploading all the files in several attempts. Otherwise, it never finishes uploading the images.