Run SQL corruption check on logic error

Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com>
This commit is contained in:
automated-signal
2025-05-13 14:23:39 -05:00
committed by GitHub
parent 9b5fbfc40e
commit e7723400c4
2 changed files with 10 additions and 1 deletions

View File

@@ -4,6 +4,7 @@
export enum SqliteErrorKind {
Corrupted = 'Corrupted',
Readonly = 'Readonly',
Logic = 'Logic',
Unknown = 'Unknown',
}
@@ -28,5 +29,9 @@ export function parseSqliteError(error?: Error): SqliteErrorKind {
return SqliteErrorKind.Readonly;
}
if (message.includes('SQL logic error')) {
return SqliteErrorKind.Logic;
}
return SqliteErrorKind.Unknown;
}

View File

@@ -155,7 +155,11 @@ const onMessage = (
} catch (error) {
const errorKind = parseSqliteError(error);
if (errorKind === SqliteErrorKind.Corrupted && db != null) {
if (
(errorKind === SqliteErrorKind.Corrupted ||
errorKind === SqliteErrorKind.Logic) &&
db != null
) {
const wasRecovered = DataWriter.runCorruptionChecks(db);
if (
wasRecovered &&