4543 Commits

Author SHA1 Message Date
Леонид Юрьев (Leonid Yuriev)
0a9c9840da mdbx-tests: существенное расширение extra/cursor-closing (backport). 2025-03-20 01:47:56 +03:00
Леонид Юрьев (Leonid Yuriev)
9c177de034 mdbx-tests: дополнение extra/txn (backport). 2025-03-20 01:47:24 +03:00
Леонид Юрьев (Leonid Yuriev)
5f37ea60d2 mdbx++: проверка __cpp_concepts >= 202002 для использования концептов C++ (backport). 2025-03-20 01:46:43 +03:00
Леонид Юрьев (Leonid Yuriev)
c457804fad mdbx: исправление затенения курсоров во вложенных транзакциях (backport). 2025-03-20 01:46:13 +03:00
Леонид Юрьев (Leonid Yuriev)
6c036add8b mdbx: переработка проверки курсоров на входе API-функций с добавлением cursor_check() (backport). 2025-03-20 01:44:20 +03:00
Леонид Юрьев (Leonid Yuriev)
5fd319bbc2 mdbx: переработка mdbx_txn_release_all_cursors_ex() (backport). 2025-03-20 01:42:50 +03:00
Леонид Юрьев (Leonid Yuriev)
682233ba28 mdbx++: переформатирование (временно) неиспользуемого кода (backport). 2025-03-20 01:41:58 +03:00
Леонид Юрьев (Leonid Yuriev)
c5936eb5da mdbx++: удаление исключения при запросе транзакции у отсоединённого курсора (backport). 2025-03-20 01:41:32 +03:00
Леонид Юрьев (Leonid Yuriev)
d8890bc169 mdbx++: добавление inplace_storage_size_rounding в capacity_policy для буферов (backport). 2025-03-20 01:41:05 +03:00
Леонид Юрьев (Leonid Yuriev)
73d52c1963 mdbx++: добавление mdbx::cursor_managed::withdraw_handle() (backport). 2025-03-20 01:40:41 +03:00
Леонид Юрьев (Leonid Yuriev)
58729a2fbd mdbx: корректировка описания MDBX_MVCC_RETARDED и соответствующего сообщения об ошибке (backport). 2025-03-20 01:40:11 +03:00
Леонид Юрьев (Leonid Yuriev)
5dfe3433a8 mdbx: устранение гонки в tbl_setup(MDBX_DUPFIXED | MDBX_INTEGERDUP) при работе в разных потоках (backport).
Проблема была в том, что в случаях фиксированного размера значений
clc.lmin/clc.lmax устанавливались в env->kvs[], а затем корректировались
по актуальному размеру данных в БД. Поэтому при конкурентном вызове из
разных потоков, один поток мог выполнять инициализацию, а второй
прочитать временные/промежуточные значения lmin/lmax.

