mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-01 23:54:12 +08:00
mdbx: обновление ChangeLog.
This commit is contained in:
parent
d02bdcf2bd
commit
45aa39c68b
60
ChangeLog.md
60
ChangeLog.md
@ -9,6 +9,61 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic
|
|||||||
|
|
||||||
Поддержка стабильной ветки.
|
Поддержка стабильной ветки.
|
||||||
|
|
||||||
|
Исправления и доработки:
|
||||||
|
|
||||||
|
- Исправление опечатки в имени переменной внутри `mdbx_env_turn_for_recovery()`,
|
||||||
|
что приводило к неверному поведению в некоторых ситуациях.
|
||||||
|
|
||||||
|
С точки зрения пользователя, с учетом актуальных сценариев использования
|
||||||
|
утилиты `mdbx_chk`, был только один специфический/редкий сценарий
|
||||||
|
проявления ошибки/проблемы - когда выполнялась проверка и активация
|
||||||
|
слабой/weak мета-страницы с НЕ-последней транзакцией после системной
|
||||||
|
аварии машины, где БД использовалась в хрупком/небезопасном режиме.
|
||||||
|
В сценарии, при успешной проверке целевой страницы и её последующей
|
||||||
|
активации выводилось сообщение об ошибке, связанной со срабатыванием
|
||||||
|
механизма контроля не-когерентности кэша файловой системы и отображенных
|
||||||
|
в ОЗУ данных БД. При этом БД успешно восстанавливалось и не было
|
||||||
|
каких-либо негативных последствия, кроме самого сообщения об ошибке.
|
||||||
|
|
||||||
|
Технически же ошибка проявлялась при "переключении" на мета-страницу,
|
||||||
|
когда у хотя-бы одной из двух других мета-страниц номер транзакции был
|
||||||
|
больше:
|
||||||
|
|
||||||
|
* Если содержимое других мета-страниц было корректным, а номера
|
||||||
|
связанных транзакций были больше, то результирующий номер транзакции в
|
||||||
|
целевой/активируемой мета-страницы устанавливается без учета этих
|
||||||
|
мета-страниц и мог быть меньше-или-равным.
|
||||||
|
|
||||||
|
* В результате, если такие мета-страницы были в статусе слабых/weak, то
|
||||||
|
при закрытии БД после переключения могла срабатывать защита от
|
||||||
|
не-когерентности unified buffer/page cache, а в отладочных сборках могла
|
||||||
|
срабатывать assert-проверка.
|
||||||
|
|
||||||
|
* Если же такие мета-страницы были в статусе сильных/steady, то
|
||||||
|
переключение на новую мета-страницу могло не давать эффекта либо
|
||||||
|
приводить к появлению двух мета-страниц с одинаковым номером транзакции,
|
||||||
|
что является ошибочной ситуацией.
|
||||||
|
|
||||||
|
- Обходное решение проблем сборки посредством GCC с использование опций `-m32 -arch=i686 -Ofast`.
|
||||||
|
Проблема обусловлена ошибкой GCC, из-за которой конструкция `__attribute__((__target__("sse2")))`
|
||||||
|
не включает полноценное использование инструкций SSE и SSE2, если это не было сделано посредством
|
||||||
|
опций командной строки, но была использована опция `-Ofast`. В результате сборка заканчивалась
|
||||||
|
сообщением об ошибке:
|
||||||
|
`error: inlining failed in call to 'always_inline' '_mm_movemask_ps': target specific option mismatch`
|
||||||
|
|
||||||
|
- Доработка режима "восстановления" БД и переключения на заданную мета-страницу:
|
||||||
|
* Устранение обновления без необходимости мета-страницы с увеличением номера транзакции;
|
||||||
|
* Устранение вывода (логирования) бессмысленного/лишнего предупреждения о пропуске обновления геометрии БД;
|
||||||
|
* Более ожидаемое и безопасное поведение при проверке БД с указанием целевой мета-страницы в режиме чтения-записи.
|
||||||
|
|
||||||
|
Теперь при открытии БД посредством `mdbx_env_open_for_recovery()` не
|
||||||
|
выполняется неявное изменение/обновление БД, в том числе при закрытии
|
||||||
|
БД. Это позволяет обезопасить БД (снизить шанс её разрушения) если
|
||||||
|
пользователь при попытке восстановления, либо просто в качестве
|
||||||
|
эксперимента, задал утилите `mdbx_chk` неверную или опасную комбинацию
|
||||||
|
параметров. При этом обычная проверка, как и явное переключение
|
||||||
|
мета-страниц, работают по-прежнему.
|
||||||
|
|
||||||
Мелочи:
|
Мелочи:
|
||||||
|
|
||||||
- Незначительное уточнение CMake-пробника для `std::filesystem`,
|
- Незначительное уточнение CMake-пробника для `std::filesystem`,
|
||||||
@ -17,7 +72,8 @@ and [by Yandex](https://translated.turbopages.org/proxy_u/ru-en.en/https/gitflic
|
|||||||
- Устранение причины ложно-позитивного предупреждения новых версий GCC в C++ API.
|
- Устранение причины ложно-позитивного предупреждения новых версий GCC в C++ API.
|
||||||
- Исправление ссылки на репозиторий бенчмарка ioarena.
|
- Исправление ссылки на репозиторий бенчмарка ioarena.
|
||||||
- Добавление перекрестных ссылок в doxygen-документацию по C++ API.
|
- Добавление перекрестных ссылок в doxygen-документацию по C++ API.
|
||||||
- уточнение ограничений в разделе [Restrictions & Caveats](https://libmdbx.dqdkfa.ru/intro.html#restrictions).
|
- Уточнение ограничений в разделе [Restrictions & Caveats](https://libmdbx.dqdkfa.ru/intro.html#restrictions).
|
||||||
|
- Исправление ссылок на описание `mdbx_canary_put()`.
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
@ -372,7 +428,7 @@ Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>
|
|||||||
суммарный размер пары ключ-значение.
|
суммарный размер пары ключ-значение.
|
||||||
|
|
||||||
- Реализовано использование асинхронной (overlapped) записи в Windows,
|
- Реализовано использование асинхронной (overlapped) записи в Windows,
|
||||||
включая использования небуфферизированного ввода-вывода и `WriteGather()`.
|
включая использования небуферизированного ввода-вывода и `WriteGather()`.
|
||||||
Это позволяет сократить накладные расходы и частично обойти проблемы
|
Это позволяет сократить накладные расходы и частично обойти проблемы
|
||||||
Windows с низкой производительностью ввода-вывода, включая большие
|
Windows с низкой производительностью ввода-вывода, включая большие
|
||||||
задержки `FlushFileBuffers()`. Новый код также обеспечивает консолидацию
|
задержки `FlushFileBuffers()`. Новый код также обеспечивает консолидацию
|
||||||
|
Loading…
x
Reference in New Issue
Block a user