From 668a1e42e3f47750c2f3963919c5e070a7167aa9 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: Sat, 19 Apr 2025 23:52:19 +0300 Subject: [PATCH] =?UTF-8?q?mdbx:=20=D0=B4=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20ChangeLog.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index a4911bfb..1d1fa6df 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -17,6 +17,8 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/libmdbx - [Виктору Логунову](https://t.me/vl_username) за сообщение об опечатки в имени переменной в Conan-рецепте. - [Илье Михееву](https://t.me/IlyaMkhv) за сообщение о лишнем/ненужном предупреждении несоответствия файла БД новому размеру. - [maxc0d3r](https://gitflic.ru/user/maxc0d3r) for bug reporting and testing. + - [Алексею Костюку (aka Keller)](https://t.me/keller18306) за сообщения о проблеме копирования на NFS. + Новое: @@ -75,8 +77,13 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/libmdbx - В C++ API отменён вброс исключения при запросе транзакции у отсоединённого курсора посредством вывоза `mdbx::cursor::txn()`. + - При невозможности отвязки курсора от его текущей транзакции функция `mdbx_cursor_bind()` + теперь возвращает `MDBX_EINVAL` вместо `MDBX_BAD_TXN`. + Исправления: + - Для совместимости с GCC 15.x в режиме C23 изменен порядок указания атрибутов функций. + - Устранён регресс допускающий SIGSEGV в операциях обновления после вытеснения/spilling страниц в больших транзакциях. Ошибка присутствует в выпусках v0.13.1, v0.13.2, v0.13.3 и оставалась незамеченной из-за специфических условий и низкой вероятности проявления. Более подробная информация в описании коммита `cb8eec6d11cdab4f7d3cf87913e8009149dcf60b`. @@ -130,6 +137,38 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/libmdbx - В C++ API добавлена упущенная проверка `__cpp_concepts >= 202002` для использования концептов C++. + - Устранён регресс при использовании курсоров для DBI=0 в читающих транзакциях. + + В результате рефакторинга и ряда оптимизаций для завершения/гашения + курсоров в читающих и пишущих транзакций стал использоваться общий код. + Причем за основу, был взят соответствующий фрагмент относящийся к + пишущим транзакциям, в которых пользователю не позволяется + использоваться курсоры для DBI=0 и поэтому эта итераций пропускалась. + + В результате, при завершении читающих транзакциях, курсоры связанные с + DBI=0 не завершались должным образом, а при их повторном использовании + или явном закрытии после завершения читающей транзакции происходило + обращение к уже освобожденной памяти. Если же такие курсоры + отсоединялись или закрывались до завершения читающей транзакции, то + ошибка не имела шансов на проявление. + + - Устранён регресс в виде ошибки `EAGAIN` при копировании БД на NFS и CIFS/SMB. + + При доработках/развитии API в функции копирования был добавлен захват + файловой блокировки посредством как `fcntl()`, так и `flock()`. Однако, + в зависимости от версии локального ядра, версии удалённого сервера NFS и + опций монтирования, это могло приводить к возврату POSIX-ошибки `EAGAIN` + (`11` на большинстве платформ, включая Linux). + + - Устранена ошибка merge/rebase внутри `mdbx_txn_release_all_cursors_ex()`, + что могло приводить к последующим неожиданным ошибкам `MDBX_EBADSIGN` и утечкам памяти. + Для проверки сценария дополнен соответствующий тест. + + - Исправлена assert-проверка в пути завершения вложенных транзакций. + Для проверки сценария дополнен соответствующий тест. + + - Устранена возможность возврата неожиданной ошибки `MDBX_BUSY` из `mdbx_txn_lock(dont_wait=false)`. + Прочие доработки: - Существенный рефакторинг с реструктуризацией кода, переименованием внутренних структур, их полей и внутренних функций. @@ -155,6 +194,10 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/libmdbx - Отключено использование C23 `[[атрибутов]]` для версий CLANG меньше 20. + - Во избежание потенциальных проблем отключено использование `copy_file_range()` на ядрах Linux 5.3 - 5.18. + + - Вброс `std::invalid_argument` теперь производится явным сообщением `MDBX_EINVAL`. + --------------------------------------------------------------------------------