[I128-2684] DP_Irbis64Native может рассинхронизировать MST и XRF при записи


НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.2.4 >> [I128-2684] DP_Irbis64Native может рассинхронизировать MST и XRF при записи📄 Скачать в DOCX


Тип Версия Статус Приоритет Исполнитель
⚙️ Исправление ошибок 2026.2.4 🔘 Завершено Средний Ilya Mikhaylenko

Компоненты: ИРБИС 128. Модуль DP_Irbis64Native - Нативный провайдер данных к файлам СУБД ИРБИС 64/64+

Завершено: 14.07.2026 11:08

Проблема При записи через DP_Irbis64Native может появиться повреждение связки MST/XRF: диагностика сообщает xrfoffsetmismatch, MST offset и XRF offset для одного MFN различаются.

Сценарий воспроизведения

  1. Выполнить сохранение записи через DP_Irbis64Native на рабочей базе.
  2. Запустить диагностику связей MST/XRF.
  3. Фактический результат: для MFN появляется ошибка вида XRF offset differs from MST offset.

Ожидаемый результат После записи XRF указывает на фактически записанный MST offset, лидер MST содержит тот же MFN, а диагностика MST/XRF не показывает рассинхронизацию по сохраненной записи.

Причина В writepath MST и XRF есть участки, где обновления MST/XRF и сбросы флагов выполняются без единого безопасного helperблокирования и без проверки связки после записи. При ошибочном или устаревшем offset можно записать XRF, не соответствующий фактической MST-записи.

Решение Усилить write-path DP_Irbis64Native: брать парные MST/XRF locks, инвалидировать XRF cache перед записью, проверять append offset, проверять связь MST/XRF после записи и защищать XRF write от неверного MFN/seek.

Риски Изменение затрагивает низкоуровневую запись MST/XRF и диагностику. Нужны отдельные проверки записи, диагностики DiagMstXrf и отсутствия регрессии на актуализации.

-

I1282684: DPIrbis64Native может рассинхронизировать MST и XRF при записи. Scope: DPIrbis64Native; target release/2026.2; branch `bugfix/I1282684dpnativemstxrfwritelocks`. Draft before branch/commit/push/readback; do not publish until the gates in the source notebook pass.

Куда смотреть:

Изменения по файлам:

modules/DP_Irbis64Native/include/MstSpace.php

modules/DP_Irbis64Native/include/XrfFile.php

-

There was a merge conflict automatically merging this branch