5.3 KiB
5.3 KiB
P02. DUPChecker: статическая проверка совместимости форматов при обновлении
- Версия и дата проверки: 1.0, 05.09.2026.
- Статус: готово к назначению.
Статья и исходные материалы
- Основная статья: Yongle Zhang и соавт. — Understanding and Detecting Software Upgrade Failures in Distributed Systems. SOSP 2021.
- Кратко о статье: Авторы исследуют 123 сбоя при обновлении восьми распределённых систем и показывают, что многие из них возникают только при взаимодействии разных версий через хранилище или сетевые сообщения. На основе исследования созданы средство тестирования обновлений DUPTester и статические проверки форматов DUPChecker. В проекте воспроизводится именно проверка межверсионной совместимости форматов на небольших примерах.
- Почему результат актуален: инструмент — снимок состояния на момент публикации, но проверяемые правила межверсионной совместимости сохраняют значение для современных систем. Полный авторский эксперимент рассчитан на 4 ГБ памяти и примерно час работы, а отдельная пара версий проверяется быстрее.
- Артефакты и данные: jwjwyoung/DUPChecker под MIT, с Python 3-инструментами, примерами для HBase и сценариями воспроизведения опубликованной таблицы; артефакт получил знаки Available, Functional и Results Reproduced на SOSP 2021. Зафиксированные ревизии:
jwjwyoung/DUPChecker@01ba1d490465(MIT).
Обязательный результат
- Проверяемый вопрос или утверждение: статическая проверка изменений схем находит потенциальные межверсионные несовместимости, которые обычная проверка каждой версии по отдельности не обнаруживает.
- Технический результат: Подготовить воспроизводимый анализатор зафиксированных пар выпусков для 2–3 открытых систем, реализовать простой синтаксический diff как baseline и собрать размеченный набор предупреждений с подтверждениями из истории изменений и тестов. Один сценарий должен запускать оба анализатора на одинаковых входах и формировать сопоставимый отчёт.
- Эксперимент: выбрать 2–3 открытые системы, проверить несколько последовательных выпусков, вручную классифицировать предупреждения по истории изменений и тестам и сравнить DUPChecker с простым синтаксическим diff по точности и времени.
- Границы выводов: оценки точности и времени относятся к выбранным системам, выпускам и размеченным предупреждениям; они не характеризуют все виды межверсионной несовместимости и другие форматы схем.
- Ресурсный профиль: локально, CPU, 4–8 ГБ памяти. Если крупный репозиторий неудобно анализировать целиком, использовать зафиксированные пары выпусков и отдельно подготовленный набор совместимых и несовместимых изменений схем.
Содержательные направления
- подбор выпусков и эталонная разметка.
- запуск и расширение анализатора.
- базовые методы, метрики, проверка предупреждений и анализ ошибок.
Возможное продолжение
Уточнить одно правило для снижения ложных срабатываний, добавить поддержку ещё одного изменения схемы или сопоставить статические предупреждения с реальными тестами совместного чтения старой и новой версией.