mdbx: дополнение ChangeLog.

This commit is contained in:
Леонид Юрьев (Leonid Yuriev) 2025-07-20 20:46:33 +03:00
parent 5c69cb322a
commit cb428e613f
No known key found for this signature in database
GPG Key ID: 518BD10B927E8686

View File

@ -5,20 +5,51 @@ English version [by liar Google](https://libmdbx-dqdkfa-ru.translate.goog/md__ch
and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/libmdbx.dqdkfa.ru/md__change_log.html). and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/libmdbx.dqdkfa.ru/md__change_log.html).
## v0.13.7 в процессе накопления изменений. ## v0.13.7 запланирован на конец июля 2025.
Поддерживающий выпуск стабильной ветки с исправлением обнаруженных ошибок и устранением недочётов. Поддерживающий выпуск стабильной ветки с исправлением обнаруженных ошибок и устранением недочётов.
Благодарности: Благодарности:
- [Erigon](https://erigon.tech/) за спонсорство. - [Erigon](https://erigon.tech/) за спонсорство.
- [Артёму Воротникову](https://github.com/vorot93) за сообщение об ошибках и тестировании [призязок для Rust](https://github.com/vorot93/libmdbx-rs).
Исправления: Исправления:
- Устранена критическая ошибка в функционале `mdbx_env_resurrect_after_fork()` при использовании SysV-семафоров.
Проявлялась ошибка только после порождения дочернего процесса посредством `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`. - Исправлена ошибка сборки для платформы Android при явном определении `_FILE_OFFSET_BITS`.
- Исправлена ошибка использования `ENOMEM` вместо `MDBX_ENOMEM`. - Исправлена ошибка использования `ENOMEM` вместо `MDBX_ENOMEM`.
Что могло ломать сборку на не-POSIX/Windows платформах, в зависимости от конфигурации и/или версии SDK. Что могло ломать сборку на не-POSIX/Windows платформах, в зависимости от конфигурации и/или версии SDK.
- Поправлено либо удалено несколько неверных assert-проверок, из-за которых происходили падения отладочных сборок в специфических ситуациях.
Главным образом, в коде функций `txn_end()`, `txn_lock()` и `txn_unlock()` как на Windows, так и на POSIX.
- Устранены несущественные предупреждения MSVC. Отключены предупреждения `C5286` и `C5287`.
Прочие доработки:
- Доработана логика отказа от использования OFD-блокировок на POSIX-платформах.
Теперь кроме `EINVAL` учитываются дополнительные коды ошибок (`ENOSYS`, `ENOIMPL`, `ENOTSUP`, `ENOSUPP`, `EOPNOTSUPP`),
что позволит работать собранной библиотеке в некоторых случаях,
когда актуальное ядро/контейнер/эмулятор не поддерживает требуемых системных вызовов.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------