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 3d1f39589..c66d4a7e5 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java @@ -16,6 +16,7 @@ */ package org.whispersystems.textsecuregcm.controllers; +import com.codahale.metrics.Histogram; import com.codahale.metrics.Meter; import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.SharedMetricRegistries; @@ -79,11 +80,12 @@ import static com.codahale.metrics.MetricRegistry.name; @Path("/v1/messages") public class MessageController { - private final Logger logger = LoggerFactory.getLogger(MessageController.class); - private final MetricRegistry metricRegistry = SharedMetricRegistries.getOrCreate(Constants.METRICS_NAME); - private final Meter unidentifiedMeter = metricRegistry.meter(name(getClass(), "delivery", "unidentified")); - private final Meter identifiedMeter = metricRegistry.meter(name(getClass(), "delivery", "identified" )); - private final Timer sendMessageInternalTimer = metricRegistry.timer(name(getClass(), "sendMessageInternal")); + private final Logger logger = LoggerFactory.getLogger(MessageController.class); + private final MetricRegistry metricRegistry = SharedMetricRegistries.getOrCreate(Constants.METRICS_NAME); + private final Meter unidentifiedMeter = metricRegistry.meter(name(getClass(), "delivery", "unidentified")); + private final Meter identifiedMeter = metricRegistry.meter(name(getClass(), "delivery", "identified" )); + private final Timer sendMessageInternalTimer = metricRegistry.timer(name(getClass(), "sendMessageInternal")); + private final Histogram outgoingMessageListSizeHistogram = metricRegistry.histogram(name(getClass(), "outgoingMessageListSize")); private final RateLimiters rateLimiters; private final PushSender pushSender; @@ -188,10 +190,14 @@ public class MessageController { RedisOperation.unchecked(() -> apnFallbackManager.cancel(account, account.getAuthenticatedDevice().get())); } - return messagesManager.getMessagesForDevice(account.getNumber(), - account.getUuid(), - account.getAuthenticatedDevice().get().getId(), - userAgent); + final OutgoingMessageEntityList outgoingMessages = messagesManager.getMessagesForDevice(account.getNumber(), + account.getUuid(), + account.getAuthenticatedDevice().get().getId(), + userAgent); + + outgoingMessageListSizeHistogram.update(outgoingMessages.getMessages().size()); + + return outgoingMessages; } @Timed