From 9c4415ac41b51f8f4ce08a4e3d74fbcef88002b0 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 12 Jun 2020 12:58:55 +0200 Subject: [PATCH] Delete FTS DB on corruption --- .../java/eu/faircode/email/FragmentOptionsMisc.java | 12 +++++++++--- app/src/main/java/eu/faircode/email/FtsDbHelper.java | 4 ++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index ca3fa66fbc..004b14f184 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -27,6 +27,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; +import android.database.sqlite.SQLiteDatabaseCorruptException; import android.graphics.Paint; import android.net.Uri; import android.os.Bundle; @@ -192,9 +193,14 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc new SimpleTask() { @Override protected Void onExecute(Context context, Bundle args) { - SQLiteDatabase sdb = FtsDbHelper.getInstance(context); - FtsDbHelper.delete(sdb); - FtsDbHelper.optimize(sdb); + try { + SQLiteDatabase sdb = FtsDbHelper.getInstance(context); + FtsDbHelper.delete(sdb); + FtsDbHelper.optimize(sdb); + } catch (SQLiteDatabaseCorruptException ex) { + Log.e(ex); + FtsDbHelper.delete(context); + } DB db = DB.getInstance(context); db.message().resetFts(); diff --git a/app/src/main/java/eu/faircode/email/FtsDbHelper.java b/app/src/main/java/eu/faircode/email/FtsDbHelper.java index 5850874a9a..d82864c442 100644 --- a/app/src/main/java/eu/faircode/email/FtsDbHelper.java +++ b/app/src/main/java/eu/faircode/email/FtsDbHelper.java @@ -174,4 +174,8 @@ public class FtsDbHelper extends SQLiteOpenHelper { Log.i("FTS optimize"); db.execSQL("INSERT INTO message (message) VALUES ('optimize')"); } + + static void delete(Context context) { + context.getDatabasePath(DATABASE_NAME).delete(); + } }