В результате, при конкурентном старте транзакций в разных потоках при
использовании только-что открытого dbi-хендла, проверка допустимости
длины значения могла заканчиваться ложной ошибкой MDBX_BAD_VALSIZE.
2025-03-20 01:24:34 +03:00
Леонид Юрьев (Leonid Yuriev)
1720762080 mdbx: переименование cursor_validate() (backport). 2025-03-20 01:24:30 +03:00
Леонид Юрьев (Leonid Yuriev)
91570a084f mdbx: добавление MDBX_SEEK_AND_GET_MULTIPLE в API операций курсора (backport). 2025-03-20 01:17:47 +03:00
Леонид Юрьев (Leonid Yuriev)
0fff8d0704 mdbx-doc: doxygen-описания для doubtless-positioning констант (backport). 2025-03-20 01:17:11 +03:00
Леонид Юрьев (Leonid Yuriev)
484b488f92 mdbx-tests: добавление поддержки опции MDBX_VALIDATION и использование в стохастическом тесте (backport). 2025-03-20 01:16:48 +03:00
Леонид Юрьев (Leonid Yuriev)
2fbdaccf60 mdbx-tests: поддержка значений on/off для опций командной строки (backport). 2025-03-20 01:15:53 +03:00
Леонид Юрьев (Leonid Yuriev)
753b2270fd mdbx: добавление mdbx_cursor_close2() в API (backport). 2025-03-20 01:14:34 +03:00
Леонид Юрьев (Leonid Yuriev)
33ceba0a5a mdbx: добавление cursor_reset() и cursor_drown() (backport). 2025-03-20 01:13:44 +03:00
Леонид Юрьев (Leonid Yuriev)
2476fba287 mdbx: рефакторинг cursor_eot() для упрощения txn_done_cursors() (backport). 2025-03-20 01:12:59 +03:00
Леонид Юрьев (Leonid Yuriev)
2b6a768750 mdbx: косметический рефакторинг cursor_shadow() (backport). 2025-03-20 01:12:15 +03:00
Леонид Юрьев (Leonid Yuriev)
b6dcdcf2dc mdbx: запрещение unbind/close курсоров для вложенных транзакций (backport). 2025-03-20 01:10:11 +03:00
Леонид Юрьев (Leonid Yuriev)
175e4a2e1b mdbx: проверка владельца потока владеющего транзакцией только при MDBX_TXN_CHECKOWNER=ON (backport). 2025-03-20 01:06:56 +03:00
Леонид Юрьев (Leonid Yuriev)
f9d7eb5525 mdbx-doc: актуализация раздела MacOS в README (backport). 2025-03-20 01:01:05 +03:00
Леонид Юрьев (Leonid Yuriev)
69895e2b55 mdbx-make: поиск gnu-sed на Darwin/MacOS (backport). 2025-03-20 00:57:17 +03:00
Леонид Юрьев (Leonid Yuriev)
15bd9cfc89 mdbx: удаление const у транзакции в cursor_bind() и cursor_renew() (backport). 2025-03-20 00:52:16 +03:00
Леонид Юрьев (Leonid Yuriev)
d8f9f3ba58 mdbx: проверяем выравнивание размера БД на юнит выделения памяти, а не на размер страницы (backport).
Теоретически до этого коммита могла быть некоторая неувязка:
 - при открытии БД с размером страницы 4K на Windows (где размер секции кратен 64K) в режиме read-only,
 - после того как БД использовалась на POSIX (где размер отображения кратен размеру системной страницы).

Ранее ошибка могла возвращаться со стороны системы (например INVALID_PARAMETER) и по ней крайне сложно было понять в чем дело.
Теперь же будет логирование ошибки и возврат MDBX_WANNA_RECOVERY.
2025-03-20 00:46:45 +03:00
Леонид Юрьев (Leonid Yuriev)
4150f411dc mdbx: переработка проверка размера файла БД при открытии (backport).
Переработка 05cdf9d202b14ac09c801c7893e65271fa27f378. У предыдущего
варианта был недостаток, при необходимости выдачи предупреждения
и открытии БД с изменением геометрии, предупреждение не выдавалось,
что может затруднять анализ/разбор проблемных ситуаций.
2025-03-20 00:45:57 +03:00
Леонид Юрьев (Leonid Yuriev)
32ca9691c3 mdbx-doc: добавление ссылки на привязку к Zig (backport). 2025-03-20 00:44:54 +03:00
Леонид Юрьев (Leonid Yuriev)
4f59864ef5 mdbx-cmake: используем -flto=auto для GCC >= 11.4 (backport).
При сборке посредством GCC >= 11.4 больше не возникает предупреждений:
  lto-wrapper: warning: using serial compilation of # LTRANS jobs
  lto-wrapper: note: see the ‘-flto’ option documentation for more information

Однако, использование auto-режима не является оптимальным решением, так
как при параллельной сборке посредством make или ninja, каждая уже
запущенная ветвь компиляции породит потоки ещё для каждого ядра ЦПУ.

Таким образом реальная нагрузка может расти квадратично, т.е. чем больше
у вас ядер -- тем хуже и при 96 ядрах может работать 9216 потоков сборки.

