From 0cb6f662c6a97fcfabb59aba58b6aef0f953e57e Mon Sep 17 00:00:00 2001 From: Jonathan Klabunde Tomer <125505367+jkt-signal@users.noreply.github.com> Date: Fri, 22 Nov 2024 15:11:27 -0800 Subject: [PATCH] Handle multiple values with same ACI in deleted-accounts table Co-authored-by: Chris Eager <79161849+eager-signal@users.noreply.github.com> --- .../whispersystems/textsecuregcm/storage/Accounts.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/Accounts.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/Accounts.java index 66b7e6761..00f49bf23 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/Accounts.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/Accounts.java @@ -1217,11 +1217,10 @@ public class Accounts extends AbstractDynamoDbStore { return Optional.empty(); } - if (response.count() > 1) { - throw new RuntimeException("Impossible result: more than one phone number returned for UUID: " + uuid); - } - - return Optional.ofNullable(response.items().get(0).get(DELETED_ACCOUNTS_KEY_ACCOUNT_E164).s()); + return response.items().stream() + .map(item -> item.get(DELETED_ACCOUNTS_KEY_ACCOUNT_E164).s()) + .filter(e164OrPni -> e164OrPni.startsWith("+")) + .findFirst(); } public CompletableFuture delete(final UUID uuid, final List additionalWriteItems) {