From 97cc82837c8155c629bf7e4f24a14978a4011d46 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 13 Nov 2019 11:23:26 -0500 Subject: [PATCH] Don't backup the JobsDatabase. --- .../securesms/backup/FullBackupExporter.java | 27 ++++++++++++------- .../securesms/database/JobDatabase.java | 10 ++++--- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/org/thoughtcrime/securesms/backup/FullBackupExporter.java b/src/org/thoughtcrime/securesms/backup/FullBackupExporter.java index ac7f09d828..5d2d931e9e 100644 --- a/src/org/thoughtcrime/securesms/backup/FullBackupExporter.java +++ b/src/org/thoughtcrime/securesms/backup/FullBackupExporter.java @@ -9,6 +9,7 @@ import android.text.TextUtils; import com.annimon.stream.function.Consumer; import com.annimon.stream.function.Predicate; +import com.google.android.collect.Sets; import com.google.protobuf.ByteString; import net.sqlcipher.database.SQLiteDatabase; @@ -22,6 +23,7 @@ import org.thoughtcrime.securesms.crypto.ModernDecryptingPartInputStream; import org.thoughtcrime.securesms.database.AttachmentDatabase; import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.GroupReceiptDatabase; +import org.thoughtcrime.securesms.database.JobDatabase; import org.thoughtcrime.securesms.database.MmsDatabase; import org.thoughtcrime.securesms.database.MmsSmsColumns; import org.thoughtcrime.securesms.database.OneTimePreKeyDatabase; @@ -46,8 +48,10 @@ import java.io.OutputStream; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; +import java.util.HashSet; import java.util.LinkedList; import java.util.List; +import java.util.Set; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; @@ -62,8 +66,19 @@ public class FullBackupExporter extends FullBackupBase { @SuppressWarnings("unused") private static final String TAG = FullBackupExporter.class.getSimpleName(); - public static void export(@NonNull Context context, - @NonNull AttachmentSecret attachmentSecret, + private static final Set BLACKLISTED_TABLES = Sets.newHashSet( + SignedPreKeyDatabase.TABLE_NAME, + OneTimePreKeyDatabase.TABLE_NAME, + SessionDatabase.TABLE_NAME, + SearchDatabase.SMS_FTS_TABLE_NAME, + SearchDatabase.MMS_FTS_TABLE_NAME, + JobDatabase.JOBS_TABLE_NAME, + JobDatabase.CONSTRAINTS_TABLE_NAME, + JobDatabase.DEPENDENCIES_TABLE_NAME + ); + +public static void export(@NonNull Context context, +@NonNull AttachmentSecret attachmentSecret, @NonNull SQLiteDatabase input, @NonNull File output, @NonNull String passphrase) @@ -86,13 +101,7 @@ public class FullBackupExporter extends FullBackupBase { count = exportTable(table, input, outputStream, cursor -> isForNonExpiringMessage(input, cursor.getLong(cursor.getColumnIndexOrThrow(AttachmentDatabase.MMS_ID))), cursor -> exportAttachment(attachmentSecret, cursor, outputStream), count); } else if (table.equals(StickerDatabase.TABLE_NAME)) { count = exportTable(table, input, outputStream, cursor -> true, cursor -> exportSticker(attachmentSecret, cursor, outputStream), count); - } else if (!table.equals(SignedPreKeyDatabase.TABLE_NAME) && - !table.equals(OneTimePreKeyDatabase.TABLE_NAME) && - !table.equals(SessionDatabase.TABLE_NAME) && - !table.startsWith(SearchDatabase.SMS_FTS_TABLE_NAME) && - !table.startsWith(SearchDatabase.MMS_FTS_TABLE_NAME) && - !table.startsWith("sqlite_")) - { + } else if (!BLACKLISTED_TABLES.contains(table) && !table.startsWith("sqlite_")) { count = exportTable(table, input, outputStream, null, null, count); } stopwatch.split("table::" + table); diff --git a/src/org/thoughtcrime/securesms/database/JobDatabase.java b/src/org/thoughtcrime/securesms/database/JobDatabase.java index 39968bd0bd..2f1d5bf43b 100644 --- a/src/org/thoughtcrime/securesms/database/JobDatabase.java +++ b/src/org/thoughtcrime/securesms/database/JobDatabase.java @@ -18,12 +18,16 @@ import java.util.List; public class JobDatabase extends Database { + public static String JOBS_TABLE_NAME = "job_spec"; + public static String CONSTRAINTS_TABLE_NAME = "constraint_spec"; + public static String DEPENDENCIES_TABLE_NAME = "dependency_spec"; + public static final String[] CREATE_TABLE = new String[] { Jobs.CREATE_TABLE, Constraints.CREATE_TABLE, Dependencies.CREATE_TABLE }; private static final class Jobs { - private static final String TABLE_NAME = "job_spec"; + private static final String TABLE_NAME = JOBS_TABLE_NAME; private static final String ID = "_id"; private static final String JOB_SPEC_ID = "job_spec_id"; private static final String FACTORY_KEY = "factory_key"; @@ -54,7 +58,7 @@ public class JobDatabase extends Database { } private static final class Constraints { - private static final String TABLE_NAME = "constraint_spec"; + private static final String TABLE_NAME = CONSTRAINTS_TABLE_NAME; private static final String ID = "_id"; private static final String JOB_SPEC_ID = "job_spec_id"; private static final String FACTORY_KEY = "factory_key"; @@ -66,7 +70,7 @@ public class JobDatabase extends Database { } private static final class Dependencies { - private static final String TABLE_NAME = "dependency_spec"; + private static final String TABLE_NAME = DEPENDENCIES_TABLE_NAME; private static final String ID = "_id"; private static final String JOB_SPEC_ID = "job_spec_id"; private static final String DEPENDS_ON_JOB_SPEC_ID = "depends_on_job_spec_id";