Сегодня столкнулся с несколькими интересными задачами и инцидентами в процессе работы над отчетами.

Выяснилось, что отчеты в письмах могут приходить не только в формате Excel, но и в заархивированном виде. Я доработал метод загрузки файлов, чтобы при получении архива он извлекал файл и возвращал путь к нему.

Однако произошел инцидент: некоторые отчеты были отправлены клиентам дважды. Расследование показало следующее:

Один из клиентов получил 4 отчета вместо 2.     В системе поступило два массива с задачами, которые были одинаковыми, но с разным порядком.     В базе данных корректно созданы две задачи с одинаковым идентификатором.

Причина проблемы:

При создании задач процесс запускался дважды:         Один раз с ежедневной нагрузкой.         Второй раз с ежемесячной нагрузкой.     После завершения работы процесс запускал функцию, которая группировала невыполненные задачи и отправляла их в очередь.     Так как время между запусками было небольшим, некоторые задачи дублировались.

Решение:

В процессе создания задач при вызове функции:         Добавил параметр для указания периодичности, чтобы триггер запускал процесс корректно.         Реализовал выброс ошибки, если повторные запросы не увенчались успехом.     В функции, отвечающей за группировку задач:         Добавил обработку параметров запроса.         Реализовал выброс ошибки, если отсутствует параметр периодичности.         Доработал запрос к базе, чтобы он возвращал задачи, сгруппированные по одинаковым параметрам, только для тех задач, где периодичность совпадает с пришедшей при запуске.         Использовал параметризованный запрос к базе.

Также вечером вручную запускал рассылку отчетов, так как заказчик некорректно заполнил данные в таблице задач.

Ещё всплыла ошибка дублирования писем в базе, так как на парсинг писем были установлены ежедневный и ежемесячный триггеры, и возникала ситуация, когда письма не прочитаны и попадали в оба экземпляра процесса.

#work
repost

62

input message

напишите коммент

еще контент автора

еще контент автора

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь