diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/push/GCMSender.java b/service/src/main/java/org/whispersystems/textsecuregcm/push/GCMSender.java index 6757d6a50..a75ffb118 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/push/GCMSender.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/push/GCMSender.java @@ -17,6 +17,7 @@ import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; +import io.micrometer.core.instrument.Metrics; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.whispersystems.gcm.server.Message; @@ -40,6 +41,8 @@ public class GCMSender { private final Meter unregistered = metricRegistry.meter(name(getClass(), "sent", "unregistered")); private final Meter canonical = metricRegistry.meter(name(getClass(), "sent", "canonical")); + private final String DOWNSTREAM_ERROR_COUNTER_NAME = name(GCMSender.class, "downstreamError"); + private final Map outboundMeters = new HashMap<>() {{ put("receipt", metricRegistry.meter(name(getClass(), "outbound", "receipt"))); put("notification", metricRegistry.meter(name(getClass(), "outbound", "notification"))); @@ -135,6 +138,7 @@ public class GCMSender { logger.warn("Unrecoverable Error ::: (error={}}), (gcm_id={}}), (destination={}}), (device_id={}})", result.getError(), message.getGcmId(), message.getUuid(), message.getDeviceId()); + Metrics.counter(DOWNSTREAM_ERROR_COUNTER_NAME, "code", result.getError()).increment(); failure.mark(); }