Allow for more TransactWriteItems when inspecting TransactionCanceledException

This commit is contained in:
Chris Eager 2024-01-31 17:31:23 -06:00 committed by Chris Eager
parent 2d4d37f96a
commit fb39af67e5
1 changed files with 3 additions and 1 deletions

View File

@ -430,7 +430,7 @@ public class Accounts extends AbstractDynamoDbStore {
} catch (final JsonProcessingException e) {
throw new IllegalArgumentException(e);
} catch (final TransactionCanceledException e) {
if (e.hasCancellationReasons() && e.cancellationReasons().size() == 6) {
if (e.hasCancellationReasons() && e.cancellationReasons().size() == 6 + additionalWriteItems.size()) {
// the cancellation reasons map to the write items:
// 0. phone number constraint delete - no conditions
// 1. phone number constraint put - conditional on the key not existing (it is deleted by 0)
@ -438,6 +438,8 @@ public class Accounts extends AbstractDynamoDbStore {
// 3. pni constraint put - conditional on the key not existing (it is deleted by 2)
// 4. deleted accounts delete - no conditions
// 5. account update - conditional on #version = :version
// 6. additional write items
// 7. additional write items
if (CONDITIONAL_CHECK_FAILED.equals(e.cancellationReasons().get(5).code())) {
// the #version = :version condition failed, which indicates a concurrent update
throw new ContestedOptimisticLockException();