Separate thread updates into a job and other perf improvements.

This commit is contained in:
Greyson Parrelli
2021-08-24 11:11:48 -04:00
committed by Alex Hart
parent db7272730e
commit 665d9e31f6
19 changed files with 268 additions and 110 deletions

View File

@@ -19,6 +19,7 @@ import org.thoughtcrime.securesms.database.IdentityDatabase.IdentityRecord;
import org.thoughtcrime.securesms.database.MessageDatabase;
import org.thoughtcrime.securesms.database.MessageDatabase.InsertResult;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobs.ThreadUpdateJob;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.sms.IncomingIdentityDefaultMessage;
@@ -90,6 +91,7 @@ public final class IdentityUtil {
else outgoing = new OutgoingIdentityDefaultMessage(recipient);
DatabaseFactory.getSmsDatabase(context).insertMessageOutbox(threadId, outgoing, false, time, null);
ThreadUpdateJob.enqueue(threadId);
}
}
}
@@ -112,6 +114,7 @@ public final class IdentityUtil {
Log.i(TAG, "Inserting verified outbox...");
DatabaseFactory.getSmsDatabase(context).insertMessageOutbox(threadId, outgoing, false, time, null);
ThreadUpdateJob.enqueue(threadId);
}
}

View File

@@ -99,7 +99,9 @@ public final class SignalLocalMetrics {
private static final String SPLIT_DB_INSERT = "db-insert";
private static final String SPLIT_JOB_ENQUEUE = "job-enqueue";
private static final String SPLIT_JOB_PRE_NETWORK = "job-pre-network";
private static final String SPLIT_NETWORK = "network";
private static final String SPLIT_ENCRYPT = "encrypt";
private static final String SPLIT_NETWORK_MAIN = "network-main";
private static final String SPLIT_NETWORK_SYNC = "network-sync";
private static final String SPLIT_JOB_POST_NETWORK = "job-post-network";
private static final String SPLIT_UI_UPDATE = "ui-update";
@@ -123,14 +125,24 @@ public final class SignalLocalMetrics {
LocalMetrics.getInstance().split(requireId(messageId), SPLIT_JOB_ENQUEUE);
}
public static void onNetworkStarted(long messageId) {
public static void onDeliveryStarted(long messageId) {
if (!ID_MAP.containsKey(messageId)) return;
LocalMetrics.getInstance().split(requireId(messageId), SPLIT_JOB_PRE_NETWORK);
}
public static void onNetworkFinished(long messageId) {
public static void onMessageEncrypted(long messageId) {
if (!ID_MAP.containsKey(messageId)) return;
LocalMetrics.getInstance().split(requireId(messageId), SPLIT_NETWORK);
LocalMetrics.getInstance().split(requireId(messageId), SPLIT_ENCRYPT);
}
public static void onMessageSent(long messageId) {
if (!ID_MAP.containsKey(messageId)) return;
LocalMetrics.getInstance().split(requireId(messageId), SPLIT_NETWORK_MAIN);
}
public static void onSyncMessageSent(long messageId) {
if (!ID_MAP.containsKey(messageId)) return;
LocalMetrics.getInstance().split(requireId(messageId), SPLIT_NETWORK_SYNC);
}
public static void onJobFinished(long messageId) {