Bläddra i källkod

Fix crash on starting a run while the DB is locked

master
JustAnotherArchivist 3 år sedan
förälder
incheckning
dcd5455388
1 ändrade filer med 11 tillägg och 1 borttagningar
  1. +11
    -1
      qwarc/__init__.py

+ 11
- 1
qwarc/__init__.py Visa fil

@@ -331,7 +331,17 @@ class QWARC:

self._db = sqlite3.connect(self._dbPath, timeout = 1)
self._db.isolation_level = None # Transactions are handled manually below.
self._db.execute('PRAGMA synchronous = OFF')

# Setting the synchronous PRAGMA is not possible if the DB is currently locked by another process but also can't be done inside a transaction... So just retry until it succeeds.
while True:
try:
self._db.execute('PRAGMA synchronous = OFF')
except sqlite3.OperationalError as e:
if str(e) != 'database is locked':
raise
await asyncio.sleep(1)
else:
break

async with self.exclusive_db_lock() as cursor:
cursor.execute('SELECT name FROM sqlite_master WHERE type = "table" AND name = "items"')


Laddar…
Avbryt
Spara