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