mirror of
https://github.com/ArchiveBox/ArchiveBox
synced 2024-11-10 06:34:16 +00:00
Improve search.backends.sqlite retry logic
Retry with table creation should fail if it is attempted for a second time.
This commit is contained in:
parent
8fe5faf4d0
commit
e0f8eeeaa7
1 changed files with 5 additions and 3 deletions
|
@ -129,14 +129,16 @@ def index(snapshot_id: str, texts: List[str]):
|
||||||
"INSERT OR REPLACE INTO"
|
"INSERT OR REPLACE INTO"
|
||||||
f" {table}(rowid, {column}) VALUES ({SQLITE_BIND}, {SQLITE_BIND})",
|
f" {table}(rowid, {column}) VALUES ({SQLITE_BIND}, {SQLITE_BIND})",
|
||||||
[rowid, text])
|
[rowid, text])
|
||||||
# All statements succeeded; break retry loop
|
# All statements succeeded; return
|
||||||
break
|
return
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if str(e).startswith(f"no such table:"):
|
if str(e).startswith("no such table:") and retries > 0:
|
||||||
_create_tables()
|
_create_tables()
|
||||||
else:
|
else:
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
raise RuntimeError("Failed to create tables for SQLite FTS5 search")
|
||||||
|
|
||||||
@enforce_types
|
@enforce_types
|
||||||
def search(text: str) -> List[str]:
|
def search(text: str) -> List[str]:
|
||||||
table = _escape_sqlite3_identifier(FTS_TABLE)
|
table = _escape_sqlite3_identifier(FTS_TABLE)
|
||||||
|
|
Loading…
Reference in a new issue