mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-20 08:08:02 +01:00
Don't count backup metrics on TTL refresh
This commit is contained in:
committed by
ravi-signal
parent
8f65486fab
commit
31ebe9071a
@@ -254,8 +254,7 @@ public class BackupsDb {
|
||||
.updateItemBuilder()
|
||||
.returnValues(ReturnValue.ALL_OLD)
|
||||
.build())
|
||||
.thenAccept(updateItemResponse ->
|
||||
updateMetricsAfterRefresh(backupUser, today, updateItemResponse.attributes()));
|
||||
.thenRun(Util.NOOP);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -274,10 +273,10 @@ public class BackupsDb {
|
||||
.returnValues(ReturnValue.ALL_OLD)
|
||||
.build())
|
||||
.thenAccept(updateItemResponse ->
|
||||
updateMetricsAfterRefresh(backupUser, today, updateItemResponse.attributes()));
|
||||
updateMetricsAfterUpload(backupUser, today, updateItemResponse.attributes()));
|
||||
}
|
||||
|
||||
private void updateMetricsAfterRefresh(final AuthenticatedBackupUser backupUser, final Instant today, final Map<String, AttributeValue> item) {
|
||||
private void updateMetricsAfterUpload(final AuthenticatedBackupUser backupUser, final Instant today, final Map<String, AttributeValue> item) {
|
||||
final Instant previousRefreshTime = Instant.ofEpochSecond(
|
||||
AttributeValues.getLong(item, ATTR_LAST_REFRESH, 0L));
|
||||
// Only publish a metric update once per day
|
||||
|
||||
@@ -5,24 +5,23 @@
|
||||
|
||||
package org.whispersystems.textsecuregcm.workers;
|
||||
|
||||
import static org.whispersystems.textsecuregcm.metrics.MetricsUtil.name;
|
||||
|
||||
import io.dropwizard.core.Application;
|
||||
import io.dropwizard.core.setup.Environment;
|
||||
import io.micrometer.core.instrument.Counter;
|
||||
import io.micrometer.core.instrument.DistributionSummary;
|
||||
import io.micrometer.core.instrument.Metrics;
|
||||
import java.time.Clock;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.util.Objects;
|
||||
import net.sourceforge.argparse4j.inf.Namespace;
|
||||
import net.sourceforge.argparse4j.inf.Subparser;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.whispersystems.textsecuregcm.WhisperServerConfiguration;
|
||||
import org.whispersystems.textsecuregcm.backup.BackupManager;
|
||||
import reactor.core.scheduler.Schedulers;
|
||||
|
||||
import java.time.Clock;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.util.Objects;
|
||||
|
||||
import static org.whispersystems.textsecuregcm.metrics.MetricsUtil.name;
|
||||
|
||||
public class BackupMetricsCommand extends AbstractCommandWithDependencies {
|
||||
|
||||
@@ -67,17 +66,33 @@ public class BackupMetricsCommand extends AbstractCommandWithDependencies {
|
||||
"timeSinceLastRefresh"));
|
||||
final DistributionSummary timeSinceLastMediaRefresh = Metrics.summary(name(getClass(),
|
||||
"timeSinceLastMediaRefresh"));
|
||||
final DistributionSummary numMediaObjects = Metrics.summary(name(getClass(),
|
||||
"numObjects"));
|
||||
final DistributionSummary mediaBytesUsed = Metrics.summary(name(getClass(),
|
||||
"bytesUsed"));
|
||||
final Counter backups = Metrics.counter(name(getClass(), "backups"));
|
||||
|
||||
|
||||
final BackupManager backupManager = commandDependencies.backupManager();
|
||||
final Long backupsExpired = backupManager
|
||||
final Long backupsCrawled = backupManager
|
||||
.listBackupAttributes(segments)
|
||||
.doOnNext(backupMetadata -> {
|
||||
timeSinceLastRefresh.record(timeSince(backupMetadata.lastRefresh()).getSeconds());
|
||||
timeSinceLastMediaRefresh.record(timeSince(backupMetadata.lastMediaRefresh()).getSeconds());
|
||||
backups.increment();
|
||||
|
||||
final boolean hasMediaTier = Duration
|
||||
.between(backupMetadata.lastMediaRefresh(), backupMetadata.lastRefresh())
|
||||
.abs()
|
||||
.compareTo(Duration.ofDays(1)) < 1;
|
||||
if (hasMediaTier) {
|
||||
numMediaObjects.record(backupMetadata.numObjects());
|
||||
mediaBytesUsed.record(backupMetadata.bytesUsed());
|
||||
}
|
||||
})
|
||||
.count()
|
||||
.block();
|
||||
logger.info("Crawled {} backups", backupsExpired);
|
||||
logger.info("Crawled {} backups", backupsCrawled);
|
||||
}
|
||||
|
||||
private Duration timeSince(Instant t) {
|
||||
|
||||
Reference in New Issue
Block a user