run Check DB in a background thread

Since the DB is now stored behind a mutex, we're no longer limited
to accessing the database on the main thread.
This commit is contained in:
Damien Elmes 2020-03-06 12:35:02 +10:00
parent daaf8bdc70
commit 32555b2857

View file

@ -12,6 +12,7 @@ import signal
import time import time
import zipfile import zipfile
from argparse import Namespace from argparse import Namespace
from concurrent.futures import Future
from threading import Thread from threading import Thread
from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple
@ -1260,9 +1261,12 @@ will be lost. Continue?"""
def onCheckDB(self): def onCheckDB(self):
"True if no problems" "True if no problems"
self.progress.start(immediate=True) self.progress.start()
ret, ok = self.col.fixIntegrity()
def onDone(future: Future):
self.progress.finish() self.progress.finish()
ret, ok = future.result()
if not ok: if not ok:
showText(ret) showText(ret)
else: else:
@ -1278,7 +1282,8 @@ will be lost. Continue?"""
except Exception as e: except Exception as e:
print("swallowed exception in reset hook:", e) print("swallowed exception in reset hook:", e)
continue continue
return ret
self.taskman.run_in_background(self.col.fixIntegrity, onDone)
def on_check_media_db(self) -> None: def on_check_media_db(self) -> None:
check_media_db(self) check_media_db(self)