Recent issues with syncing

Before the error happened, I was…
I had just completed my reviews for one of my decks, and manually clicked the “Sync” button at the top.

This has actually been occurring for the last couple of weeks. I will usually complete my cards for the day, hit sync, and then the error will throw. The error also occurs if I hit sync in the middle of doing my cards. I have furthermore clicked the sync button immediately after opening Anki, just to test, and have also received the error (so not dependent on having done a certain number of cards). After the error throws, the “Syncing…” screen will display with all zeros regarding the data (Added/modified, Removed). It will remain in animation but never become functional, regardless of how long I wait. The only solution I have found is to force-quit Anki because clicking the escape icon does not function. After rebooting Anki, sync works as expected.

Thanks for the help!

Error message (don't change this)
Anki 25.02.7 (1b882285)  (ao)
Python 3.9.18 Qt 6.6.2 PyQt 6.6.1
Platform: macOS-15.6.1-arm64-arm-64bit

Traceback (most recent call last):

  File "aqt.taskman", line 144, in _on_closures_pending

  File "aqt.taskman", line 88, in <lambda>

  File "aqt.taskman", line 108, in wrapped_done

  File "aqt.sync", line 127, in on_future_done

  File "decorator", line 232, in fun

  File "anki.hooks", line 92, in decorator_wrapper

  File "anki.hooks", line 89, in repl

  File "/Users/grantwilliams/Library/Application Support/Anki2/addons21/1322529746/gui/operations/ankihub_sync.py", line 318, in _upload_if_full_sync_triggered_by_ankihub
    aqt.sync.full_upload(mw, server_usn, on_done)

  File "aqt.sync", line 288, in full_upload

  File "aqt.taskman", line 110, in with_progress

  File "aqt.taskman", line 71, in run_in_background

  File "aqt.taskman", line 144, in _on_closures_pending

  File "aqt.taskman", line 88, in <lambda>

  File "aqt.operations", line 261, in wrapped_done

  File "aqt.deckbrowser", line 171, in success

  File "aqt.deckbrowser", line 187, in __renderPage

  File "_aqt.hooks", line 1837, in __call__

  File "/Users/grantwilliams/Library/Application Support/Anki2/addons21/1771074083/views.py", line 81, in on_deckbrowser_will_render_content
    heatmap_html = self._controller.render_for_view(self._view)

  File "/Users/grantwilliams/Library/Application Support/Anki2/addons21/1771074083/controller.py", line 77, in render_for_view
    return self._renderer.render(view, limhist, limfcst, current_deck_only)

  File "/Users/grantwilliams/Library/Application Support/Anki2/addons21/1771074083/renderer.py", line 145, in render
    if self._render_cache and self._cache_still_valid(

  File "/Users/grantwilliams/Library/Application Support/Anki2/addons21/1771074083/renderer.py", line 205, in _cache_still_valid
    col_unchanged = self._mw.col.mod == cache.col_mod  # type: ignore

  File "anki._legacy", line 81, in __getattr__

AttributeError: 'Collection' object has no attribute 'mod'

Sentry link (for developers)

Does Tools > Check Database help?

Sadly, no. I did as suggested, and upon re-syncing, I was met with the same error.

Can you try installing the latest Anki version and see if that fixes the issue?

You can install it from here: https://apps.ankiweb.net/

2 Likes

So far so good! I’ll report back if there are any further issues. Thank you!

1 Like

So, interestingly enough it seems that pretty consistently most syncs are now throwing an error due to Heatmap. Disabling heatmap resolves these issues. Not sure if this is fixable or even the right forum to pursue this solution, but here is the debug code

Debug Code

Anki 25.09.2 (3890e12c) (ao)
Python 3.13.5 Qt 6.9.1 PyQt 6.9.1
Platform: macOS-15.6.1-arm64-arm-64bit-Mach-O

Traceback (most recent call last):
File “/Users/grantwilliams/Library/Application Support/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/taskman.py”, line 152, in raise_exception
raise exception
File “/Users/grantwilliams/Library/Application Support/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/taskman.py”, line 148, in _on_closures_pending
closure()
~~~~~~~^^
File “/Users/grantwilliams/Library/Application Support/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/taskman.py”, line 88, in
lambda future: self.run_on_main(lambda: on_done(future))
~~~~~~~^^^^^^^^
File “/Users/grantwilliams/Library/Application Support/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/operations/init.py”, line 261, in wrapped_done
self._success(future.result())
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File “/Users/grantwilliams/Library/Application Support/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/deckbrowser.py”, line 171, in success
self.__renderPage(None)
~~~~~~~~~~~~~~~~~^^^^^^
File “/Users/grantwilliams/Library/Application Support/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/deckbrowser.py”, line 187, in __renderPage
gui_hooks.deck_browser_will_render_content(self, content)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
File “/Users/grantwilliams/Library/Application Support/AnkiProgramFiles/.venv/lib/python3.13/site-packages/_aqt/hooks.py”, line 1873, in call
hook(deck_browser, content)
~~~~^^^^^^^^^^^^^^^^^^^^^^^
File “/Users/grantwilliams/Library/Application Support/Anki2/addons21/1771074083/views.py”, line 81, in on_deckbrowser_will_render_content
heatmap_html = self._controller.render_for_view(self._view)
File “/Users/grantwilliams/Library/Application Support/Anki2/addons21/1771074083/controller.py”, line 77, in render_for_view
return self._renderer.render(view, limhist, limfcst, current_deck_only)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/Users/grantwilliams/Library/Application Support/Anki2/addons21/1771074083/renderer.py”, line 145, in render
if self._render_cache and self._cache_still_valid(
~~~~~~~~~~~~~~~~~~~~~~~^
view, limhist, limfcst, current_deck_only
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
):
^
File “/Users/grantwilliams/Library/Application Support/Anki2/addons21/1771074083/renderer.py”, line 205, in _cache_still_valid
col_unchanged = self._mw.col.mod == cache.col_mod # type: ignore
^^^^^^^^^^^^^^^^
File “/Users/grantwilliams/Library/Application Support/AnkiProgramFiles/.venv/lib/python3.13/site-packages/anki/_legacy.py”, line 81, in getattr
raise AttributeError(
f"‘{self.class.name}’ object has no attribute ‘{name}’"
) from None
AttributeError: ‘Collection’ object has no attribute ‘mod’

===Add-ons (active)===
(add-on provided name [Add-on folder, installed at, version, is config changed])
AMBOSS Official Medical School Step Shelf Study Resource [‘1044112126’, 2998-12-31T19:00, ‘None’, mod]
Anki Remote - Customize [‘693153301’, 2025-11-10T22:30, ‘None’, mod]
AnkiHub [‘1322529746’, 2025-11-12T09:49, ‘None’, ‘’]
Closet For Anki [‘272311064’, 2022-08-12T04:27, ‘None’, ‘’]
Custom Background Image and Gear Icon [‘1210908941’, 2025-12-17T08:00, ‘None’, mod]
Image Occlusion Enhanced [‘1374772155’, 2022-04-09T03:15, ‘None’, ‘’]
Review Heatmap [‘1771074083’, 2022-06-29T21:43, ‘None’, ‘’]
UpToDate Addon [‘utd_anki_addon’, 2023-05-08T11:16, ‘None’, ‘’]

===IDs of active AnkiWeb add-ons===
1044112126 1210908941 1322529746 1374772155 1771074083 272311064 693153301

===Add-ons (inactive)===
(add-on provided name [Add-on folder, installed at, version, is config changed])

Thanks!

We occasionally get reports of this. Probably an issue in Review Heatmap.

2 Likes

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.