Леонид Юрьев (Leonid Yuriev)
cfce4ef4d3
mdbx-test: явная установка append-режима для stdout/stderr.
2023-11-12 20:37:57 +03:00
Леонид Юрьев (Leonid Yuriev)
7eb2f4130e
mdbx: использование const MDBX_txn
где это возможно в API (backport).
2023-11-12 19:33:27 +03:00
Леонид Юрьев (Leonid Yuriev)
d9f49b17de
mdbx-test: добавление тестов для mdbx_env_resurrect_after_fork()
.
2023-11-12 01:49:53 +03:00
Леонид Юрьев (Leonid Yuriev)
af4dfe541b
mdbx: добавление mdbx_env_resurrect_after_fork()
в API.
2023-11-12 01:49:53 +03:00
Леонид Юрьев (Leonid Yuriev)
a22ec56938
mdbx: использование pthread_atfork(after_fork)
.
2023-11-12 01:49:53 +03:00
Леонид Юрьев (Leonid Yuriev)
ce74fae036
mdbx: рефакторинг и выделение env_open()
.
2023-11-12 01:49:53 +03:00
Леонид Юрьев (Leonid Yuriev)
54efb8bd81
mdbx: не считаем ошибки ipc-unlock критичными в случае смены pid.
2023-11-12 01:49:53 +03:00
Леонид Юрьев (Leonid Yuriev)
a3e2300f58
mdbx: возможность вызова osal_lck_destroy()
в дочернем процессе после fork()
.
2023-11-12 01:49:53 +03:00
Леонид Юрьев (Leonid Yuriev)
7ad54f54b4
mdbx: объединение lck-списка и rthc-таблицы для упрощения (де)регистрации TLS-деструкторов.
2023-11-12 01:49:53 +03:00
Леонид Юрьев (Leonid Yuriev)
eddade7b99
mdbx: корректировка префиксов имён osal-ipc функций.
2023-11-12 01:00:41 +03:00
Леонид Юрьев (Leonid Yuriev)
97418d5c9c
mdbx: рефакторинг env_handle_pathname()
для одной точки выделения/освобождения памяти.
2023-11-12 01:00:41 +03:00
Леонид Юрьев (Leonid Yuriev)
1b2f5f25d4
mdbx: рефакторинг и вынос txn_abort()
без кода входящих пероверок.
2023-11-12 01:00:41 +03:00
Леонид Юрьев (Leonid Yuriev)
2fe01eee89
mdbx: проверка pid только для запроса активной env.
2023-11-12 01:00:41 +03:00
Леонид Юрьев (Leonid Yuriev)
6477e6c5de
mdbx: исправление авто-установки MDBX_ENV_CHECKPID
для случая MDBX_ENABLE_MADVISE=0
.
2023-11-12 01:00:41 +03:00
Леонид Юрьев (Leonid Yuriev)
dea6570fc1
mdbx: доработка coherency_check()
для случая плохих номеров корневых страниц.
2023-11-11 12:29:15 +03:00
Леонид Юрьев (Leonid Yuriev)
9a6f8a1bf8
mdbx-test: увеличение tail-log до 3333 для CI.
2023-11-11 12:29:13 +03:00
Леонид Юрьев (Leonid Yuriev)
24d5b26bc5
mdbx-make: переименование целей.
2023-11-11 12:29:13 +03:00
Леонид Юрьев (Leonid Yuriev)
0916d24321
mdbx: использование опции ENABLE_MEMCHECK
вместо ENABLE_VALGRIND
и MDBX_USE_VALGRIND
.
2023-11-11 12:29:13 +03:00
Леонид Юрьев (Leonid Yuriev)
c216e1afb7
mdbx-test: добавление проверки mdbx_dbi_rename()
.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
c9c02dddfb
mdbx: добавление mdbx_dbi_rename()
в API.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
903d964f4d
mdbx: интенсивное использование __restrict
, в том числе при определении элементов структур.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
96504bf338
mdbx: отложенное освобождение имен связанных c dbi-хендлами и добавление опции MDBX_ENABLE_DBI_LOCKFREE
.
...
Отложенное освобождение позволяет реализовать безопасное выполнение
fastpath/lockfree при повторном открытии из других потоков/транзакцйий
уже открытых subDB, что и происходит при активации добавленной опции
сборки `MDBX_ENABLE_DBI_LOCKFREE`.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
3622669a9f
mdbx: проверка db-флагов и ре-инициализация MainDB при изменении флагов другим процессом.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
e6af7d7c53
mdbx: переработка инициализации, проверки и импорта dbi-хендлов в транзакциях.
...
Ранее инициализация в транзакциях структур данных, связанных с
dbi-хендлами и subDb, выполнялась непосредственно при запуске
транзакций. Что в сценариях с большим кол-вом dbi-дексприторов (например
libfpta) порождало заметные накладные расходы, которые расли линейно от
общего кол-ва открытых subDb, а не от реально используемых в транзакции.
При использовании одной-двух сотен хендлов, при старте каждой транзакции
могли копироваться и/или обнуляться десятки килобайт. Теперь этот
недостаток устранен.
Изменена схема инициализации, валидации и импорта хендлов открытых после
старта транзакции:
1) Инициализация теперь выполняется отложенна, а при старте транзации
обнуляется только массив с однобайтовыми статустами dbi-хендлов.
При этом доступнва опция сборки `MDBX_ENABLE_DBI_SPARSE`, при активации
которой используется битовая карты, что снижает объем инициализации
при старте транзакции в 8 раз (CHAR_BIT).
2) Переработана валидация dbi-хендлов на входах API, с уменьшением кол-ва
проверок и ветвлений до теоретического минимума.
3) Переработ импорт dbi-хендов открытых после старта транзакци, теперь
при этом не захватывается мьютекс.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
796e56b9b9
mdbx: добавление кода системной ошибки MDBX_EDEADLK
.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
4b79d46d38
mdbx: удаление поля mt_dbxs
из транзакции.
...
Явного выигрыша или проигрыша в производительности тут нет. Но теперь
меньше алиасинга указателей и чуть меньше полей в транзакциях.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
f317170706
mdbx: переименование внутренних полей и макросов для улучшения читаемости кода.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
81f386f831
mdbx: перемещение полей внутри MDBX_txn
и MDBX_env
.
...
В текущем понимании так префетчер ЦПУ может быть чуть более эффективным
и чуть меньше зазоров для выравнивания.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
54920cd07b
mdbx: исправление assert-проверок внутри osal_txn_lock()
.
2023-11-11 12:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
7a413406be
mdbx-test: обновление исключений для Valgrind.
2023-11-11 12:29:07 +03:00
Леонид Юрьев (Leonid Yuriev)
07fc7b9227
mdbx-test: добавление опции --taillog
в стохастический скрипт.
2023-10-30 22:01:35 +03:00
Леонид Юрьев (Leonid Yuriev)
ad4d00677b
mdbx: PTHREAD_MUTEX_ERRORCHECK при MDBX_DEBUG > 0.
2023-10-29 18:44:54 +03:00
Леонид Юрьев (Leonid Yuriev)
1943db7d41
mdbx: merge branch master
into devel
.
2023-10-29 18:23:49 +03:00
Леонид Юрьев (Leonid Yuriev)
ed8c7ead4e
mdbx: ликвидация ошибочной зависимости от удаленной опции MDBX_ENABLE_PREFAULT
.
2023-10-29 12:20:54 +03:00
Леонид Юрьев (Leonid Yuriev)
5ebc2c523d
mdbx: обновление ChangeLog.
2023-10-23 20:35:55 +03:00
Леонид Юрьев (Leonid Yuriev)
24f08aed28
mdbx-doc: обновление конфигурации Doxygen.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
c254c728d2
mdbx: костыль для ложно-положительного предупреждения Coverity.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
04511a7a99
mdbx: использование const MDBX_txn
где это возможно в API.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
0e4c6d61a4
mdbx-tools: несущественный рефакторинг mdbx_load
.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
4d3f7e1edc
mdbx: добавление mdbx_txn_release_all_cursors()
в API.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
d28a397b2d
mdbx: добавление mdbx_cursor_unbind()
в API.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
5f274eb4c6
mdbx: вывод информации из mdbx_env_chk()
о boot-id в каждой мета-странице.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
a67b9b9729
mdbx: доработка env_info_snap()
.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
224f26813e
mdbx: возвращение MDBX_TXN_INVALID
(INT32_MIN
) из mdbx_txn_flags()
при передаче невалидной транзакции.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
fc1685a178
mdbx: STATIC_ASSERT()
для MDBX_TXN_RDONLY_PREPARE
.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
cdbcf54af1
mdbx-tests: добавление --read-var-info=yes
для Valgrind.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
786da2b089
mdbx-tools: вывод информации об уровне детализации/verbosity.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
253a56206b
mdbx: переработка и перенос функционала утилиты mdbx_chk
внутрь библиотеки.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
f0d523c507
mdbx: дополнение API функциями lock/unlock/upgrade/downgrade основной блокировки.
2023-10-23 20:25:03 +03:00
Леонид Юрьев (Leonid Yuriev)
dd9fc963d2
mdbx: изменение и расширение API функционалом проверки целостности структуры БД.
2023-10-23 20:25:03 +03:00