diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageObserver.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageObserver.kt index 002d54b452..584a9937a5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageObserver.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/IncomingMessageObserver.kt @@ -299,7 +299,7 @@ class IncomingMessageObserver(private val context: Application) { val result = MessageDecryptor.decrypt(context, bufferedProtocolStore, envelope, serverDeliveredTimestamp) localReceiveMetric.onEnvelopeDecrypted() - SignalLocalMetrics.MessageLatency.onMessageReceived(envelope.serverTimestamp, serverDeliveredTimestamp) + SignalLocalMetrics.MessageLatency.onMessageReceived(envelope.serverTimestamp, serverDeliveredTimestamp, envelope.urgent) when (result) { is MessageDecryptor.Result.Success -> { val job = PushProcessMessageJobV2.processOrDefer(messageContentProcessor, result, localReceiveMetric) diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt index 062d181575..9e6960c1e5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt @@ -73,17 +73,17 @@ object SlowNotificationHeuristics { } private fun hasLongMessageLatency(metrics: List, minimumEventAgeMs: Long, percentage: Int, messageThreshold: Int, durationThreshold: Long): Boolean { - if (!haveEnoughData(SignalLocalMetrics.MessageLatency.NAME, minimumEventAgeMs)) { + if (!haveEnoughData(SignalLocalMetrics.MessageLatency.NAME_HIGH, minimumEventAgeMs)) { Log.d(TAG, "insufficient data for message latency") return false } - val eventCount = metrics.count { it.name == SignalLocalMetrics.MessageLatency.NAME } + val eventCount = metrics.count { it.name == SignalLocalMetrics.MessageLatency.NAME_HIGH } if (eventCount < messageThreshold) { Log.d(TAG, "not enough messages for message latency") return false } val db = LocalMetricsDatabase.getInstance(ApplicationDependencies.getApplication()) - val averageLatency = db.eventPercent(SignalLocalMetrics.MessageLatency.NAME, percentage.coerceAtMost(100).coerceAtLeast(0)) + val averageLatency = db.eventPercent(SignalLocalMetrics.MessageLatency.NAME_HIGH, percentage.coerceAtMost(100).coerceAtLeast(0)) val longMessageLatency = averageLatency > durationThreshold if (longMessageLatency) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/SignalLocalMetrics.java b/app/src/main/java/org/thoughtcrime/securesms/util/SignalLocalMetrics.java index c30a59ff93..1abe9fa9a1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/SignalLocalMetrics.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/SignalLocalMetrics.java @@ -204,15 +204,17 @@ public final class SignalLocalMetrics { } public static final class MessageLatency { - public static final String NAME = "message-latency"; + public static final String NAME_HIGH = "message-latency-high-priority"; + public static final String NAME_LOW = "message-latency-low-priority"; private static final String SPLIT_LATENCY = "latency"; - public static void onMessageReceived(long serverReceiveTimestamp, long serverDeliverTimestamp) { - long latency = serverDeliverTimestamp - serverReceiveTimestamp; + public static void onMessageReceived(long serverReceiveTimestamp, long serverDeliverTimestamp, boolean highPriority) { + String name = highPriority ? NAME_HIGH : NAME_LOW; + long latency = serverDeliverTimestamp - serverReceiveTimestamp; - String id = NAME + System.currentTimeMillis(); - LocalMetrics.getInstance().start(id, NAME); + String id = name + System.currentTimeMillis(); + LocalMetrics.getInstance().start(id, name); LocalMetrics.getInstance().splitWithDuration(id, SPLIT_LATENCY, latency); LocalMetrics.getInstance().end(id); }