From 8e1975efe403810ede29a2485ed64bf547501037 Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Tue, 6 Oct 2020 16:38:36 -0400 Subject: [PATCH] Record the number of deletable accounts per crawled chunk. --- .../textsecuregcm/storage/AccountCleaner.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountCleaner.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountCleaner.java index 0f2f1a12a..61ef14f0c 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountCleaner.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountCleaner.java @@ -16,6 +16,7 @@ */ package org.whispersystems.textsecuregcm.storage; +import com.codahale.metrics.Histogram; import com.codahale.metrics.Meter; import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.SharedMetricRegistries; @@ -32,8 +33,9 @@ import static com.codahale.metrics.MetricRegistry.name; public class AccountCleaner extends AccountDatabaseCrawlerListener { - private static final MetricRegistry metricRegistry = SharedMetricRegistries.getOrCreate(Constants.METRICS_NAME); - private static final Meter expiredAccountsMeter = metricRegistry.meter(name(AccountCleaner.class, "expiredAccounts")); + private static final MetricRegistry metricRegistry = SharedMetricRegistries.getOrCreate(Constants.METRICS_NAME); + private static final Meter expiredAccountsMeter = metricRegistry.meter(name(AccountCleaner.class, "expiredAccounts")); + private static final Histogram deletableAccountHistogram = metricRegistry.histogram(name(AccountCleaner.class, "deletableAccountsPerChunk")); @VisibleForTesting public static final int MAX_ACCOUNT_UPDATES_PER_CHUNK = 40; @@ -54,8 +56,14 @@ public class AccountCleaner extends AccountDatabaseCrawlerListener { @Override protected void onCrawlChunk(Optional fromUuid, List chunkAccounts) { - int accountUpdateCount = 0; + int accountUpdateCount = 0; + int deletableAccountCount = 0; + for (Account account : chunkAccounts) { + if (isExpired(account)) { + deletableAccountCount++; + } + if (needsExplicitRemoval(account)) { expiredAccountsMeter.mark(); @@ -65,6 +73,8 @@ public class AccountCleaner extends AccountDatabaseCrawlerListener { } } } + + deletableAccountHistogram.update(deletableAccountCount); } private boolean needsExplicitRemoval(Account account) {