diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index bfffde2d5..d47ab4731 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -622,7 +622,7 @@ public class WhisperServerService extends Application 0) { - Metrics.counter(UNSEALED_SENDER_WITHOUT_PUSH_TOKEN_COUNTER_NAME, SENDER_COUNTRY_TAG_NAME, senderCountryCode) - .increment(); - } - } - final String senderType; if (source.isPresent() && !source.get().getAccount().getUuid().equals(destinationUuid)) { @@ -283,8 +254,6 @@ public class MessageController { final Device masterDevice = source.get().getAccount().getMasterDevice().get(); if (!senderCountryCode.equals(destinationCountryCode)) { - recordInternationalUnsealedSenderMetrics(forwardedFor, senderCountryCode, destination.get().getNumber()); - if (StringUtils.isAllBlank(masterDevice.getApnId(), masterDevice.getVoipApnId(), masterDevice.getGcmId()) || masterDevice.getUninstalledFeedbackTimestamp() > 0) { if (dynamicConfigurationManager.getConfiguration().getMessageRateConfiguration().getRateLimitedCountryCodes().contains(senderCountryCode)) { @@ -706,28 +675,4 @@ public class MessageController { return Optional.empty(); } } - - @VisibleForTesting - void recordInternationalUnsealedSenderMetrics(final String forwardedFor, final String senderCountryCode, final String destinationNumber) { - ForwardedIpUtil.getMostRecentProxy(forwardedFor).ifPresent(senderIp -> { - final String destinationSetKey = getDestinationSetKey(senderIp); - final String messageCountKey = getMessageCountKey(senderIp); - - recordInternationalUnsealedSenderMetricsScript.execute( - List.of(destinationSetKey, messageCountKey), - List.of(destinationNumber)); - }); - - Metrics.counter(INTERNATIONAL_UNSEALED_SENDER_COUNTER_NAME, SENDER_COUNTRY_TAG_NAME, senderCountryCode).increment(); - } - - @VisibleForTesting - static String getDestinationSetKey(final String senderIp) { - return "international_unsealed_sender_destinations::{" + senderIp + "}"; - } - - @VisibleForTesting - static String getMessageCountKey(final String senderIp) { - return "international_unsealed_sender_message_count::{" + senderIp + "}"; - } } diff --git a/service/src/main/resources/lua/record_international_unsealed_sender_metrics.lua b/service/src/main/resources/lua/record_international_unsealed_sender_metrics.lua deleted file mode 100644 index d29ade8ac..000000000 --- a/service/src/main/resources/lua/record_international_unsealed_sender_metrics.lua +++ /dev/null @@ -1,19 +0,0 @@ -local destinationSetKey = KEYS[1] -local messageCountKey = KEYS[2] - -local destination = ARGV[1] - -redis.call("PFADD", destinationSetKey, destination) -local distinctDestinationCount = redis.call("PFCOUNT", destinationSetKey) - -if redis.call("TTL", destinationSetKey) < 0 then - redis.call("EXPIRE", destinationSetKey, 86400) -end - -local messageCount = redis.call("INCR", messageCountKey) - -if messageCount == 1 then - redis.call("EXPIRE", messageCountKey, 86400) -end - -return { distinctDestinationCount, messageCount } diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/controllers/MessageControllerMetricsTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/controllers/MessageControllerMetricsTest.java deleted file mode 100644 index 1122339d9..000000000 --- a/service/src/test/java/org/whispersystems/textsecuregcm/controllers/MessageControllerMetricsTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2021 Signal Messenger, LLC - * SPDX-License-Identifier: AGPL-3.0-only - */ - -package org.whispersystems.textsecuregcm.controllers; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.mock; - -import java.util.concurrent.ExecutorService; -import org.junit.Before; -import org.junit.Test; -import org.whispersystems.textsecuregcm.limits.RateLimitChallengeManager; -import org.whispersystems.textsecuregcm.limits.RateLimiters; -import org.whispersystems.textsecuregcm.limits.UnsealedSenderRateLimiter; -import org.whispersystems.textsecuregcm.push.ApnFallbackManager; -import org.whispersystems.textsecuregcm.push.MessageSender; -import org.whispersystems.textsecuregcm.push.ReceiptSender; -import org.whispersystems.textsecuregcm.redis.AbstractRedisClusterTest; -import org.whispersystems.textsecuregcm.storage.AccountsManager; -import org.whispersystems.textsecuregcm.storage.DynamicConfigurationManager; -import org.whispersystems.textsecuregcm.storage.MessagesManager; -import org.whispersystems.textsecuregcm.storage.ReportMessageManager; - -public class MessageControllerMetricsTest extends AbstractRedisClusterTest { - - private MessageController messageController; - - @Before - public void setUp() throws Exception { - super.setUp(); - - messageController = new MessageController( - mock(RateLimiters.class), - mock(MessageSender.class), - mock(ReceiptSender.class), - mock(AccountsManager.class), - mock(MessagesManager.class), - mock(UnsealedSenderRateLimiter.class), - mock(ApnFallbackManager.class), - mock(DynamicConfigurationManager.class), - mock(RateLimitChallengeManager.class), - mock(ReportMessageManager.class), - getRedisCluster(), - mock(ExecutorService.class)); - } - - @Test - public void testRecordInternationalUnsealedSenderMetrics() { - final String senderIp = "127.0.0.1"; - - messageController.recordInternationalUnsealedSenderMetrics(senderIp, "84", "+18005551234"); - messageController.recordInternationalUnsealedSenderMetrics(senderIp, "84", "+18005551234"); - - getRedisCluster().useCluster(connection -> { - assertEquals(1, (long)connection.sync().pfcount(MessageController.getDestinationSetKey(senderIp))); - assertEquals(2, Long.parseLong(connection.sync().get(MessageController.getMessageCountKey(senderIp)), 10)); - - assertTrue(connection.sync().ttl(MessageController.getDestinationSetKey(senderIp)) >= 0); - assertTrue(connection.sync().ttl(MessageController.getMessageCountKey(senderIp)) >= 0); - }); - } -} diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java index 76af17fea..ce403cf87 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java @@ -130,7 +130,6 @@ class MessageControllerTest { private static final DynamicConfigurationManager dynamicConfigurationManager = mock(DynamicConfigurationManager.class); private static final RateLimitChallengeManager rateLimitChallengeManager = mock(RateLimitChallengeManager.class); private static final ReportMessageManager reportMessageManager = mock(ReportMessageManager.class); - private static final FaultTolerantRedisCluster metricsCluster = RedisClusterHelper.buildMockRedisCluster(redisCommands); private static final ExecutorService multiRecipientMessageExecutor = mock(ExecutorService.class); private final ObjectMapper mapper = new ObjectMapper(); @@ -144,7 +143,7 @@ class MessageControllerTest { .setTestContainerFactory(new GrizzlyWebTestContainerFactory()) .addResource(new MessageController(rateLimiters, messageSender, receiptSender, accountsManager, messagesManager, unsealedSenderRateLimiter, apnFallbackManager, dynamicConfigurationManager, - rateLimitChallengeManager, reportMessageManager, metricsCluster, multiRecipientMessageExecutor)) + rateLimitChallengeManager, reportMessageManager, multiRecipientMessageExecutor)) .build(); @BeforeEach @@ -198,8 +197,7 @@ class MessageControllerTest { apnFallbackManager, dynamicConfigurationManager, rateLimitChallengeManager, - reportMessageManager, - metricsCluster + reportMessageManager ); }