diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index 9d65b2735..62d3025ae 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -197,6 +197,7 @@ import org.whispersystems.textsecuregcm.storage.RemoteConfigs; import org.whispersystems.textsecuregcm.storage.RemoteConfigsManager; import org.whispersystems.textsecuregcm.storage.ReportMessageDynamoDb; import org.whispersystems.textsecuregcm.storage.ReportMessageManager; +import org.whispersystems.textsecuregcm.metrics.ReportedMessageMetricsListener; import org.whispersystems.textsecuregcm.storage.ReservedUsernames; import org.whispersystems.textsecuregcm.storage.StoredVerificationCodeManager; import org.whispersystems.textsecuregcm.storage.SubscriptionManager; @@ -445,7 +446,7 @@ public class WhisperServerService extends Application reportedMessageListeners = new ArrayList<>(); + private static final Logger logger = LoggerFactory.getLogger(ReportMessageManager.class); public ReportMessageManager(final ReportMessageDynamoDb reportMessageDynamoDb, final FaultTolerantRedisCluster rateLimitCluster, - final MeterRegistry meterRegistry, final Duration counterTtl) { this.reportMessageDynamoDb = reportMessageDynamoDb; this.rateLimitCluster = rateLimitCluster; - this.meterRegistry = meterRegistry; this.counterTtl = counterTtl; } + public void addListener(final ReportedMessageListener listener) { + this.reportedMessageListeners.add(listener); + } + public void store(String sourceNumber, UUID messageGuid) { try { @@ -66,10 +62,13 @@ public class ReportMessageManager { connection.sync().expire(reportedSenderKey, counterTtl.toSeconds()); }); - Counter.builder(REPORT_COUNTER_NAME) - .tag("countryCode", Util.getCountryCode(sourceNumber)) - .register(meterRegistry) - .increment(); + reportedMessageListeners.forEach(listener -> { + try { + listener.handleMessageReported(sourceNumber, messageGuid, reporterUuid); + } catch (final Exception e) { + logger.error("Failed to notify listener of reported message", e); + } + }); } } diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/ReportedMessageListener.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/ReportedMessageListener.java new file mode 100644 index 000000000..1dc3eee02 --- /dev/null +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/ReportedMessageListener.java @@ -0,0 +1,13 @@ +/* + * Copyright 2013-2022 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.whispersystems.textsecuregcm.storage; + +import java.util.UUID; + +public interface ReportedMessageListener { + + void handleMessageReported(String sourceNumber, UUID messageGuid, UUID reporterUuid); +} diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/workers/AssignUsernameCommand.java b/service/src/main/java/org/whispersystems/textsecuregcm/workers/AssignUsernameCommand.java index c06f34fee..d1d2524ba 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/workers/AssignUsernameCommand.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/workers/AssignUsernameCommand.java @@ -16,7 +16,6 @@ import io.dropwizard.Application; import io.dropwizard.cli.EnvironmentCommand; import io.dropwizard.setup.Environment; import io.lettuce.core.resource.ClientResources; -import io.micrometer.core.instrument.Metrics; import java.time.Clock; import java.util.UUID; import java.util.concurrent.ExecutorService; @@ -180,7 +179,7 @@ public class AssignUsernameCommand extends EnvironmentCommand