From 7c05b65f343a4ef1ee443dd614174a965fe6ea81 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 11 Sep 2021 15:12:56 +0200 Subject: [PATCH] Added debug setting for DB checkpoints --- .../java/eu/faircode/email/FragmentOptionsMisc.java | 12 +++++++++++- app/src/main/java/eu/faircode/email/WorkerFts.java | 7 +++++-- app/src/main/res/layout/fragment_options_misc.xml | 13 ++++++++++++- app/src/main/res/values/strings.xml | 1 + 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index 1caf3dc4e5..08e0d471f4 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -124,6 +124,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc private SwitchCompat swDebug; private SwitchCompat swQueries; private SwitchCompat swWal; + private SwitchCompat swCheckpoints; private TextView tvSqliteCache; private SeekBar sbSqliteCache; private ImageButton ibSqliteCache; @@ -157,7 +158,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc "shortcuts", "fts", "classification", "class_min_probability", "class_min_difference", "language", "deepl_enabled", "watchdog", "updates", "weekly", - "experiments", "wal", "query_threads", "sqlite_cache", "crash_reports", "cleanup_attachments", + "experiments", "wal", "checkpoints", "query_threads", "sqlite_cache", "crash_reports", "cleanup_attachments", "protocol", "debug", "log_level", "use_modseq", "perform_expunge", "auth_plain", "auth_login", "auth_ntlm", "auth_sasl", @@ -239,6 +240,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc swDebug = view.findViewById(R.id.swDebug); swQueries = view.findViewById(R.id.swQueries); swWal = view.findViewById(R.id.swWal); + swCheckpoints = view.findViewById(R.id.swCheckpoints); tvSqliteCache = view.findViewById(R.id.tvSqliteCache); sbSqliteCache = view.findViewById(R.id.sbSqliteCache); ibSqliteCache = view.findViewById(R.id.ibSqliteCache); @@ -614,6 +616,13 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc } }); + swCheckpoints.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { + prefs.edit().putBoolean("checkpoints", checked).apply(); + } + }); + sbSqliteCache.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { @@ -1097,6 +1106,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc swDebug.setChecked(prefs.getBoolean("debug", false)); swQueries.setChecked(prefs.getInt("query_threads", 4) < 4); swWal.setChecked(prefs.getBoolean("wal", true)); + swCheckpoints.setChecked(prefs.getBoolean("checkpoints", true)); int sqlite_cache = prefs.getInt("sqlite_cache", DB.DB_DEFAULT_CACHE); int cache_size = sqlite_cache * class_mb * 1024 / 100; diff --git a/app/src/main/java/eu/faircode/email/WorkerFts.java b/app/src/main/java/eu/faircode/email/WorkerFts.java index e5f7ccf760..cf91ae9ad4 100644 --- a/app/src/main/java/eu/faircode/email/WorkerFts.java +++ b/app/src/main/java/eu/faircode/email/WorkerFts.java @@ -57,14 +57,14 @@ public class WorkerFts extends Worker { Log.i("FTS index"); Context context = getApplicationContext(); - DB.checkpoint(context); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean checkpoints = prefs.getBoolean("checkpoints", true); int indexed = 0; List ids = new ArrayList<>(INDEX_BATCH_SIZE); DB db = DB.getInstance(context); SQLiteDatabase sdb = FtsDbHelper.getInstance(context); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); for (long id : db.message().getMessageFts()) try { @@ -105,6 +105,9 @@ public class WorkerFts extends Worker { markIndexed(db, ids); + if (checkpoints) + DB.checkpoint(context); + Log.i("FTS indexed=" + indexed); return Result.success(); } catch (Throwable ex) { diff --git a/app/src/main/res/layout/fragment_options_misc.xml b/app/src/main/res/layout/fragment_options_misc.xml index 2b6ebda138..0a7649deaa 100644 --- a/app/src/main/res/layout/fragment_options_misc.xml +++ b/app/src/main/res/layout/fragment_options_misc.xml @@ -640,6 +640,17 @@ app:layout_constraintTop_toBottomOf="@id/tvQueriesRemark" app:switchPadding="12dp" /> + + + app:layout_constraintTop_toBottomOf="@id/swCheckpoints" /> Debug mode Limit parallel database access WAL + Checkpoints Sqlite cache %1$s %% - %2$s MODSEQ EXPUNGE