828 Commits

Author SHA1 Message Date
Леонид Юрьев (Leonid Yuriev)
957c99d86f mdbx: добавление MDBX_opt_prefault_write_enable вместо MDBX_ENABLE_PREFAULT. 2022-12-12 18:54:03 +03:00
Леонид Юрьев (Leonid Yuriev)
b959e217b1 mdbx: рефакторинг обработки установки опций в значения по-умолчанию. 2022-12-12 18:54:03 +03:00
Леонид Юрьев (Leonid Yuriev)
54b15d7e41 mdbx: определение in-core БД (в tmpfs/ramfs/mfs) с отключением prefault-write.
Это вынужденный читинг для "починки" сравнительных бенчмарков при
размещении БД в /dev/shm.

Проблема в том, что актуальные ядра Linux для файлов размещенных в tmpfs
возвращают mincore=false. В результате, в простейших бенчмарках видно
двукратное снижение производительности, просто из-за вызовов write()
выполняемых для prefault.

Из-за этого, в таких синтетических тестах, новая libmdbx становится
существенно медленнее предыдущих версий, в том числе LMDB.
2022-12-12 18:54:03 +03:00
Леонид Юрьев (Leonid Yuriev)
1c93cff825 mdbx: дополнительные условия для prefault-write. 2022-12-11 00:14:40 +03:00
Леонид Юрьев (Leonid Yuriev)
1ae6a398ed mdbx-windows: исправление утечки overlapped-дескриптора. 2022-12-10 14:44:15 +03:00
Леонид Юрьев (Leonid Yuriev)
4ee8fff305 mdbx: +1 к подготавливаемому резерву в вырожденных случаях перед обновлением GC. 2022-12-09 19:18:17 +03:00
Леонид Юрьев (Leonid Yuriev)
1bb41ee8fc mdbx: отключение "экономии последовательностей" посредством MDBX_ENABLE_SAVING_SEQUENCES=0. 2022-12-09 18:07:16 +03:00
Леонид Юрьев (Leonid Yuriev)
a572902fde mdbx: автоматическая установка rp_augment_limit в "золотое сечение" от размера БД. 2022-12-09 18:07:16 +03:00
Леонид Юрьев (Leonid Yuriev)
ebc4976acb mdbx: перенос обновления geo-размера в map_resize(). 2022-12-09 18:07:16 +03:00
Леонид Юрьев (Leonid Yuriev)
fd7aaf5f35 mdbx: добавление ошибки MDBX_BACKLOG_DEPLETED и соответствующей логики в page_alloc_slowpath(). 2022-12-09 18:07:16 +03:00
Леонид Юрьев (Leonid Yuriev)
4b27c4c7c9 mdbx: предварительное вычисление me_maxgc_per_branch. 2022-12-08 16:29:18 +03:00
Леонид Юрьев (Leonid Yuriev)
3a77af7d8a mdbx: оптимизация поддержки сортировки в dpl_append(). 2022-12-07 00:06:07 +03:00
Леонид Юрьев (Leonid Yuriev)
a9163f6307 mdbx: доработка внутренних LRU-отметок для аккуратного спиллинга огромных транзакций. 2022-12-07 00:06:07 +03:00
Леонид Юрьев (Leonid Yuriev)
48eeb93628 mdbx: исправление падения в env_close() при закрытии среды пере-открытой в режиме только-для-чтения.
Ошибка не была замечена ранее из-за много-ходового сценария воспроизведения:
 1. Создаём экземпляр MDBX_env посредством mdbx_env_create();
 2. Пытаемся открыть БД посредством mdbx_env_open() в режиме
    чтения-записи и эта попытка должны быть неудачной;
 3. Не освобождая экземпляр MDBX_env повторно открываем его в режиме
    только-чтение;
 4. Закрываем среду посредством mdbx_env_close().

Падение происходит на пункте 4, либо на пункте 3, если попытка
повторного открытия будет не успешной.

Причина в том, что внутренний экземпляр osal_ioring_t инициализировался
только для режимов чтения-записи, а разрушался всегда. При этом после
первого разрушения намеренно оставался в состоянии вызывающем падение
при использовании без инициализации.

