30 lines
5.2 KiB
Markdown
30 lines
5.2 KiB
Markdown
# P04. Legolas: поиск ошибок частичных отказов по состояниям системы
|
|||
|
|
|
||
|
|
- **Версия и дата проверки:** 1.0, 05.09.2026.
|
||
|
|
- **Статус:** готово к назначению.
|
||
|
|
|
||
|
|
## Статья и исходные материалы
|
||
|
|
|
||
|
|
- **Основная статья:** Haoze Wu и соавт. — [Efficient Exposure of Partial Failure Bugs in Distributed Systems with Inferred Abstract States](https://www.usenix.org/conference/nsdi24/presentation/wu-haoze). NSDI 2024.
|
||
|
|
- **Кратко о статье:** Ошибки частичных отказов часто проявляются только при редком сочетании внутреннего состояния системы, места сбоя и момента инъекции. Legolas статически анализирует код, выводит абстрактные состояния и использует их для выбора более содержательных точек отказа. Авторы применили систему к шести распределённым системам и нашли 20 новых ошибок. Проект сравнивает управляемую состояниями и случайную инъекцию при одинаковом бюджете запусков.
|
||
|
|
- **Почему результат актуален:** репозиторий поддерживает локальную сборку Maven на обычном Linux-стенде; задача управляемой инъекции отказов сохраняется при переходе к новым версиям систем, поскольку проект сравнивает стратегии исследования состояний независимо от фиксированного набора найденных ошибок.
|
||
|
|
- **Артефакты и данные:** [OrderLab/Legolas](https://github.com/OrderLab/Legolas) под Apache-2.0, со статическим анализатором, инструментированием Java-кода, оркестратором экспериментов и примерами для ZooKeeper. Зафиксированные ревизии: `OrderLab/Legolas@84278d313f98` (Apache-2.0).
|
||
|
|
|
||
|
|
## Обязательный результат
|
||
|
|
|
||
|
|
- **Проверяемый вопрос или утверждение:** выбор точек отказа по выведенным состояниям быстрее и стабильнее обнаруживает ошибки частичных отказов, чем случайная инъекция при том же бюджете запусков.
|
||
|
|
- **Технический результат:** Развернуть малую конфигурацию ZooKeeper, инструментировать её средствами Legolas и реализовать два режима инъекции — случайный и управляемый состояниями. Общий исполнитель должен фиксировать состояние, место инъекции и исход запуска, определять сбой по явному критерию и объединять повторения одного дефекта.
|
||
|
|
- **Эксперимент:** на малой конфигурации ZooKeeper воспроизвести один опубликованный сценарий, затем сравнить случайную и управляемую состояниями инъекцию по времени до первого сбоя, числу уникальных сбоев и доле полезных запусков.
|
||
|
|
- **Границы выводов:** преимущество стратегии инъекции проверяется на малой конфигурации ZooKeeper и выбранном наборе классов и исключений; оно не означает полного покрытия дефектов или той же эффективности на производственном кластере.
|
||
|
|
- **Ресурсный профиль:** расширенно локально, Linux, Java, Maven, CPU, желательно 16 ГБ памяти. Если полный анализ выбранной системы слишком тяжёл, использовать ZooKeeper и ограниченный набор классов и исключений, сохранив сравнение стратегий.
|
||
|
|
|
||
|
|
## Содержательные направления
|
||
|
|
|
||
|
|
- сборка и инструментирование системы.
|
||
|
|
- оркестрация отказов и критерии сбоев.
|
||
|
|
- стратегии выбора состояний, статистика и перенос на новый сценарий.
|
||
|
|
|
||
|
|
## Возможное продолжение
|
||
|
|
|
||
|
|
Перенести сокращённый конвейер на другую Java-систему, улучшить группировку состояний или предложить стратегию выбора точек, учитывающую историю предыдущих запусков.
|