From 03dac2bf7e8ace3b38048b4c780ea02a56fc8639 Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Thu, 13 May 2021 16:20:40 -0400 Subject: [PATCH] Break down rate limit overruns by country. --- .../limits/RateLimitChallengeManager.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/limits/RateLimitChallengeManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/limits/RateLimitChallengeManager.java index a0e5813b0..fbe6f555b 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/limits/RateLimitChallengeManager.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/limits/RateLimitChallengeManager.java @@ -32,6 +32,7 @@ public class RateLimitChallengeManager { public static final String OPTION_PUSH_CHALLENGE = "pushChallenge"; private static final String RECAPTCHA_ATTEMPT_COUNTER_NAME = name(RateLimitChallengeManager.class, "recaptcha", "attempt"); + private static final String RESET_RATE_LIMIT_EXCEEDED_COUNTER_NAME = name(RateLimitChallengeManager.class, "resetRateLimitExceeded"); private static final String SOURCE_COUNTRY_TAG_NAME = "sourceCountry"; private static final String SUCCESS_TAG_NAME = "success"; @@ -81,7 +82,14 @@ public class RateLimitChallengeManager { } private void resetRateLimits(final Account account) throws RateLimitExceededException { - rateLimiters.getRateLimitResetLimiter().validate(account.getNumber()); + try { + rateLimiters.getRateLimitResetLimiter().validate(account.getNumber()); + } catch (final RateLimitExceededException e) { + Metrics.counter(RESET_RATE_LIMIT_EXCEEDED_COUNTER_NAME, + SOURCE_COUNTRY_TAG_NAME, Util.getCountryCode(account.getNumber())).increment(); + + throw e; + } preKeyRateLimiter.handleRateLimitReset(account); unsealedSenderRateLimiter.handleRateLimitReset(account);