mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-20 23:18:09 +01:00
Allow for more TransactWriteItems when inspecting TransactionCanceledException
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user