Стратегии для работы с ConditionalCheckFailedException - PullRequest
0 голосов
/ 15 апреля 2019

Часть кода, которую я унаследовал, запускается в функции AWS Lambda для обновления таблицы DynamoDB и в процессе получения тонны ConditionalCheckFailedExceptions. Код делает то, что у него есть список записей для обновления, и он обновляет таблицу DynamoDB одну за другой, и как только он получает исключение ConditionalCheckFailedExe, он собирает эту запись в списке. После того, как он сделал один проход по всему списку, он просматривает список, в котором произошел сбой, и перечитывает новое состояние всех этих записей и снова обновляет таблицу DynamoDB. Есть 10 одновременных клонов AWS Lambda, которые делают то же самое. Это в конечном итоге приводит к повторным попыткам и тайм-ауту Lambdas. Я думаю, что вместо того, чтобы собирать записи, которые потерпели неудачу из-за ConditionalCheckFailedException в пакете, и возвращаться для повторной обработки пакета, я должен просто изменить код, чтобы повторить запись, как только возникнет ConditionalCheckFailedException. Я думаю по правильному пути? Другой вариант - собрать ошибочные записи в пакете, но применить экспоненциальный откат и джиттер, чтобы несколько прогонов одной и той же лямбды не пытались обновить одни и те же записи одновременно. Дополнительный вопрос, который у меня возник, заключался в том, как реализовать исключение ConditionalCheckFailedException в операциях BatchWrite, поскольку BatchWrite будет более эффективным для записи большого объема данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...