mirror of
https://github.com/isar/libmdbx.git
synced 2024-10-29 23:19:20 +08:00
edfa526138
Падение происходило в случае когда: - Некоторый процесс увеличивал размер БД с изменением геометрии (с увеличением предельного размера БД и её отображения в ОЗУ), затем задействовал страницу из добавленного сегмента в качестве корневой для FreeDB/GC и/или MainDB и фиксировал транзакцию. - Другой процесс, уже работавший с БД до изменения геометрии первым процессом, запускал транзакцию чтения. Падение происходило при проверке «когерентности» отображения страниц БД в ОЗУ, при проверке отметок модификации внутри корневых страниц, так как в этом случае они были вне границ текущего отображения БД в адресном пространстве этого процесса. Похоже что в ходе какого-то рефакторинга потерялась соответствующая проверка. Этот коммит добавляет её как временное решение, до переноса проверки «когерентности» после изменения размера отображения (добавлено в TODO).
3.0 KiB
3.0 KiB
TODO
Unfortunately, on 2022-04-15 the Github administration, without any
warning nor explanation, deleted libmdbx along with a lot of other
projects, simultaneously blocking access for many developers. Therefore
on 2022-04-21 we have migrated to a reliable trusted infrastructure.
The origin for now is atGitFlic
with backup at ABF by ROSA Лаб.
For the same reason Github is blacklisted forever.
So currently most of the links are broken due to noted malicious Github sabotage.
- Внутри
txn_renew()
вынести проверку когерентности mmap за/после изменение размера. - Migration guide from LMDB to MDBX.
- Support for RAW devices.
- Support MessagePack for Keys & Values.
- Packages for Astra Linux, ALT Linux, ROSA Linux, etc.
Done
- Engage new terminology.
- More flexible support of asynchronous runtime/framework(s).
- Move most of
mdbx_chk
functional to the library API. - Simple careful mode for working with corrupted DB.
- Engage an "overlapped I/O" on Windows.
- Large/Overflow pages accounting for dirty-room.
- Get rid of dirty-pages list in MDBX_WRITEMAP mode.
Canceled
- Replace SRW-lock on Windows to allow shrink DB with
MDBX_NOSTICKYTHREADS
option. Доработка не может быть реализована, так как замена SRW-блокировки лишает лишь предварительную проблему, но не главную. На Windows уменьшение размера отображенного в память файла не поддерживается ядром ОС. Для этого необходимо снять отображение, изменить размер файла и затем отобразить обратно. В свою очередь, для это необходимо приостановить работающие с БД потоки выполняющие транзакции чтения, либо готовые к такому выполнению. Но в режиме MDBX_NOSTICKYTHREADS нет возможности отслеживать работающие с БД потоки, а приостановка всех потоков неприемлема для большинства приложений.