Add `isUrgent` tag to message delivery latency metrics

This commit is contained in:
Chris Eager 2025-06-04 11:03:11 -05:00 committed by Ameya Lokare
parent aef7f3fef8
commit 0f185a528d
3 changed files with 6 additions and 3 deletions

View File

@ -780,6 +780,7 @@ public class MessageController {
messageMetrics.measureOutgoingMessageLatency(outgoingMessageEntity.serverTimestamp(), messageMetrics.measureOutgoingMessageLatency(outgoingMessageEntity.serverTimestamp(),
"rest", "rest",
auth.getAuthenticatedDevice().isPrimary(), auth.getAuthenticatedDevice().isPrimary(),
outgoingMessageEntity.urgent(),
userAgent, userAgent,
clientReleaseManager); clientReleaseManager);
}) })

View File

@ -71,6 +71,7 @@ public final class MessageMetrics {
public void measureOutgoingMessageLatency(final long serverTimestamp, public void measureOutgoingMessageLatency(final long serverTimestamp,
final String channel, final String channel,
final boolean isPrimaryDevice, final boolean isPrimaryDevice,
final boolean isUrgent,
final String userAgent, final String userAgent,
final ClientReleaseManager clientReleaseManager) { final ClientReleaseManager clientReleaseManager) {
@ -78,6 +79,7 @@ public final class MessageMetrics {
tags.add(UserAgentTagUtil.getPlatformTag(userAgent)); tags.add(UserAgentTagUtil.getPlatformTag(userAgent));
tags.add(Tag.of("channel", channel)); tags.add(Tag.of("channel", channel));
tags.add(Tag.of("isPrimary", String.valueOf(isPrimaryDevice))); tags.add(Tag.of("isPrimary", String.valueOf(isPrimaryDevice)));
tags.add(Tag.of("isUrgent", String.valueOf(isUrgent)));
UserAgentTagUtil.getClientVersionTag(userAgent, clientReleaseManager).ifPresent(tags::add); UserAgentTagUtil.getClientVersionTag(userAgent, clientReleaseManager).ifPresent(tags::add);

View File

@ -31,6 +31,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.atomic.LongAdder; import java.util.concurrent.atomic.LongAdder;
import javax.annotation.Nullable;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.eclipse.jetty.util.StaticException; import org.eclipse.jetty.util.StaticException;
import org.reactivestreams.Publisher; 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.MessageMetrics;
import org.whispersystems.textsecuregcm.metrics.MetricsUtil; import org.whispersystems.textsecuregcm.metrics.MetricsUtil;
import org.whispersystems.textsecuregcm.metrics.UserAgentTagUtil; 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.PushNotificationManager;
import org.whispersystems.textsecuregcm.push.PushNotificationScheduler; import org.whispersystems.textsecuregcm.push.PushNotificationScheduler;
import org.whispersystems.textsecuregcm.push.ReceiptSender; import org.whispersystems.textsecuregcm.push.ReceiptSender;
import org.whispersystems.textsecuregcm.push.WebSocketConnectionEventListener;
import org.whispersystems.textsecuregcm.storage.ClientReleaseManager; import org.whispersystems.textsecuregcm.storage.ClientReleaseManager;
import org.whispersystems.textsecuregcm.storage.Device; import org.whispersystems.textsecuregcm.storage.Device;
import org.whispersystems.textsecuregcm.storage.MessagesManager; 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.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.scheduler.Scheduler; import reactor.core.scheduler.Scheduler;
import javax.annotation.Nullable;
public class WebSocketConnection implements WebSocketConnectionEventListener { public class WebSocketConnection implements WebSocketConnectionEventListener {
@ -255,6 +254,7 @@ public class WebSocketConnection implements WebSocketConnectionEventListener {
messageMetrics.measureOutgoingMessageLatency(message.getServerTimestamp(), messageMetrics.measureOutgoingMessageLatency(message.getServerTimestamp(),
"websocket", "websocket",
auth.getAuthenticatedDevice().isPrimary(), auth.getAuthenticatedDevice().isPrimary(),
message.getUrgent(),
client.getUserAgent(), client.getUserAgent(),
clientReleaseManager); clientReleaseManager);
} }