[Simon Leier](https://t.me/leisim) сообщал об этой проблеме (теперь
понятно что это было), но из-за сложности сценария проблему не удалось
воспроизвести и идентифицировать.
2022-12-05 20:46:51 +03:00
Леонид Юрьев (Leonid Yuriev)
a772a9d3e1 mdbx: добавление проверки посредством mincore() с кэшированием присутствия страниц в памяти (опция сборки MDBX_ENABLE_MINCORE). 2022-12-05 10:41:05 +03:00
Леонид Юрьев (Leonid Yuriev)
be3ff92772 mdbx: предотвращение бесполезных page-faults в режиме MDBX_WRITEMAP (опция сборки MDBX_ENABLE_PREFAULT). 2022-12-05 10:03:00 +03:00
Леонид Юрьев (Leonid Yuriev)
dc27d5d30a mdbx: рефакторинг с формированием page_alloc_finalize() и сокрашением метрик MDBX_ENABLE_PROFGC. 2022-12-04 18:24:30 +03:00
Леонид Юрьев (Leonid Yuriev)
48a56d1d05 mdbx: запрещение разного MDBX_WRITEMAP между процессами в режимах с отложенной/ленивой записью.
Ранее упущенный не очевидный момент: При работе БД в режимах
не-синхронной/отложенной фиксации на диске, все процессы-писатели должны
иметь одинаковый режим MDBX_WRITEMAP.

В противном случае, сброс на диск следует выполнять дважды: сначала
msync(), затем fdatasync(). При этом msync() не обязан отрабатывать в
процессах без MDBX_WRITEMAP, так как файл в память отображен только для
чтения. Поэтому, в общем случае, различия по MDBX_WRITEMAP не позволяют
выполнить фиксацию данных на диск, после их изменения в другом процессе.

В режиме MDBX_UTTERLY_NOSYNC позволять совместную работу с MDBX_WRITEMAP
также не следует, поскольку никакой процесс (в том числе последний) не
может гарантированно сбросить данные на диск, а следовательно не должен
помечать какую-либо транзакцию как steady.

В результате, требуется либо запретить совместную работу процессам с
разным MDBX_WRITEMAP в режиме отложенной записи, либо отслеживать такое
смешивание и блокировать steady-пометки - что контрпродуктивно.
2022-12-04 18:10:54 +03:00
Леонид Юрьев (Leonid Yuriev)
23d236f70e mdbx: добавление MDBX_opt_writethrough_threshold и сопутствующие доработки. 2022-12-04 13:41:50 +03:00
Леонид Юрьев (Leonid Yuriev)
822952ef01 mdbx: внутреннее переименование MDBX_SYNC_KICK (косметика). 2022-12-04 13:41:50 +03:00
Леонид Юрьев (Leonid Yuriev)
9f2d30c1a9 mdbx: изменение размера отображения внутри env_sync() если это требуется для сброса данных на диск. 2022-12-04 13:41:32 +03:00
Леонид Юрьев (Leonid Yuriev)
163486fa3a mdbx: добавление FIXME для MDBX_NOMETASYNC. 2022-12-01 03:00:40 +03:00
Леонид Юрьев (Leonid Yuriev)
512e6dbd08 mdbx: отключение безусловного предпочтения записи через дескриптор с O_DSYNC.
Требуется переработка = динамический выбор между write(O_DSYNC) и write()+fdatasync(),
в зависимости от количества записываемых линейных фрагментов.
2022-12-01 02:59:28 +03:00
Леонид Юрьев (Leonid Yuriev)
2776480f18 mdbx: оптимизация pnl_merge() для случаев неперекрывающихся объединяемых списков. 2022-11-29 02:50:34 +03:00
Леонид Юрьев (Leonid Yuriev)
01a39e7dc2 mdbx: добавление и использование ptr_disp() и ptr_dist().
Для уменьшения кастинга типов указателей и потенциальной нагрузки оптимизатора/кодогенератора алиасингом.
2022-11-29 02:50:34 +03:00
Леонид Юрьев (Leonid Yuriev)
8c74de57ea mdbx: исправление txn_commit() для случаев конкурентных и/или неверных вызовов при MDBX_ENABLE_PROFGC=1. 2022-11-28 23:56:42 +03:00
Леонид Юрьев (Leonid Yuriev)
05804e2f30 mdbx: доработка/оптимизация page_retire_ex(). 2022-11-28 23:56:42 +03:00
Леонид Юрьев (Leonid Yuriev)
7685b4080e mdbx: исправление возврата и подсчета "грязных" страниц в режиме MDBX_WRITEMAP.
Исправление регрессии после коммита db72763de049d6e4546f838277fe83b9081ad1de.

