diff --git a/ChangeLog.md b/ChangeLog.md index 6978e6b1..0934d9fd 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -4,6 +4,78 @@ ChangeLog English version [by Google](https://gitflic-ru.translate.goog/project/erthink/libmdbx/blob?file=ChangeLog.md&_x_tr_sl=ru&_x_tr_tl=en) and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic.ru/project/erthink/libmdbx/blob?file=ChangeLog.md). +## v0.12.10 (подготовка к выпуску) + +Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов. + +``` +git diff' stat: 16 commits, 10 files changed, 665 insertions(+), 238 deletions(-) +Signed-off-by: Леонид Юрьев (Leonid Yuriev) +``` + +Благодарности: + + - [Dvir H](https://t.me/Dvirsw) за [сообщение](https://t.me/libmdbx/5368) + об ошибке `MDBX_CORRUPTED` в сценарии работы в режиме `MDBX_DUPFIXED` и нечетной длинной + мульти-значений, с предоставлением точного минимального сценария воспроизведения. + +Значимые исправления и доработки: + + - Устранение унаследованной от LMDB ошибки приводящей к повреждению БД при использовании `MDBX_DUPFIXED`. + Проблема была выявлена при расширении тестов сценариями с длинными мульти-значениями в режиме `MDBX_DUPFIXED`. + Сообщений о проявлении этой ошибки в эксплуатационных/продуктовых средах не поступало. + + На LEAF2-страниц, используемых для компактного хранения мульти-значений фиксированной длины, + выполнялось резервирование места без учета возможности превышения размера страниц, + с последующим переполнением, повреждением структуры БД и/или повреждением содержимого ОЗУ. + + Вероятность проявления ошибки существенно увеличивалась с увеличением размера/длины + мульти-значений/дубликатов и уменьшением размера страницы БД. Поэтому при использовании `MDBX_INTEGERDUP` + вероятность проявления близка к нулю, а сценарий такого проявления найти не удалось. + + В MDBX ошибка присутствовала с момента отделения проекта от LMDB, + где эта ошибка присутствует более 11 лети, по настоящее время. + + - Исправление ложной ошибки `MDBX_CORRUPTED (-30796)` в сценарии работы + в режиме `MDBX_DUPFIXED` и нечетной длинной мульти-значений. + + - Исправление недочета корректировки сопутствующих курсоров при разделении страницы + по сценарию добавления пустой страницы слева. + + - Доработка `rebalance()` ради уменьшения WAF. Новый функционал, включая + контролируемую пользователем опцию `enum MDBX_option_t`, будет доступен + в выпусках ветки `0.13.x`, а в этом выпуске доработка сводится к тактике + не-вовленичения чистой страницы при нехватке запаса страниц в ходе обновления GC, + за счет ухудшения баланса дерева страниц. + + - Устранение упущения приводящего к нелогичной ситуации + `me_dxb_mmap.curren > me_dxb_mmap.limit` при "дребезге" размера БД. + В текущем понимании, последствий кроме срабатывания assert-проверки нет, а + вероятность проявления близка к нулю. + + - Исправление в функционале обхода дерева, используемого утилитой + `mdbx_chk`, подсчета места затраченного на выравнивание на вложенной + под-странице, в случае нечетного количества dupfixed-элементов нечетного + размера. + Сообщений о проявлении этой ошибки в эксплуатационных/продуктовых средах не поступало. + + - Исправление assert-проверки внутри `check_txn()` для случая завершенных транзакций в режиме `MDBX_NO_TLS`. + Последствий ошибки, кроме срабатывания assert-проверки в отладочных сборках, нет. + +Прочее: + + - Расширение стохастического теста dupfixed-сценариями. + - Корректировка условия в assert-проверке для `MDBX_TXN_DRAINED_GC`. + - Добавление в jitter-сценарий простого теста сброса и перезапуска читающих транзакций. + - Вынужденное продолжение очистки/рефакторинга унаследованных ребусов в `cursor_put_nochecklen()`. + - Фиксация транзакции при ошибках теста для последующего анализа содержимого БД. + - Сопутствующий рефакторинг `node_shrink()` для ясности исходного кода. + - Приведение в соответствие протоколируемых имен тестов опциям командной строки. + - Добавление cmoke-теста `extra/dupfixed_addodd`. + + +-------------------------------------------------------------------------------- + ## v0.12.9 "Ясень-4" от 2023-12-11