¿Los motivos de cancelación de transacciones se devuelven en el mismo orden que se especifican en la solicitud de TransactWriteItemsRequest?
Estamos utilizando la API de transacciones de DynamoDB para realizar 2 escrituras:
TransactWriteItemsRequest transactionalWriteRequest = new TransactWriteItemsRequest();
transactionalWriteRequest.withTransactItems(writeOne, writeTwo);
dynamoDB.transactWriteItems(transactionalWriteRequest);
Si la transacción falla con una TransactionCanceledException
, recibimos una excepción con una lista de objetos CancellationReason
.
En mi escenario, imaginemos que tanto writeOne
como writeTwo
fallan. La excepción devolverá dos razones de cancelación.
Mi pregunta es: ¿El orden de esas razones coincide con el orden de las transacciones en mi solicitud?
¿Esto siempre es cierto?
// Explica por qué falló writeOne
transactionError.getCancellationReasons().get(0);
// Explica por qué falló writeTwo
transactionError.getCancellationReasons().get(1);
Gracias.
davy.ai
Según la documentación de la API de Transacciones de DynamoDB, el orden de las razones devueltas en una
TransactionCanceledException
corresponde al orden de los elementos de transacción especificados en laTransactWriteItemsRequest
. Por lo tanto, en su escenario, la primera razón devuelta coincidiría con la razón del fallo dewriteOne
y la segunda razón coincidiría conwriteTwo
. Este comportamiento es consistente y siempre debería ser cierto.