Тем не менее, использование `job-server` в CMake пока не возможно, а при
сборке libmdbx не так много работы чтобы чтобы обрушить систему нагрузкой.
2025-03-20 00:41:13 +03:00
Леонид Юрьев (Leonid Yuriev)
f82b760b6e mdbx-cmake: избегаем двойной работы compiler.cmake без необходимости (backport). 2025-03-20 00:40:12 +03:00
Леонид Юрьев (Leonid Yuriev)
d6b359756c mdbx-cmake: расслабление условий для использования LTO с CLANG на Linux (backport). 2025-03-20 00:40:02 +03:00
Леонид Юрьев (Leonid Yuriev)
4d454d6e80 mdbx-cmake: расширение поиска LLVMgold.so в относительных lib-директориях (backport). 2025-03-20 00:35:47 +03:00
Леонид Юрьев (Leonid Yuriev)
44467d0883 mdbx-make: добавление цели ninja-assertions и её использование при make check (backport). 2025-03-20 00:30:01 +03:00
Леонид Юрьев (Leonid Yuriev)
49e6bd9296 mdbx++: использование mdbx_txn_release_all_cursors_ex() (backport). 2025-03-20 00:29:20 +03:00
Леонид Юрьев (Leonid Yuriev)
805d84480d mdbx: исправление опечатки в ChangeLog. 2025-03-05 01:44:21 +03:00
Леонид Юрьев (Leonid Yuriev)
7504a8f8f2 mdbx: обновление ChangeLog. 2025-03-04 14:47:13 +03:00
Леонид Юрьев (Leonid Yuriev)
94a2abaf31 mdbx: добавление в API mdbx_txn_release_all_cursors_ex() и изменение семантики результата mdbx_txn_release_all_cursors() (backport).
По недосмотру в выпусках остался предварительный/черновой вариант
функции mdbx_txn_release_all_cursors(), который смешивает в возвращаемом
значении информацию об ошибке/успехе и количество обработанных курсоров.
За-за чего невозможно отличить одно от другого, например ошибку EPERM на
Linux от одного успешно закрытого курсора.

Теперь mdbx_txn_release_all_cursors() возвращает только код ошибки,
а для получения кол-ва закрытых курсоров в API добавлена функция mdbx_txn_release_all_cursors_ex().
2025-03-04 14:45:13 +03:00
Леонид Юрьев (Leonid Yuriev)
0604accecf mdbx: проверка владельца потока владеющего транзакцией только при MDBX_TXN_CHECKOWNER=ON (backport). 2025-03-04 10:44:42 +03:00
Леонид Юрьев (Leonid Yuriev)
bc2f1c59cb mdbx: обновление ChangeLog. 2025-03-04 01:14:03 +03:00
Леонид Юрьев (Leonid Yuriev)
40f655e2da mdbx: корректировка log_error() для устранение ложных ошибок при работе mdbx_chk с высоким уровнем логирования (backport).
Некая проблема была в том, что при высоком уровне логирования в логгер
также отправлялись неизбежные MDBX_NOTFOND при достижении конца
интегрируемых данных. В свою очередь, chk-логика формирования отчета
подсчитывала эти сообщения как ошибки при проверке БД...
2025-03-03 01:49:32 +03:00
Леонид Юрьев (Leonid Yuriev)
5e714ed946 mdbx: переделка env_owned_wrtxn() и мест её вызова (backport).
Цель в том чтобы избавить от коллизии блокировки возникающей внутри
dxb_sanitize_tail() при использовании Valgrind/ASAN, а также упросить
код.
2025-03-03 01:49:25 +03:00
Леонид Юрьев (Leonid Yuriev)
d313008d82 mdbx: дополнительные проверки сигнатур курсоров при итерации связанных списков (backport). 2025-03-02 16:38:27 +03:00
Леонид Юрьев (Leonid Yuriev)
9277daa185 mdbx: более полная очистка курсоров при закрытии/отключении (backport). 2025-03-02 16:37:49 +03:00
Леонид Юрьев (Leonid Yuriev)
1792bdc763 mdbx-tests: расширение extra/dbi (backport). 2025-03-02 16:03:20 +03:00
Леонид Юрьев (Leonid Yuriev)
90635e7248 mdbx: исправление наследования dbi-хендла открытого в дочерней транзакции без изменения данных. 2025-03-02 16:03:20 +03:00
Леонид Юрьев (Leonid Yuriev)
1ec13c63ab mdbx: устранение сбоя аудита таблиц при инвалидации dbi-хендла вследствие отмены вложенной транзакции (backport). 2025-03-02 16:03:20 +03:00
Леонид Юрьев (Leonid Yuriev)
c712147eeb mdbx: исправление оплошности в спецификации формата при логировании имен таблиц (backport). 2025-03-02 16:03:20 +03:00
Леонид Юрьев (Leonid Yuriev)
23600241e1 mdbx: уменьшение в 16 раз предлагаемого размера БД для устранения проблем Valgrind/ASAN (backport). 2025-03-02 16:03:20 +03:00
Леонид Юрьев (Leonid Yuriev)
22c6763d57 mdbx-tests: удаление тестовой БД перед началом теста в extra/dupfix_addodd (backport). 2025-03-02 16:03:20 +03:00