From 4260a8436b36b34911208332ba24f256249f0d58 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 23 Oct 2019 16:16:13 -0700 Subject: [PATCH] Fix possible de-duping issues. - Clean bad hashes from earlier release. - Fix file equality comparison. - Given our new de-duping, we don't want to run into a situation where two simultaneous compressions could be happening on the same image. --- .../securesms/database/AttachmentDatabase.java | 2 +- .../securesms/database/helpers/SQLCipherOpenHelper.java | 7 ++++++- .../securesms/jobs/AttachmentCompressionJob.java | 4 +++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/org/thoughtcrime/securesms/database/AttachmentDatabase.java b/src/org/thoughtcrime/securesms/database/AttachmentDatabase.java index 12d9cddde1..44eed7a4a6 100644 --- a/src/org/thoughtcrime/securesms/database/AttachmentDatabase.java +++ b/src/org/thoughtcrime/securesms/database/AttachmentDatabase.java @@ -819,7 +819,7 @@ public class AttachmentDatabase extends Database { Optional sharedDataInfo = findDuplicateDataFileInfo(database, hash, attachmentId); if (sharedDataInfo.isPresent()) { Log.i(TAG, "[setAttachmentData] Duplicate data file found! " + sharedDataInfo.get().file.getAbsolutePath()); - if (sharedDataInfo.get().file != destination && destination.delete()) { + if (!destination.equals(sharedDataInfo.get().file) && destination.delete()) { Log.i(TAG, "[setAttachmentData] Deleted original file. " + destination); } return sharedDataInfo.get(); diff --git a/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java b/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java index 3c4fe6176c..7aaf096105 100644 --- a/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java +++ b/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java @@ -87,8 +87,9 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper { private static final int BLUR_HASH = 30; private static final int MMS_RECIPIENT_CLEANUP_2 = 31; private static final int ATTACHMENT_TRANSFORM_PROPERTIES = 32; + private static final int ATTACHMENT_CLEAR_HASHES = 33; - private static final int DATABASE_VERSION = 32; + private static final int DATABASE_VERSION = 33; private static final String DATABASE_NAME = "signal.db"; private final Context context; @@ -602,6 +603,10 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper { db.execSQL("ALTER TABLE part ADD COLUMN transform_properties TEXT DEFAULT NULL"); } + if (oldVersion < ATTACHMENT_CLEAR_HASHES) { + db.execSQL("UPDATE part SET data_hash = null"); + } + db.setTransactionSuccessful(); } finally { db.endTransaction(); diff --git a/src/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java b/src/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java index 826e12d146..9600c74006 100644 --- a/src/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java +++ b/src/org/thoughtcrime/securesms/jobs/AttachmentCompressionJob.java @@ -74,7 +74,7 @@ public final class AttachmentCompressionJob extends BaseJob { .addConstraint(NetworkConstraint.KEY) .setLifespan(TimeUnit.DAYS.toMillis(1)) .setMaxAttempts(Parameters.UNLIMITED) - .setQueue(isVideoTranscode ? "VIDEO_TRANSCODE" : null) + .setQueue(isVideoTranscode ? "VIDEO_TRANSCODE" : "GENERIC_TRANSCODE") .build(), attachmentId, mms, @@ -108,6 +108,8 @@ public final class AttachmentCompressionJob extends BaseJob { @Override public void onRun() throws Exception { + Log.d(TAG, "Running for: " + attachmentId); + AttachmentDatabase database = DatabaseFactory.getAttachmentDatabase(context); DatabaseAttachment databaseAttachment = database.getAttachment(attachmentId);