mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-15 19:04:31 +08:00
mdbx: дополнение ChangeLog.
This commit is contained in:
parent
e15079ec68
commit
5a9eea8acc
67
ChangeLog.md
67
ChangeLog.md
@ -5,6 +5,73 @@ English version [by liar Google](https://gitflic-ru.translate.goog/project/erthi
|
||||
and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic.ru/project/erthink/libmdbx/blob?file=ChangeLog.md).
|
||||
|
||||
|
||||
## v0.13.3 в процессе
|
||||
|
||||
Благодарности:
|
||||
|
||||
- [Алексей (Keller) Костюк](https://t.me/keller18306) за сообщения об ошибках и недочетах.
|
||||
- [Erigon](https://docs.erigon.tech/) за спонсорство.
|
||||
|
||||
Новое:
|
||||
|
||||
- В API добавлена функция `mdbx_cursor_count_ex()` позволяющая получить как количество мульти-значений
|
||||
соответствующих текущему ключу, так и информацию о вложенном дереве хранящем эти значения.
|
||||
|
||||
Изменение поведения:
|
||||
|
||||
- Теперь при включении профилирования GC (сборка с опцией `MDBX_ENABLE_PROFGC=ON`)
|
||||
подсчитываются затраты времени ЦПУ на слияние списков страниц (на работу функции `pnl_merge()`).
|
||||
|
||||
- В утилите тестирования значение режима данных переименовано из `data.dups` в `data.multi`.
|
||||
|
||||
Исправления:
|
||||
|
||||
- Устранён регресс состояния вложенного/dupsort курсора после вставки данных в `MDBX_APPEND`-режиме.
|
||||
|
||||
При добавлении нового ключа в append-режиме, в случае когда в текущей
|
||||
(последней) позиции с ключом связаны несколько значений и
|
||||
(соответственно) вложенный dupsort-курсор инициализирован, вставка
|
||||
происходила без сброса вложенного курсора.
|
||||
|
||||
В результате вложенный курсор логически оставался стоять на
|
||||
multivalue-данных связанных с предыдущей позицией основного курсора,
|
||||
т.е. переходил в неконсистентное состояние.
|
||||
|
||||
Ошибка проявлялась возвратом неверных значений из `mdbx_cursor_count()`
|
||||
или срабатывание assert-проверки в отладочных сборках.
|
||||
|
||||
- Получение boot_id при работе внутри LXC-контейнера.
|
||||
|
||||
Из LXC-контейнера не доступен файл хостовой системы `/proc/sys/kernel/random/boot_id`.
|
||||
Вместо него, при каждом старте контейнера, создается и заполняется
|
||||
случайными данными собственный boot_id смонтированный через bind из `tmpfs`.
|
||||
https://github.com/lxc/lxc/issues/3027
|
||||
|
||||
Ранее этот замещенный bootid отбраковывался внутри libmdbx,
|
||||
так как располагается в `tmpfs`, а не файловой системе `/proc`.
|
||||
Теперь при работе внутри LXC-контейнера такой bootid будет использоваться.
|
||||
|
||||
Однако, полноценный контроль по boot_id не возможен, так как при
|
||||
рестарте LXC-контейнера (но не хоста) boot_id будет меняться, хотя
|
||||
данные в unified page cache сохраняются.
|
||||
|
||||
Таким образом, при рестарте LXC-контейнера, libmdbx будет производить
|
||||
откат БД до крайней точки устойчивой фиксации, что может приводить к
|
||||
утрате данных пользователя в случаях когда они могли быть сохранены.
|
||||
Однако, улучшить ситуацию пока не представляется возможным, как минимум
|
||||
до доступности boot_id хостовой системы изнутри LXC-контейнера.
|
||||
|
||||
- Устранёна ошибка неверной обработки попытки запуска вложенной читающей транзакции.
|
||||
Теперь в таких ситуациях возвращается ошибка `MDBX_EINVAL`, так как вложенность
|
||||
поддерживается только для транзакций чтения-записи.
|
||||
|
||||
Ошибка была внесена при рефакторинге, коммитом `2f2df1ee76ab137ee66d00af69a82a30dc0d6deb`
|
||||
чуть более 5 лет назад и долго оставалось не замеченной.
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
## v0.13.2 "Прошлогодний Снег" (Last Year's Snow) от 2024-12-11
|
||||
|
||||
Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов
|
||||
|
Loading…
x
Reference in New Issue
Block a user