From ac41f3d662e21f2fc241ea9543e36b2e90f7982f Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Thu, 3 Dec 2020 12:50:56 -0500 Subject: [PATCH] Fix deadlock between group calling jobs. --- .../securesms/database/SmsDatabase.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java index 4f02701aa2..e0285760de 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java @@ -694,13 +694,16 @@ public class SmsDatabase extends MessageDatabase { @NonNull Collection peekJoinedUuids, boolean isCallFull) { - SQLiteDatabase db = databaseHelper.getWritableDatabase(); + SQLiteDatabase db = databaseHelper.getWritableDatabase(); + + long threadId; try { db.beginTransaction(); Recipient recipient = Recipient.resolved(groupRecipientId); - long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(recipient); + + threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(recipient); boolean peerEraIdSameAsPrevious = updatePreviousGroupCall(threadId, peekGroupCallEraId, peekJoinedUuids, isCallFull); @@ -736,13 +739,13 @@ public class SmsDatabase extends MessageDatabase { DatabaseFactory.getThreadDatabase(context).update(threadId, true); - notifyConversationListeners(threadId); - ApplicationDependencies.getJobManager().add(new TrimThreadJob(threadId)); - db.setTransactionSuccessful(); } finally { db.endTransaction(); } + + notifyConversationListeners(threadId); + ApplicationDependencies.getJobManager().add(new TrimThreadJob(threadId)); } @Override