mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2025-12-24 20:26:24 +00:00
Run SQL corruption check on logic error
Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 &&
|
||||
|
||||
Reference in New Issue
Block a user