From 162b27323e234d95ca13a796c448656f1d3b9ef2 Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Tue, 17 Oct 2023 11:43:11 -0400 Subject: [PATCH] Fix instrumentation for re-registration of recently-deleted accounts --- .../textsecuregcm/storage/AccountsManager.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountsManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountsManager.java index e922cc982..c885fc2b3 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountsManager.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountsManager.java @@ -196,9 +196,12 @@ public class AccountsManager { account.setNumber(number, phoneNumberIdentifiers.getPhoneNumberIdentifier(number)); + final Optional maybeRecentlyDeletedAccountIdentifier = + accounts.findRecentlyDeletedAccountIdentifier(number); + // Reuse the ACI from any recently-deleted account with this number to cover cases where somebody is // re-registering. - account.setUuid(accounts.findRecentlyDeletedAccountIdentifier(number).orElseGet(UUID::randomUUID)); + account.setUuid(maybeRecentlyDeletedAccountIdentifier.orElseGet(UUID::randomUUID)); account.addDevice(device); account.setRegistrationLockFromAttributes(accountAttributes); account.setUnidentifiedAccessKey(accountAttributes.getUnidentifiedAccessKey()); @@ -245,10 +248,10 @@ public class AccountsManager { if (freshUser) { tags = Tags.of("type", "new"); - } else if (!originalUuid.equals(actualUuid)) { - tags = Tags.of("type", "re-registration"); - } else { + } else if (maybeRecentlyDeletedAccountIdentifier.isPresent()) { tags = Tags.of("type", "recently-deleted"); + } else { + tags = Tags.of("type", "re-registration"); } Metrics.counter(CREATE_COUNTER_NAME, tags).increment();