From 0f185a528dc7203695a9a473b906bdae47cfd1c3 Mon Sep 17 00:00:00 2001 From: Chris Eager Date: Wed, 4 Jun 2025 11:03:11 -0500 Subject: [PATCH] Add `isUrgent` tag to message delivery latency metrics --- .../textsecuregcm/controllers/MessageController.java | 1 + .../textsecuregcm/metrics/MessageMetrics.java | 2 ++ .../textsecuregcm/websocket/WebSocketConnection.java | 6 +++--- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java index 3e72f4d52..15eb3c727 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java @@ -780,6 +780,7 @@ public class MessageController { messageMetrics.measureOutgoingMessageLatency(outgoingMessageEntity.serverTimestamp(), "rest", auth.getAuthenticatedDevice().isPrimary(), + outgoingMessageEntity.urgent(), userAgent, clientReleaseManager); }) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MessageMetrics.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MessageMetrics.java index db8e28662..61c06af2a 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MessageMetrics.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MessageMetrics.java @@ -71,6 +71,7 @@ public final class MessageMetrics { public void measureOutgoingMessageLatency(final long serverTimestamp, final String channel, final boolean isPrimaryDevice, + final boolean isUrgent, final String userAgent, final ClientReleaseManager clientReleaseManager) { @@ -78,6 +79,7 @@ public final class MessageMetrics { tags.add(UserAgentTagUtil.getPlatformTag(userAgent)); tags.add(Tag.of("channel", channel)); tags.add(Tag.of("isPrimary", String.valueOf(isPrimaryDevice))); + tags.add(Tag.of("isUrgent", String.valueOf(isUrgent))); UserAgentTagUtil.getClientVersionTag(userAgent, clientReleaseManager).ifPresent(tags::add); diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java b/service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java index 4a9931202..7ce78ee96 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/websocket/WebSocketConnection.java @@ -31,6 +31,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.LongAdder; +import javax.annotation.Nullable; import org.apache.commons.lang3.StringUtils; import org.eclipse.jetty.util.StaticException; import org.reactivestreams.Publisher; @@ -47,11 +48,10 @@ import org.whispersystems.textsecuregcm.limits.MessageDeliveryLoopMonitor; import org.whispersystems.textsecuregcm.metrics.MessageMetrics; import org.whispersystems.textsecuregcm.metrics.MetricsUtil; import org.whispersystems.textsecuregcm.metrics.UserAgentTagUtil; -import org.whispersystems.textsecuregcm.push.MessageSender; -import org.whispersystems.textsecuregcm.push.WebSocketConnectionEventListener; import org.whispersystems.textsecuregcm.push.PushNotificationManager; import org.whispersystems.textsecuregcm.push.PushNotificationScheduler; import org.whispersystems.textsecuregcm.push.ReceiptSender; +import org.whispersystems.textsecuregcm.push.WebSocketConnectionEventListener; import org.whispersystems.textsecuregcm.storage.ClientReleaseManager; import org.whispersystems.textsecuregcm.storage.Device; import org.whispersystems.textsecuregcm.storage.MessagesManager; @@ -64,7 +64,6 @@ import reactor.core.observability.micrometer.Micrometer; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.scheduler.Scheduler; -import javax.annotation.Nullable; public class WebSocketConnection implements WebSocketConnectionEventListener { @@ -255,6 +254,7 @@ public class WebSocketConnection implements WebSocketConnectionEventListener { messageMetrics.measureOutgoingMessageLatency(message.getServerTimestamp(), "websocket", auth.getAuthenticatedDevice().isPrimary(), + message.getUrgent(), client.getUserAgent(), clientReleaseManager); }