Decrease db thrashing when starting expiration timers for messages.

This commit is contained in:
Cody Henthorne
2023-10-11 16:14:08 -04:00
parent 05296e3d9b
commit 6a6b80cce2
6 changed files with 51 additions and 28 deletions

View File

@@ -2,15 +2,19 @@ package org.thoughtcrime.securesms.service;
import android.content.Context;
import androidx.annotation.NonNull;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.database.MessageTable;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.database.model.MessageRecord;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
public class ExpiringMessageManager {
@@ -45,6 +49,17 @@ public class ExpiringMessageManager {
}
}
public void scheduleDeletion(@NonNull List<MessageTable.ExpirationInfo> expirationInfos) {
List<ExpiringMessageReference> references = expirationInfos.stream()
.map(info -> new ExpiringMessageReference(info.getId(), info.isMms(), info.getExpireStarted() + info.getExpiresIn()))
.collect(Collectors.toList());
synchronized (expiringMessageReferences) {
expiringMessageReferences.addAll(references);
expiringMessageReferences.notifyAll();
}
}
public void checkSchedule() {
synchronized (expiringMessageReferences) {
expiringMessageReferences.notifyAll();