Record table performance metrics around reported messages

This commit is contained in:
Jon Chambers 2022-08-16 11:26:42 -04:00 committed by Chris Eager
parent 07cb3ab576
commit 7292a88ea3
1 changed files with 24 additions and 1 deletions

View File

@ -1,5 +1,7 @@
package org.whispersystems.textsecuregcm.storage;
import io.micrometer.core.instrument.Metrics;
import io.micrometer.core.instrument.Timer;
import org.whispersystems.textsecuregcm.util.AttributeValues;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest;
@ -10,6 +12,8 @@ import java.time.Duration;
import java.time.Instant;
import java.util.Map;
import static org.whispersystems.textsecuregcm.metrics.MetricsUtil.name;
public class ReportMessageDynamoDb {
static final String KEY_HASH = "H";
@ -19,6 +23,9 @@ public class ReportMessageDynamoDb {
private final String tableName;
private final Duration ttl;
private static final String REMOVED_MESSAGE_COUNTER_NAME = name(ReportMessageDynamoDb.class, "removed");
private static final Timer REMOVED_MESSAGE_AGE_TIMER = Metrics.timer(name(ReportMessageDynamoDb.class, "removedMessageAge"));
public ReportMessageDynamoDb(final DynamoDbClient dynamoDB, final String tableName, final Duration ttl) {
this.db = dynamoDB;
this.tableName = tableName;
@ -41,6 +48,22 @@ public class ReportMessageDynamoDb {
.key(Map.of(KEY_HASH, AttributeValues.fromByteArray(hash)))
.returnValues(ReturnValue.ALL_OLD)
.build());
return !deleteItemResponse.attributes().isEmpty();
final boolean found = !deleteItemResponse.attributes().isEmpty();
if (found) {
if (deleteItemResponse.attributes().containsKey(ATTR_TTL)) {
final Instant expiration =
Instant.ofEpochSecond(Long.parseLong(deleteItemResponse.attributes().get(ATTR_TTL).n()));
final Duration approximateAge = ttl.minus(Duration.between(Instant.now(), expiration));
REMOVED_MESSAGE_AGE_TIMER.record(approximateAge);
}
}
Metrics.counter(REMOVED_MESSAGE_COUNTER_NAME, "found", String.valueOf(found)).increment();
return found;
}
}