libmdbx 0.13.6 "Бузина"
1
Описание
Поддерживающий выпуск стабильной ветки с исправлением обнаруженных ошибок и устранением недочётов, в память о погибшем украинском историке и писателе Алесе Бузине.
For translation to other languages please try Yandex or liar Google.
git diff' stat: 15 files changed, 194 insertions(+), 36 deletions(-)
Благодарности:
- Erigon за спонсорство.
- Илье Михееву и команде Erigon за сообщения о проблеме и тестирование.
- Алексею Костюку (aka Keller) за сообщения о проблеме копирования на NFS.
Исправления:
- Устранён регресс при использовании курсоров для
DBI=0
(aka GC/FreeDB) в читающих транзакциях.
После рефакторинга и ряда оптимизаций для завершения/гашения курсоров в читающих и пишущих транзакций, стал использоваться общий код. Причем за основу, был взят соответствующий фрагмент относящийся к пишущим транзакциям, в которых пользователю не позволяется использоваться курсоры для 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(d_wait=false)
. - Для совместимости с GCC 15.x в режиме
C23
изменен порядок указания атрибутов функций.
Изменение поведения:
- При невозможности отвязки курсора от его текущей транзакции функция
mdbx_cursor_bind()
теперь возвращаетMDBX_EINVAL
вместоMDBX_BAD_TXN
.
Прочие доработки:
- Во избежание потенциальных проблем отключено использование
copy_file_range()
на ядрах Linux 5.3 - 5.18. - Вброс
std::invalid_argument
теперь производится явным сообщениемMDBX_EINVAL
. - Уточнен тип адреса для пожертвований. Ethereum/ERC-20 позволяет перечислять не только ETH, но и другие валюты/токены, в том числе USDC.
- Дополнен тест курсоров extra/cursor-closing.
- В
NOTICE
обновлена информация о Github.
Загрузки:
- 327K, libmdbx-amalgamated-0.13.6.zpaq, sha256sum:
513ef9db6a5f9887d3f786a4a29cd4a77e68b816226ab2cff6648e00f5208332
- 441K, libmdbx-amalgamated-0.13.6.tar.xz, sha256sum:
57db987de6f7ccc66a66ae28a7bda9f9fbb48ac5fb9279bcca92fd5de13075d1
За информацией о предыдущих версиях обращайтесь к тегам git и ChangeLog.