Prevent thread trimming from gumming up the database.

This commit is contained in:
Greyson Parrelli
2023-01-27 12:41:41 -05:00
parent 30c33fdd77
commit 7348224dc2
3 changed files with 13 additions and 10 deletions

View File

@@ -3322,24 +3322,18 @@ public class MessageTable extends DatabaseTable implements MessageTypes, Recipie
SQLiteDatabase db = databaseHelper.getSignalWritableDatabase();
String where = THREAD_ID + " = ? AND " + DATE_RECEIVED + " < " + date;
int count = db.delete(TABLE_NAME, where, SqlUtil.buildArgs(threadId));
if (count > 0) {
OptimizeMessageSearchIndexJob.enqueue();
}
return count;
return db.delete(TABLE_NAME, where, SqlUtil.buildArgs(threadId));
}
void deleteAbandonedMessages() {
int deleteAbandonedMessages() {
SQLiteDatabase db = databaseHelper.getSignalWritableDatabase();
String where = THREAD_ID + " NOT IN (SELECT _id FROM " + ThreadTable.TABLE_NAME + ")";
int deletes = db.delete(TABLE_NAME, where, null);
if (deletes > 0) {
Log.i(TAG, "Deleted " + deletes + " abandoned messages");
OptimizeMessageSearchIndexJob.enqueue();
}
return deletes;
}
public void deleteRemotelyDeletedStory(long messageId) {

View File

@@ -45,6 +45,7 @@ import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList
import org.thoughtcrime.securesms.database.model.serialize
import org.thoughtcrime.securesms.groups.BadGroupIdException
import org.thoughtcrime.securesms.groups.GroupId
import org.thoughtcrime.securesms.jobs.OptimizeMessageSearchIndexJob
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.mms.SlideDeck
import org.thoughtcrime.securesms.mms.StickerSlide
@@ -311,6 +312,7 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
notifyAttachmentListeners()
notifyStickerPackListeners()
OptimizeMessageSearchIndexJob.enqueue()
}
fun trimThread(threadId: Long, length: Int, trimBeforeDate: Long) {
@@ -333,6 +335,7 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
notifyAttachmentListeners()
notifyStickerPackListeners()
OptimizeMessageSearchIndexJob.enqueue()
}
private fun trimThreadInternal(threadId: Long, length: Int, trimBeforeDate: Long) {