Bug theory - Initialization flow bug
С простыми багами вроде покончено. Перейдем к более сложным.Initialization flow bug
Симптомы:Отдельние модули работоспособны, но при интеграции система не стартует. В простейшем случае баг легко воспроизводится и локализуется, но у этого бага может быть осложненние в виде многопоточности. В этом случае с воспроизведением бага могут быть проблемы.
Критические места:Инициализация модулей, добавление новых зависимостей, изменения порядка инициализации.
Проблема в том, что инициализация отдельных компонентов происходит позже, чем их первое использование. В многопоточном случае все может быть осложнено возможным race condition.
Профилактика:Локализовать инициализацию в одно месте, практиковать Dependency injection, писать интеграционные тесты, при добавлении зависимости анализировать порядок инициализации для разных случаев.
Комментариев нет:
Отправить комментарий