Don’t throw exceptions from ReportMessageManager#store()

This commit is contained in:
Chris Eager 2021-05-13 18:20:54 -05:00 committed by Chris Eager
parent 10c6f885fd
commit df01be2dca
2 changed files with 21 additions and 4 deletions

View File

@ -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) {

View File

@ -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