У меня есть API с транзакцией, которая использует DynamoDB в качестве базы данных. Я получу два вида исключений. Одна из них связана с исключением ConditionalCheckFailed , когда условие не выполняется. Объект ошибки выглядит следующим образом:
{
"message": "Transaction cancelled, please refer cancellation reasons for specific reasons [None, ConditionalCheckFailed]",
"code": "TransactionCanceledException",
"time": "2020-01-22T05:46:32.756Z",
"requestId": "UG14A08TDB6Q5CADF0NH9JQAB3VV4KQNSO5AEMVJF66Q9ASUAAJG",
"statusCode": 400,
"retryable": false,
"retryDelay": 32.837614849025734
}
В другом сценарии, когда я выполняю нагрузочное тестирование на одном и том же API, я получу TransactionConflict исключение.
{
"message": "Transaction cancelled, please refer cancellation reasons for specific reasons [None, TransactionConflict]",
"code": "TransactionCanceledException",
"time": "2020-01-22T05:54:40.940Z",
"requestId": "87MHRV37F3G3EUUF629AKICARBVV4KQNSO5AEMVJF66Q9ASUAAJG",
"statusCode": 400,
"retryable": false,
"retryDelay": 31.786748424710908
}
Я хочу повторить транзакцию при ошибке из-за TransactionConflict исключение. Но я не уверен, как условно повторить транзакцию с этой информацией об ошибке. Поскольку часть сообщения является единственным ключом, который сообщает мне точную причину ошибки, а не сам код ошибки.
Я не думаю, что сравнение сообщения - это хороший способ условно обработать ошибку.