Когда программа ведёт себя неожиданно, хочется сразу переписать большой фрагмент. Полезнее сначала собрать воспроизводимый пример и проверить предположения.
Разбираемся в теме
Ошибка может возникать на границе входных данных, в состоянии программы, в порядке операций или в неверном ожидании результата. Логи и маленькие проверки помогают сузить место поиска.
Практический шаг
Запишите минимальный пример, фактический результат и ожидаемый результат. Меняйте по одному условию и проверяйте документацию используемой технологии.
Продолжим обсуждение
Как разбирать ошибку в программе по наблюдаемому поведению?