From 33be622f3ec2702d915ca7acab618a1848fb6b08 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 22 Dec 2023 15:56:21 +0100 Subject: [PATCH] Delete only corrupt databases --- .../sqlite/db/framework/FrameworkSQLiteOpenHelper.kt | 3 ++- app/src/main/java/eu/faircode/email/DB.java | 7 ++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/androidx/sqlite/db/framework/FrameworkSQLiteOpenHelper.kt b/app/src/main/java/androidx/sqlite/db/framework/FrameworkSQLiteOpenHelper.kt index 21ea6a0b86..18f5feeaff 100644 --- a/app/src/main/java/androidx/sqlite/db/framework/FrameworkSQLiteOpenHelper.kt +++ b/app/src/main/java/androidx/sqlite/db/framework/FrameworkSQLiteOpenHelper.kt @@ -18,6 +18,7 @@ package androidx.sqlite.db.framework import android.content.Context import android.database.DatabaseErrorHandler import android.database.sqlite.SQLiteDatabase +import android.database.sqlite.SQLiteDatabaseCorruptException import android.database.sqlite.SQLiteException import android.database.sqlite.SQLiteOpenHelper import android.os.Build @@ -204,7 +205,7 @@ internal class FrameworkSQLiteOpenHelper @JvmOverloads constructor( } // If callback exception is not an SQLiteException, then more certainly it is not // recoverable. - if (cause !is SQLiteException) { + if (cause !is SQLiteDatabaseCorruptException) { throw cause } } else if (openRetryError is SQLiteException) { diff --git a/app/src/main/java/eu/faircode/email/DB.java b/app/src/main/java/eu/faircode/email/DB.java index ae939b4a6d..32e85dd25a 100644 --- a/app/src/main/java/eu/faircode/email/DB.java +++ b/app/src/main/java/eu/faircode/email/DB.java @@ -522,7 +522,7 @@ public abstract class DB extends RoomDatabase { dropTriggers(db); createTriggers(db); - } catch (SQLiteException ex) { + } catch (Throwable ex) { /* at eu.faircode.email.DB$6.onOpen(DB.java:522) at eu.faircode.email.DB_Impl$1.onOpen(DB_Impl.java:171) @@ -538,10 +538,7 @@ public abstract class DB extends RoomDatabase { */ Log.e(ex); // FrameworkSQLiteOpenHelper.innerGetDatabase will delete the database - if (ex instanceof SQLiteDatabaseCorruptException) - throw ex; - else - throw new RuntimeException("Open failed", ex); + throw ex; } }