From 39326e79bcfd4c2638c2a849deddf902ec3f923a 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: Sun, 20 Jul 2025 16:39:58 +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 | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 4dfdb15e..9d5a6720 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -11,6 +11,7 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/libmdbx Благодарности: - [Erigon](https://erigon.tech/) за спонсорство. + - [Артёму Воротникову](https://github.com/vorot93) за сообщение об ошибках и тестировании [призязок для Rust](https://github.com/vorot93/libmdbx-rs). Новое: @@ -26,26 +27,47 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/libmdbx операций. Поэтому, в большинстве сценариев накладные расходы чуть меньше, но наоборот чуть больше при отмене вложенных транзакций. + - В API копирования БД добавлена опция `MDBX_CP_OVERWRITE` (перезапись целевого файла), + а в утилиту `mdbx_copy` аналогичная по смыслу опция командной строки `-f` . + Исправления: - - Исправлена assert-проверка внутри `txn_end()`, из-за которой происходили падения отладочных сборок при ошибках запуска транзакций. + - Устранена критическая ошибка в функционале `mdbx_env_resurrect_after_fork()` при использовании SysV-семафоров. - - Устранены несущественные предупреждения MSVC. + Проявлялась ошибка только после порождения дочернего процесса посредством `fork()` на фоне выполняющейся пишущей транзакции, что + приводило к неверной работе семафоров и далее к самым различным ошибкам, вплоть до повреждения БД. Проблема существовала начиная с появления + `mdbx_env_resurrect_after_fork()` и затрагивала OSX, а также POSIX-платформы при сборке с опцией `MDBX_LOCKING=5`. + + - Устранена проблема в API копирования БД на отличных от Linux системах POSIX, + а также в некоторых случаях при расположении целевого файла на не-локальной файловой системе. + Проблема проявлялась в основном на OSX, возвратом ошибки `EWOULDBLOCK`/`EAGAIN` (35), + что обусловлено недочетом/конфликтом блокировок `fcntl(F_SETLK)` и `flock()` в ядре ОС. + Переработана обработка ошибок захвата файловых блокировок в API копирования на системах POSIX. + + - Устранена ошибка приводившая к неожиданному возврату `MDBX_BAD_DBI` при одновременном старте нескольких транзакций внутри одного процесса после открытия БД. + + - Устранена ошибка приводившая к неожиданному возврату `MDBX_DBS_FULL` при повторном открытии уже открытых таблиц и уже достигнутом лимите открытых DBI-дескрипторов. - Исправлена ошибка сборки для платформы Android при явном определении `_FILE_OFFSET_BITS`. + - Поправлено либо удалено несколько неверных assert-проверок, из-за которых происходили падения отладочных сборок в специфических ситуациях. + Главным образом, в коде функций `txn_end()`, `txn_lock()` и `txn_unlock()` как на Windows, так и на POSIX. + + - Устранены несущественные предупреждения MSVC. Отключены предупреждения `C5286` и `C5287`. + Прочие доработки: - Доработана логика отказа от использования OFD-блокировок на POSIX-платформах. Теперь кроме `EINVAL` учитываются дополнительные коды ошибок (`ENOSYS`, `ENOIMPL`, `ENOTSUP`, `ENOSUPP`, `EOPNOTSUPP`), - что позволит работать собранной библиотеке в некоторых случаях, - когда актуальное ядро/контейнер/эмулятор не поддерживает требуемых системных вызовов. + что позволит работать собранной библиотеке в некоторых случаях, когда актуальное ядро/контейнер/эмулятор не поддерживает требуемых системных вызовов. - Изменено значение по-умолчанию порога слияния страниц с 25% до 33%. - В тест добавлена поддержка опции `--numa #` для привязки стохастического теста к NUMA-узлу, а в battery/tmux-скрипте добавлено явное распределение по NUMA-узлам. + - Тесты дополнены сценариями для проверки добавленных возможностей, выявленных регрессов и ошибок. + --------------------------------------------------------------------------------