Update project task cards to version 1.1

This commit is contained in:
2026-09-07 21:46:04 +03:00
parent 2bbfdac874
commit f8a5e00ab9
42 changed files with 264 additions and 103 deletions
+15 -7
View File
@@ -1,6 +1,6 @@
# P04. Legolas: поиск ошибок частичных отказов по состояниям системы
- **Версия и дата проверки:** 1.0, 05.09.2026.
- **Версия и дата проверки:** 1.1, 07.09.2026.
- **Статус:** готово к назначению.
## Статья и исходные материалы
@@ -9,21 +9,29 @@
- **Кратко о статье:** Ошибки частичных отказов часто проявляются только при редком сочетании внутреннего состояния системы, места сбоя и момента инъекции. Legolas статически анализирует код, выводит абстрактные состояния и использует их для выбора более содержательных точек отказа. Авторы применили систему к шести распределённым системам и нашли 20 новых ошибок. Проект сравнивает управляемую состояниями и случайную инъекцию при одинаковом бюджете запусков.
- **Почему результат актуален:** репозиторий поддерживает локальную сборку Maven на обычном Linux-стенде; задача управляемой инъекции отказов сохраняется при переходе к новым версиям систем, поскольку проект сравнивает стратегии исследования состояний независимо от фиксированного набора найденных ошибок.
- **Артефакты и данные:** [OrderLab/Legolas](https://github.com/OrderLab/Legolas) под Apache-2.0, со статическим анализатором, инструментированием Java-кода, оркестратором экспериментов и примерами для ZooKeeper. Зафиксированные ревизии: `OrderLab/Legolas@84278d313f98` (Apache-2.0).
- **Что уже предоставляет артефакт:** Готовы инструментирование, драйверы ZooKeeper, оркестратор и отчёты, а также случайная `RandomPolicy` и стратегии по состояниям. Их разрешено использовать как основу сравнения; повторная реализация готовых стратегий не обязательна. Проверенные исходные материалы: [готовые эксперименты](https://github.com/OrderLab/Legolas/blob/84278d313f98/scripts/experiment/README.md), [RandomPolicy](https://github.com/OrderLab/Legolas/blob/84278d313f98/injector/src/main/java/edu/umich/order/legolas/injector/policy/RandomPolicy.java).
## Обязательный результат
- **Проверяемый вопрос или утверждение:** выбор точек отказа по выведенным состояниям быстрее и стабильнее обнаруживает ошибки частичных отказов, чем случайная инъекция при том же бюджете запусков.
- **Технический результат:** Развернуть малую конфигурацию ZooKeeper, инструментировать её средствами Legolas и реализовать два режима инъекции случайный и управляемый состояниями. Общий исполнитель должен фиксировать состояние, место инъекции и исход запуска, определять сбой по явному критерию и объединять повторения одного дефекта.
- **Эксперимент:** на малой конфигурации ZooKeeper воспроизвести один опубликованный сценарий, затем сравнить случайную и управляемую состояниями инъекцию по времени до первого сбоя, числу уникальных сбоев и доле полезных запусков.
- **Технический результат:** Развернуть малую конфигурацию ZooKeeper, инструментировать её средствами Legolas и подключить случайную и управляемую состояниями стратегии инъекции. Дополнить готовые scripts новой нагрузкой или классом инъекции и собственным предметным критерием сбоя, например проверкой сохранности подтверждённых записей после восстановления. Общий исполнитель должен фиксировать состояние, место инъекции и исход запуска и объединять повторения одного дефекта.
- **Обязательное приращение команды:** Добавить отсутствующую в готовых сценариях нагрузку ZooKeeper или новый класс инъекции и самостоятельно реализовать предметный критерий сбоя по операциям и результатам. Сравнить обе стратегии на добавленном сценарии при одинаковом бюджете и проверить срабатывания критерия независимо от авторского reporter.
- **Эксперимент:** Воспроизвести опубликованный сценарий для проверки стенда, затем сравнить обе стратегии на добавленном сценарии при одинаковом бюджете по времени до первого сбоя, числу уникальных сбоев и доле полезных запусков. Проверить критерий на корректном и заведомо нарушенном поведении; отсутствие найденных дефектов допустимо при обоснованной проверке и анализе.
- **Границы выводов:** преимущество стратегии инъекции проверяется на малой конфигурации ZooKeeper и выбранном наборе классов и исключений; оно не означает полного покрытия дефектов или той же эффективности на производственном кластере.
- **Ресурсный профиль:** расширенно локально, Linux, Java, Maven, CPU, желательно 16 ГБ памяти. Если полный анализ выбранной системы слишком тяжёл, использовать ZooKeeper и ограниченный набор классов и исключений, сохранив сравнение стратегий.
- **Ресурсный профиль:** Расширенно локально, Linux, Java, Maven, CPU, желательно 16 ГБ памяти. Если полный анализ слишком тяжёл, ограничить набор классов и исключений ZooKeeper, сохранив новый сценарий, собственный критерий и сравнение стратегий.
## Содержательные направления
- сборка и инструментирование системы.
- оркестрация отказов и критерии сбоев.
- стратегии выбора состояний, статистика и перенос на новый сценарий.
- инструментирование системы и новая нагрузка или класс инъекции.
- оркестрация отказов и независимый предметный критерий сбоя.
- сопоставление стратегий выбора состояний и статистический анализ.
## Возможное продолжение
Перенести сокращённый конвейер на другую Java-систему, улучшить группировку состояний или предложить стратегию выбора точек, учитывающую историю предыдущих запусков.
## История уточнений
| Дата | Версия | Основание | Изменение обязательного результата |
|---|---|---|---|
| 07.09.2026 | 1.1 | Статический просмотр закреплённого артефакта: готовые сценарии частично покрывают задание. | Закреплены новая нагрузка или класс инъекции и независимый предметный критерий; готовые стратегии разрешено использовать. |