My plugin FFF calls the Reading List plugin to update lists as part of downloading or updating a book. This has been working fine for years.
I've seen the following error twice now, albeit a couple weeks apart. My understanding was that using Calibre's 'proceed' dialog would prevent such race conditions.
Code:
calibre, version 4.99.12
ERROR: Unhandled exception: <b>ThreadingViolationError</b>:You are trying to use the same object concurrently in two threads or re-entrantly within the same thread which is not allowed.
calibre 4.99.12 [64bit] embedded-python: True is64bit: True
Windows-10-10.0.19041-SP0 Windows ('64bit', 'WindowsPE')
('Windows', '10', '10.0.19041')
Python 3.8.3
Windows: ('10', '10.0.19041', 'SP0', 'Multiprocessor Free')
Interface language: None
Successfully initialized third party plugins: ColumnSum (2, 1, 0) && Count Pages (1, 10, 0) && EpubMerge (2, 10, 1) && EpubSplit (2, 9, 0) && FanFicFare (3, 22, 7) && Favourites Menu (1, 0, 5) && Generate Cover (1, 5, 25) && Manage Series (1, 2, 9) && Modify ePub (1, 4, 1) && Quality Check (1, 10, 1) && Reading List (1, 6, 13) && SmartEject (2, 3, 0) && SplitMergeNew (0, 2, 0) && View Manager (1, 5, 6)
Traceback (most recent call last):
File "site-packages\calibre\db\backend.py", line 132, in __setitem__
File "site-packages\calibre\db\backend.py", line 915, in execute
apsw.ThreadingViolationError: You are trying to use the same object concurrently in two threads or re-entrantly within the same thread which is not allowed.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "site-packages\calibre\gui2\proceed.py", line 209, in do_ask_question
File "calibre_plugins.fanficfare_plugin.fff_plugin", line 1898, in do_download_list_update
File "calibre_plugins.fanficfare_plugin.dialogs", line 636, in LoopProgressDialog
File "calibre_plugins.fanficfare_plugin.fff_plugin", line 1634, in update_books_finish
File "calibre_plugins.fanficfare_plugin.fff_plugin", line 2368, in update_reading_lists
File "calibre_plugins.reading_list.action", line 463, in add_books_to_list
File "calibre_plugins.reading_list.config", line 240, in set_book_list
File "calibre_plugins.reading_list.config", line 220, in set_library_config
File "site-packages\calibre\db\backend.py", line 151, in set_namespaced
File "site-packages\calibre\db\backend.py", line 133, in __setitem__
apsw.ThreadingViolationError: You are trying to use the same object concurrently in two threads or re-entrantly within the same thread which is not allowed.