Преглед на файлове

Fix crash on starting a run while the DB is locked

master
JustAnotherArchivist преди 3 години
родител
ревизия
dcd5455388
променени са 1 файла, в които са добавени 11 реда и са изтрити 1 реда
  1. +11
    -1
      qwarc/__init__.py

+ 11
- 1
qwarc/__init__.py Целия файл

@@ -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"')


Зареждане…
Отказ
Запис