From fff3fbd866c50ee3c77b244a9b05f497e06a65e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= Date: Wed, 6 Mar 2024 22:58:31 +0300 Subject: [PATCH] =?UTF-8?q?mdbx:=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20ChangeLog=20(=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=BA=20=D0=B2?= =?UTF-8?q?=D1=8B=D0=BF=D1=83=D1=81=D0=BA=D1=83).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog.md | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) 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