Skip to content

Commit

Permalink
save
Browse files Browse the repository at this point in the history
  • Loading branch information
AskAlexSharov committed Dec 21, 2024
1 parent 3c97bf7 commit 1588ccd
Show file tree
Hide file tree
Showing 20 changed files with 27,499 additions and 37,493 deletions.
26,107 changes: 11,402 additions & 14,705 deletions mdbx/mdbx.c

Large diffs are not rendered by default.

790 changes: 291 additions & 499 deletions mdbx/mdbx.h

Large diffs are not rendered by default.

444 changes: 152 additions & 292 deletions mdbxdist/CMakeLists.txt

Large diffs are not rendered by default.

86 changes: 82 additions & 4 deletions mdbxdist/ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,83 @@
ChangeLog
=========

English version [by liar Google](https://gitflic-ru.translate.goog/project/erthink/libmdbx/blob?file=ChangeLog.md&_x_tr_sl=ru&_x_tr_tl=en)
and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic.ru/project/erthink/libmdbx/blob?file=ChangeLog.md).
English version [by liar Google](https://libmdbx-dqdkfa-ru.translate.goog/md__change_log.html?_x_tr_sl=ru&_x_tr_tl=en)
and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/libmdbx.dqdkfa.ru/md__change_log.html).

## v0.13.2 в процессе
## v0.13.3 в процессе

Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов.
Благодарности:

- [Алексей (Keller) Костюк](https://t.me/keller18306) за сообщения об ошибках и недочетах.
- [Erigon](https://docs.erigon.tech/) за спонсорство.

Новое:

- В API добавлена функция `mdbx_cursor_count_ex()` позволяющая получить как количество мульти-значений
соответствующих текущему ключу, так и информацию о вложенном дереве хранящем эти значения.

Исправления:

- Устранён регресс состояния вложенного/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

Ранее этот подставной/замещенный boot_id отбраковывался внутри libmdbx,
так как файл располагается в `tmpfs`, а не в файловой системе `/proc`.
В результате boot_id для проверки целостности БД не был доступен.
Теперь при работе внутри LXC-контейнера такой bootid будет использоваться.

Однако, полноценно работающий контроль по boot_id не возможен, так как при
рестарте LXC-контейнера (но не хоста) boot_id будет меняться, хотя
данные в unified page cache сохраняются.

Таким образом, при рестарте LXC-контейнера без рестарта хоста, libmdbx придется
откатить состояние БД до крайней точки устойчивой фиксации, что повлечет
утрату данных пользователя в случаях когда они могли быть сохранены.
Однако, улучшить ситуацию пока не представляется возможным, как минимум
до доступности boot_id хостовой системы изнутри LXC-контейнера.

- Устранёна ошибка неверной обработки попытки запуска вложенной читающей транзакции.
Теперь в таких ситуациях возвращается ошибка `MDBX_EINVAL`, так как вложенность
поддерживается только для транзакций чтения-записи.

Ошибка была внесена при рефакторинге, коммитом `2f2df1ee76ab137ee66d00af69a82a30dc0d6deb`
чуть более 5 лет назад и долго оставалось не замеченной.

Изменение поведения:

- Теперь при включении профилирования GC (сборка с опцией `MDBX_ENABLE_PROFGC=ON`)
подсчитываются затраты времени ЦПУ на слияние списков страниц, т.е. на работу функции `pnl_merge()`.

- В утилите тестирования значение режима данных переименовано из `data.dups` в `data.multi`.

--------------------------------------------------------------------------------

## v0.13.2 "Прошлогодний Снег" (Last Year's Snow) от 2024-12-11

Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов
в день рождения и в память об [Алекса́ндре Миха́йловиче Тата́рском](https://ru.wikipedia.org/wiki/Татарский,_Александр_Михайлович),
российском режиссёре-мультипликаторе, создавшем такие знаменитые
мультфильмы как "Падал прошлогодний снег", "Пластилиновая ворона",
заставку "Спокойной ночи, малыши!" и многие другие шедевры нашего
детства.

Новое:

Expand Down Expand Up @@ -68,6 +139,13 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic

Исправления:

- Устранен регресс возврата неверной информации из функций
`mdbx_env_stat_ex()` и `mdbx_env_stat()`. При рефакторинге до выпуска
v0.13.1 была допущена ошибка, из-за которой выполнялось суммирование
значений без очистки переданного пользователем буфера для результата.
Таким образом, возвращаемая информация была верной, только если память
используемая для размещения результата содержала нули на момент вызова
функции.
- Функция `mdbx_close_dbi()` доработана для возврата ошибки `MDBX_DANGLING_DBI`
при попытке закрыть dbi-дескриптор таблицы, созданной и/или измененной в
ещё выполняющейся транзакции. Такое преждевременное закрытие дескриптора
Expand Down
4 changes: 2 additions & 2 deletions mdbxdist/NOTICE
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ documentation, C++ API description and links to the original git repo
with the source code. Questions, feedback and suggestions are welcome
to the Telegram' group https://t.me/libmdbx.

Since 2017 _libmdbx_ development is funded by [Positive Technologies](https://www.ptsecurity.com)
and used inside company products. Всё будет хорошо!
Donations are welcome to ETH `0xD104d8f8B2dC312aaD74899F83EBf3EEBDC1EA3A`.
Всё будет хорошо!

Copyright 2015-2024 Леонид Юрьев aka Leonid Yuriev <[email protected]>
SPDX-License-Identifier: Apache-2.0
Expand Down
Loading

0 comments on commit 1588ccd

Please sign in to comment.