Основной репозиторий проекта перемещен на
https://gitflic.ru/project/erthink/libmdbx, так как 15 апреля
2022 администрация Github без предупреждения и без объяснения
причин удалила libmdbx вместе с массой других проектов,
одновременно заблокировав доступ многим разработчикам. По той
же причине Github навсегда занесен в черный список.
На случай если это была случайность или ошибка мы ждали 5
суток (три рабочих дня), но чуда не случилось. Github умер, как
и многие декларируемые либеральные ценности (свобода слова,
презумпция невиновности и право на суд, неприкосновенность
личности и частной собственности и т.д.).
---
The origin repository of the project has been moved to
https://gitflic.ru/project/erthink/libmdbx since on April 15,
2022, the Github administration, without warning and without
explanation, deleted libmdbx along with a lot of other
projects, simultaneously blocking access to many developers.
For the same reason Github is blacklisted forever.
In case it was an accident or a mistake, we waited 5 days
(three working days), but no miracle happened. So Github is
died, as well as many declared liberal values (freedom of
speech, presumption of innocence and right to trial,
inviolability of the person and private property, etc).
Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>
Fixes https://github.com/ledgerwatch/erigon/issues/3874.
This was a minor regression after the c4a5325aaf
that affects only debug builgs (with enabled assertions) and only when the added
code catch a incoherency of unified page/buffer cache.
The error was that the array of pointers in the transaction zeroed by the
value of env->me_numdbs and before txn->mt_numdbs was set to env->me_numdbs.
Thus, a cursor pointer(s) in the starting transaction could uninitialized if
another thread opened a dbi-handle(s) between the two aforementioned events.
The stable release with the complete workaround for an incoherence flaw of Linux unified page/buffer cache.
Nonetheless the cause for this trouble may be an issue of Intel CPU cache/MESI.
See [issue#269](https://github.com/erthink/libmdbx/issues/269) for more information.
Acknowledgements:
-----------------
- [David Bouyssié](https://github.com/david-bouyssie) for [Scala bindings](https://github.com/david-bouyssie/mdbx4s).
- [Michelangelo Riccobene](https://github.com/mriccobene) for reporting and testing.
Fixes:
------
- [Added complete workaround](https://github.com/erthink/libmdbx/issues/269) for an incoherence flaw of Linux unified page/buffer cache.
- [Fixed](https://github.com/erthink/libmdbx/issues/272) cursor reusing for read-only transactions.
- Fixed copy&paste typo inside `mdbx::cursor::find_multivalue()`.
Minors:
-------
- Minor refine C++ API for convenience.
- Minor internals refines.
- Added `lib-static` and `lib-shared` targets for make.
- Added minor workaround for AppleClang 13.3 bug.
- Clarified error messages of a signature/version mismatch.
Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>