Files

7.8 KiB
Raw Permalink Blame History

P04. Legolas: поиск ошибок частичных отказов по состояниям системы

  • Версия и дата проверки: 1.1, 07.09.2026.
  • Статус: готово к назначению.

Статья и исходные материалы

  • Основная статья: Haoze Wu и соавт. — Efficient Exposure of Partial Failure Bugs in Distributed Systems with Inferred Abstract States. NSDI 2024.
  • Кратко о статье: Ошибки частичных отказов часто проявляются только при редком сочетании внутреннего состояния системы, места сбоя и момента инъекции. Legolas статически анализирует код, выводит абстрактные состояния и использует их для выбора более содержательных точек отказа. Авторы применили систему к шести распределённым системам и нашли 20 новых ошибок. Проект сравнивает управляемую состояниями и случайную инъекцию при одинаковом бюджете запусков.
  • Почему результат актуален: репозиторий поддерживает локальную сборку Maven на обычном Linux-стенде; задача управляемой инъекции отказов сохраняется при переходе к новым версиям систем, поскольку проект сравнивает стратегии исследования состояний независимо от фиксированного набора найденных ошибок.
  • Артефакты и данные: OrderLab/Legolas под Apache-2.0, со статическим анализатором, инструментированием Java-кода, оркестратором экспериментов и примерами для ZooKeeper. Зафиксированные ревизии: OrderLab/Legolas@84278d313f98 (Apache-2.0).
  • Что уже предоставляет артефакт: Готовы инструментирование, драйверы ZooKeeper, оркестратор и отчёты, а также случайная RandomPolicy и стратегии по состояниям. Их разрешено использовать как основу сравнения; повторная реализация готовых стратегий не обязательна. Проверенные исходные материалы: готовые эксперименты, RandomPolicy.

Обязательный результат

  • Проверяемый вопрос или утверждение: выбор точек отказа по выведенным состояниям быстрее и стабильнее обнаруживает ошибки частичных отказов, чем случайная инъекция при том же бюджете запусков.
  • Технический результат: Развернуть малую конфигурацию ZooKeeper, инструментировать её средствами Legolas и подключить случайную и управляемую состояниями стратегии инъекции. Дополнить готовые scripts новой нагрузкой или классом инъекции и собственным предметным критерием сбоя, например проверкой сохранности подтверждённых записей после восстановления. Общий исполнитель должен фиксировать состояние, место инъекции и исход запуска и объединять повторения одного дефекта.
  • Обязательное приращение команды: Добавить отсутствующую в готовых сценариях нагрузку ZooKeeper или новый класс инъекции и самостоятельно реализовать предметный критерий сбоя по операциям и результатам. Сравнить обе стратегии на добавленном сценарии при одинаковом бюджете и проверить срабатывания критерия независимо от авторского reporter.
  • Эксперимент: Воспроизвести опубликованный сценарий для проверки стенда, затем сравнить обе стратегии на добавленном сценарии при одинаковом бюджете по времени до первого сбоя, числу уникальных сбоев и доле полезных запусков. Проверить критерий на корректном и заведомо нарушенном поведении; отсутствие найденных дефектов допустимо при обоснованной проверке и анализе.
  • Границы выводов: преимущество стратегии инъекции проверяется на малой конфигурации ZooKeeper и выбранном наборе классов и исключений; оно не означает полного покрытия дефектов или той же эффективности на производственном кластере.
  • Ресурсный профиль: Расширенно локально, Linux, Java, Maven, CPU, желательно 16 ГБ памяти. Если полный анализ слишком тяжёл, ограничить набор классов и исключений ZooKeeper, сохранив новый сценарий, собственный критерий и сравнение стратегий.

Содержательные направления

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

Возможное продолжение

Перенести сокращённый конвейер на другую Java-систему, улучшить группировку состояний или предложить стратегию выбора точек, учитывающую историю предыдущих запусков.

История уточнений

Дата Версия Основание Изменение обязательного результата
07.09.2026 1.1 Статический просмотр закреплённого артефакта: готовые сценарии частично покрывают задание. Закреплены новая нагрузка или класс инъекции и независимый предметный критерий; готовые стратегии разрешено использовать.