From df01be2dcae61a3ce802f1e9139e3c6587b974d1 Mon Sep 17 00:00:00 2001 From: Chris Eager Date: Thu, 13 May 2021 18:20:54 -0500 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20throw=20exceptions=20from=20Rep?= =?UTF-8?q?ortMessageManager#store()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../textsecuregcm/storage/ReportMessageManager.java | 12 ++++++++++-- .../storage/ReportMessageManagerTest.java | 13 +++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/ReportMessageManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/ReportMessageManager.java index 2c928b393..c106bfd90 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/ReportMessageManager.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/ReportMessageManager.java @@ -8,6 +8,8 @@ import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Objects; import java.util.UUID; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.whispersystems.textsecuregcm.util.UUIDUtil; import org.whispersystems.textsecuregcm.util.Util; @@ -19,6 +21,8 @@ public class ReportMessageManager { private final ReportMessageDynamoDb reportMessageDynamoDb; private final MeterRegistry meterRegistry; + private static final Logger logger = LoggerFactory.getLogger(ReportMessageManager.class); + public ReportMessageManager(ReportMessageDynamoDb reportMessageDynamoDb, final MeterRegistry meterRegistry) { this.reportMessageDynamoDb = reportMessageDynamoDb; @@ -27,9 +31,13 @@ public class ReportMessageManager { public void store(String sourceNumber, UUID messageGuid) { - Objects.requireNonNull(sourceNumber); + try { + Objects.requireNonNull(sourceNumber); - reportMessageDynamoDb.store(hash(messageGuid, sourceNumber)); + reportMessageDynamoDb.store(hash(messageGuid, sourceNumber)); + } catch (final Exception e) { + logger.warn("Failed to store hash", e); + } } public void report(String sourceNumber, UUID messageGuid) { diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/storage/ReportMessageManagerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/storage/ReportMessageManagerTest.java index a4863abb3..727ded4cb 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/storage/ReportMessageManagerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/storage/ReportMessageManagerTest.java @@ -1,10 +1,12 @@ package org.whispersystems.textsecuregcm.storage; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import io.micrometer.core.instrument.Counter; @@ -26,11 +28,18 @@ class ReportMessageManagerTest { final UUID messageGuid = UUID.randomUUID(); final String number = "+15105551111"; - assertThrows(NullPointerException.class, () -> reportMessageManager.store(null, messageGuid)); + assertDoesNotThrow(() -> reportMessageManager.store(null, messageGuid)); + + verifyZeroInteractions(reportMessageDynamoDb); reportMessageManager.store(number, messageGuid); verify(reportMessageDynamoDb).store(any()); + + doThrow(RuntimeException.class) + .when(reportMessageDynamoDb).store(any()); + + assertDoesNotThrow(() -> reportMessageManager.store(number, messageGuid)); } @Test