diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountsDynamoDb.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountsDynamoDb.java index 1465aa7cb..653d6cbea 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountsDynamoDb.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/AccountsDynamoDb.java @@ -124,7 +124,7 @@ public class AccountsDynamoDb extends AbstractDynamoDbStore implements AccountSt } // this shouldn’t happen - throw new RuntimeException("could not create account"); + throw new RuntimeException("could not create account: " + extractCancellationReasonCodes(e)); } } catch (JsonProcessingException e) { throw new IllegalArgumentException(e); @@ -319,7 +319,9 @@ public class AccountsDynamoDb extends AbstractDynamoDbStore implements AccountSt @Override public void onError(Exception exception) { if (exception instanceof TransactionCanceledException) { - // account is already migrated + // account is likely already migrated + logger.warn("Error migrating account: {}", + extractCancellationReasonCodes((TransactionCanceledException) exception)); resultFuture.complete(false); } else { try { @@ -344,6 +346,12 @@ public class AccountsDynamoDb extends AbstractDynamoDbStore implements AccountSt } } + private static String extractCancellationReasonCodes(final TransactionCanceledException exception) { + return exception.getCancellationReasons().stream() + .map(CancellationReason::getCode) + .collect(Collectors.joining(", ")); + } + @VisibleForTesting static Account fromItem(Item item) { try {