From c6b062a698c7c5a870142b51546ba8aae281335a Mon Sep 17 00:00:00 2001 From: yausername Date: Fri, 21 Feb 2020 18:07:19 +0530 Subject: [PATCH] checkpoint db before export --- .../newpipe/settings/ContentSettingsFragment.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java index 03d48ca5b..800162b9c 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java @@ -5,6 +5,7 @@ import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.database.Cursor; import android.os.Bundle; import android.preference.PreferenceManager; import android.util.Log; @@ -17,6 +18,8 @@ import androidx.preference.Preference; import com.nononsenseapps.filepicker.Utils; import com.nostra13.universalimageloader.core.ImageLoader; +import org.schabi.newpipe.App; +import org.schabi.newpipe.NewPipeDatabase; import org.schabi.newpipe.R; import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.localization.ContentCountry; @@ -168,6 +171,9 @@ public class ContentSettingsFragment extends BasePreferenceFragment { private void exportDatabase(String path) { try { + //checkpoint before export + checkpoint(); + ZipOutputStream outZip = new ZipOutputStream( new BufferedOutputStream( new FileOutputStream(path))); @@ -185,6 +191,12 @@ public class ContentSettingsFragment extends BasePreferenceFragment { } } + private void checkpoint() { + Cursor c = NewPipeDatabase.getInstance(App.getApp()).getOpenHelper().getWritableDatabase().query("pragma wal_checkpoint(full)"); + if(c.moveToFirst() && c.getInt(0) == 1) + throw new RuntimeException("Checkpoint was blocked from completing"); + } + private void saveSharedPreferencesToFile(File dst) { ObjectOutputStream output = null; try {