После отключения затратой поддержки списка "грязных" страниц логика
page_retire_ex() оказалась не полной и требовала доработки. Из-за этого
страницы добавленные или клонированные-и-измененные в текущей
транзакции, которые становились не нужными, не возвращались к доступным
для немедленного использования, а помещались в retired-список
становящихся доступными в последующих транзакциях.

В результате, в некоторых сценариях, особенно с интенсивным расщеплением
страниц из-за вставки ключей, происходило необоснованно сильное
потребление/выделение страниц БД. В свою очередь, это приводило к
использованию излишнего кол-ва страниц, увеличению GC, росту RSS и
размеру БД.
2022-11-28 23:56:42 +03:00
Леонид Юрьев (Leonid Yuriev)
c521a21f05 mdbx: перемещение mp_next в заголовке страницы для отделения от mp_txnid. 2022-11-28 23:56:42 +03:00
Леонид Юрьев (Leonid Yuriev)
07674ada47 mdbx: доработка подготовки резерва перед обновлением GC при включенном BigFoot. 2022-11-28 15:51:36 +03:00
Леонид Юрьев (Leonid Yuriev)
3757eb72f7 mdbx: экономия последовательностей при выделении одиночных страниц. 2022-11-28 15:51:36 +03:00
Леонид Юрьев (Leonid Yuriev)
30972102e5 mdbx: исправление сборки при MDBX_PNL_ASCENDING=1. 2022-11-25 19:03:05 +03:00
Леонид Юрьев (Leonid Yuriev)
61eafe80c1 mdbx: использование https://libmdbx.dqdkfa.ru/dead-github для удаленных issues. 2022-11-23 01:18:25 +03:00
Леонид Юрьев (Leonid Yuriev)
a1333fc827 mdbx: fix SIGSEGV/invalid-deref/invalid-free inside env_close() when mdbx_env_open() failed in re-open case.
Thanks to [@leisim](https://t.me/leisim) for [reporting](https://t.me/libmdbx/3946) this issue.
2022-11-23 00:57:02 +03:00
Леонид Юрьев (Leonid Yuriev)
da023657f5 mdbx: переработка внутренних флагов связанных с выделением страниц из GC. 2022-11-23 00:56:09 +03:00
Леонид Юрьев (Leonid Yuriev)
141cce0c0f mdbx: использование size_t для npages (косметика). 2022-11-23 00:56:09 +03:00
Леонид Юрьев (Leonid Yuriev)
12ed2bcfbd mdbx: использование единого курсора для поиска в GC. 2022-11-23 00:56:09 +03:00
Леонид Юрьев (Leonid Yuriev)
543e52730d mdbx: доработка поддержки авто-слияния записей GC внутри page_alloc_slowpath(). 2022-11-19 23:19:30 +03:00
Леонид Юрьев (Leonid Yuriev)
4a257133cb mdbx: устранение несущественных предупреждений Coverity. 2022-11-19 19:36:30 +03:00
Леонид Юрьев (Leonid Yuriev)
f73cd7a491 mdbx: упрощение page_alloc_slowpath().
Упрощение за счет удаления проверки флага `MDBX_ALLOC_GC`,
который всегда взведен при вызове page_alloc_slowpath().
2022-11-19 19:36:30 +03:00
Леонид Юрьев (Leonid Yuriev)
3e05d1a427 mdbx: оптимизация page_copy() для LEAF2 и добавление параноидального контроля от переполнения. 2022-11-19 19:36:30 +03:00
Леонид Юрьев (Leonid Yuriev)
e518edcfed mdbx: унифицирование инициализации mp_txnid внутри page_dirty(). 2022-11-19 19:36:30 +03:00
Леонид Юрьев (Leonid Yuriev)
3563ed00e3 mdbx: использование не-спаренного курсора и gc_cursor_init() внутри update_gc(). 2022-11-19 19:36:30 +03:00
Леонид Юрьев (Leonid Yuriev)
6c840cf58e mdbx: подсчет грязных страниц в режиме MDBX_WRITEMAP для статистики. 2022-11-19 19:36:30 +03:00
Леонид Юрьев (Leonid Yuriev)
3704433aa9 mdbx: минорное удаление мертвого/ненужного кода из page_alloc_slowpath(). 2022-11-10 16:34:23 +03:00
Леонид Юрьев (Leonid Yuriev)
70e8006776 mdbx-docs: перенаправление github-ссылок на web-archive. 2022-11-10 15:54:31 +03:00
Леонид Юрьев (Leonid Yuriev)
2dfdac2821 mdbx-windows: повтор чтения заголовка при ERROR_LOCK_VIOLATION. 2022-11-08 23:32:34 +03:00
Леонид Юрьев (Leonid Yuriev)
c270306580 mdbx-windows: уточнение проверок макросов MinGW и устранение предупреждений. 2022-11-08 20:39:44 +03:00
Леонид Юрьев (Leonid Yuriev)
3ee223514d mdbx: очистка readers_refresh_flag для page_alloc_slowpath(). 2022-11-07 14:16:59 +03:00
Леонид Юрьев (Leonid Yuriev)
f7f94bb698 mdbx: чуть больше const для прозрачности. 2022-11-07 14:16:35 +03:00
Леонид Юрьев (Leonid Yuriev)
f0c6aa4646 mdbx: workaround for false-positives from Valgrind bug. 2022-11-07 00:47:16 +03:00
Леонид Юрьев (Leonid Yuriev)
771c85a880 mdbx: уточнение txn_space_dirty в соответствии с обновленным учетом грязных страниц. 2022-11-07 00:44:38 +03:00
Леонид Юрьев (Leonid Yuriev)
4f1f9141f4 mdbx: добавление MDBX_ENABLE_PGOP_STAT и MDBX_ENABLE_PROFGC во внутреннюю строку с опциями сборки. 2022-11-07 00:44:38 +03:00
Леонид Юрьев (Leonid Yuriev)
f680c99116 mdbx: переделка page_alloc_slowpath() с добавлением профилирования GC. 2022-11-07 00:44:37 +03:00
Леонид Юрьев (Leonid Yuriev)
acaa1d82d9 mdbx: minor touch assertions for issue#7.
https://gitflic.ru/project/erthink/libmdbx/issue/7
2022-11-05 14:06:00 +03:00
Леонид Юрьев (Leonid Yuriev)
47e7a646fd mdbx: переделка отслеживания mlocks для игнорирования EINVAL от madvise(). 2022-11-05 14:06:00 +03:00
Леонид Юрьев (Leonid Yuriev)
d4e67d14ce mdbx: исправление неожиданного MDBX_BUSY из mdbx_env_set_option(). 2022-11-03 17:23:32 +03:00
Леонид Юрьев (Leonid Yuriev)
28e2e31949 mdbx: выделение специфической инициализации в osal_ctor(). 2022-11-02 11:09:32 +03:00
Леонид Юрьев (Leonid Yuriev)
d661d4bac7 mdbx: добавление mdbx_env_warmup() 2022-10-24 11:37:57 +03:00
Леонид Юрьев (Leonid Yuriev)
4e95a079ee mdbx: переименование MDBX_COMMIT_PAGES в MDBX_AUXILARY_IOV_MAX. 2022-10-22 11:12:52 +03:00
Леонид Юрьев (Leonid Yuriev)
753fa13048 mdbx: удаление лишних комментариев. 2022-10-22 11:12:52 +03:00
Леонид Юрьев (Leonid Yuriev)
8833dc6871 mdbx: костыль для обхода ошибок encryptfs.
Выяснилось что утилита `mdbx_copy` и функции `mdbx_env_copy()` могут
создавать ПРОБЛЕМЫ если целевой файл расположен в encryptfs (такая
файловая система в Linux).

При этом может быть четыре исхода в зависимости от версии ядра и
положения звезд на небе:
 - всё хорошо;
 - плохие данные в копии без возврата ошибок;
 - ошибка EINVAL(22) при копировании;
 - oops или зависание ядра, отвал смонтированной encryptfs и т.п.

В текущем понимании, причина обусловлена ошибой в коде fs, которая
проявляется при использовании системного вызова `copy_file_range`.
2022-10-22 01:38:33 +03:00
Леонид Юрьев (Leonid Yuriev)
6c986ce904 mdbx: костыль для старых версий stdatomic.h, где макросы ATOMIC_*_LOCK_FREE ошибочно переопределяются через функции. 2022-10-13 19:28:01 +03:00
Леонид Юрьев (Leonid Yuriev)
d94e65b870 mdbx: использование fcntl64(F_GETLK64/F_SETLK64/F_SETLKW64) при наличии.
Это решает проблему срабатывания проверочного утверждения при сборке для
платформ где тип off_t шире соответствующих полей структуры flock,
используемой для блокировки файлов.
2022-10-12 21:25:18 +03:00
Леонид Юрьев (Leonid Yuriev)
5a45c4a210 mdbx-windows: удаление ненужного вызова LockFileEx() внутри mdbx_env_copy(). 2022-10-12 21:25:18 +03:00
Леонид Юрьев (Leonid Yuriev)
686c908a95 mdbx: более осторожное преобразование к типу mdbx_tid_t для устранения предупреждений. 2022-10-12 21:25:18 +03:00
Леонид Юрьев (Leonid Yuriev)
e5fc056035 mdbx: изменение формата LCK и семантики некоторых внутренних полей.
Изменение формата LCK-файла означает что версии libmdbx использующие
разный формат не смогут работать с одной БД одновременно, а только
поочередно (LCK-файл переписывается при открытии первым открывающим БД
процессом).

1. Поле mti_unsynced_pages теперь 64-битное (чтобы не контролировать
переполнение) и перемещено для соблюдения выравнивания.

2. Поле mti_sync_timestamp переименовано в mti_eoos_timestamp
одновременно со сменой семантики. Теперь время отсчитывается не от
момента сброса данных на диск, а с момента входа в «грязное» состояние.

Скорее всего, текущая версия формата LCK не окончательная
и изменится до релиза.
2022-10-12 21:25:18 +03:00
Леонид Юрьев (Leonid Yuriev)
5242c5bfdc mdbx: улучшение эвристики включения авто-слияния записей GC. 2022-10-10 21:06:33 +03:00
Леонид Юрьев (Leonid Yuriev)
329af93436 mdbx: уменьшение в 42 раза значения по-умолчанию для me_options.dp_limit в отладочных сборках. 2022-10-10 19:26:38 +03:00
Леонид Юрьев (Leonid Yuriev)
22a84d656b mdbx: проверка атомарности C11-операций c 32/64-битными данными. 2022-10-10 19:24:14 +03:00
Леонид Юрьев (Leonid Yuriev)
c3dd60fcb6 mdbx: добавление mdbx_env_get_pairsize4page_max() и mdbx_env_get_valsize4page_max(). 2022-10-10 16:33:51 +03:00
Леонид Юрьев (Leonid Yuriev)
92d203a12c mdbx: исправление ложного срабатывания контроля "invalid page-address" в page_check().
При проверке использовалось глобальное значение me_dxb_mmap.current,
к которому не должны обращаться читающие транзакции. В результате,
в сложных много-поточных сценариях с изменением размера БД и её
переполнением, проверка могла выдавать ложно-положительный результат.

С точки зрения пользователя, ошибка могла проявляться как возврат
`MDBX_CORRUPTED` из читающей транзакции, когда включен "безопасный
режим" (дополнительный контроль), а в параллельной пишущей транзакции
происходит увеличение размера БД с последующим переполнением и откатом
этой транзакции. При этом никакого повреждения структуры БД нет.
2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
ad09164604 mdbx: минорное исправление для устранения срабатывания проверочного утверждения в отладочных сборках.
Ассерт мог срабатывать из-за отсутствия бита P_LEAF2 в передаваемом проверочном значении.
На что-либо другое не влияло, но не следует понять почему этот недочет ны был выявлен тестами раньше.
2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
db72763de0 mdbx: отключение учета грязных страниц в не требующих этого режимах.
В режиме MDBX_WRITEMAP с опцией сборки MDBX_AVOID_MSYNC=0 отслеживание грязных страниц не требуется.
Эта доработка устраняет еще одну  из недоделок (пункт в TODO).
2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
940ef30659 mdbx: спиллинг грязных страниц с учетом их суммарного размера. 2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
f6eec7195b mdbx: защита от нуля только общей задержки в метриках транзакции.
Ранее, при конвертации очень коротких интервалов в формат фиксированной
точки 16-точка-16, всегда выполнялось замещение нуля единицей. Т.е. если
интервал был не нулевым, но меньше 15.259 микросекунд (1/65536 секунды),
то вместо 0 возвращалось 1.

Это приводило к тому, что сумма длительности отдельных стадий нередко
была больше чем общее время фиксации транзакции. Проблема усугублялась,
если получаемые значения аккумулировались по серии транзакций.

Теперь такая защита от нуля выполняется только для общего времени,
но не для отдельных стадий.

Было:
	latency(ms): preparation=72.69 gc=72.69 write=73.04 sync=141.40 ending=72.69 whole=142.14
	Аккумулированная сумма длительности этапов ВТРОЕ(!) больше общей длительности.

Стало:
	latency(ms): preparation=0.00 gc=0.02 write=0.79 sync=67.98 ending=0.00 whole=140.81
	Аккумулированная сумма длительности этапов меньше общей длительности,
	так как для каждой транзакции общая длительность возвращается не менее 15.259 микросекунд.
2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
92dabe1ad1 mdbx: исправление лишнего сброса данных на диск в режиме MDBX_SAFE_NOSYNC при обновлении GC. 2022-10-10 13:56:57 +03:00
Leonid Yuriev
0f7e5073db mdbx: поправлен сбор информации о задержках, чтобы включенный аудит не искажал затраты на GC. 2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
24d7a4d605 mdbx: добавлено описание использования файловых дескрипторов в различных режимах. 2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
a95ee8daa3 mdbx: минорная доработка mdbx_env_create(). 2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
6eeb08de46 mdbx: использование mdbx_panic() вместо __assert_fail() в ряде внутренних проверок. 2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
66f2e3d596 mdbx: добавление в API функций mdbx_limits_pairsize4page_max() и mdbx_limits_valsize4page_max() с сопутствующими доработками. 2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
143e3dfb77 mdbx: преимущественное использование size_t для уменьшения накладных расходов на платформе Эльбрус. 2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
375fa3a225 mdbx: небольшая чистка dlist_free(). 2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
2236b90567 mdbx: добавлена опция сборки MDBX_AVOID_MSYNC (объединённые коммиты и исправления). 2022-10-10 13:56:42 +03:00
Леонид Юрьев (Leonid Yuriev)
8aeb22b8bf mdbx: логирование ошибок при подготовке/записи/фиксации транзакций. 2022-10-06 20:35:26 +03:00
Леонид Юрьев (Leonid Yuriev)
474391c83c mdbx: поддержка асинхронного ввода-вывода для Windows и подготовка к io_ring (объединённые коммиты и исправления). 2022-10-06 20:35:07 +03:00
Леонид Юрьев (Leonid Yuriev)
9f64e2a10c mdbx: правка спилинга для устранения срабатывания проверочных утверждений в отладочных сборках. 2022-10-01 01:38:08 +03:00
Леонид Юрьев (Leonid Yuriev)
41b918f1fc mdbx: исправление проверочного утверждения внутри mdbx_txn_abort() для ошибочных транзакций. 2022-10-01 01:35:08 +03:00
Леонид Юрьев (Leonid Yuriev)
00515d50a9 mdbx: исправление проверочного утверждения в page_retire_ex(). 2022-10-01 01:33:48 +03:00
Леонид Юрьев (Leonid Yuriev)
32a3674dc8 mdbx: return MDBX_PROBLEM insted of MDBX_CORRUPTED on coherence troubles. 2022-09-22 19:48:44 +03:00
Леонид Юрьев (Leonid Yuriev)
beda291692 mdbx-windows: fix nasty clz() (i.e. using _BitScanReverse() bug. 2022-09-22 18:27:28 +03:00
Леонид Юрьев (Leonid Yuriev)
fe20de136c mdbx: require linux >= 4.0 2022-09-22 18:27:23 +03:00
Леонид Юрьев (Leonid Yuriev)
cf8540d84e mdbx: minor refine mdbx_env_create(). 2022-09-22 18:26:28 +03:00
Леонид Юрьев (Leonid Yuriev)
bec9312df5 mdbx: more off/on for clang-format. 2022-09-22 17:06:32 +03:00
Леонид Юрьев (Leonid Yuriev)
a089f73002 mdbx: fix minor MinGW warning. 2022-09-13 11:39:55 +03:00
Леонид Юрьев (Leonid Yuriev)
2d5438d2c2 mdbx: fix regression ASAN/Valgring-enabled builds. 2022-09-06 13:03:04 +03:00
Леонид Юрьев (Leonid Yuriev)
52cb6b90a7 mdbx: fix extra check for MDBX_APPENDDUP. 2022-09-02 02:02:33 +03:00
Леонид Юрьев (Leonid Yuriev)
2d7c25b263 mdbx: minor fix extra ensure/assertion check of oldest_reader inside txn_end(). 2022-09-02 01:46:11 +03:00
Леонид Юрьев (Leonid Yuriev)
b73727d73e mdbx: add MDBX_HAVE_BUILTIN_CPU_SUPPORTS build option. 2022-08-26 19:17:09 +03:00