Леонид Юрьев (Leonid Yuriev)
4e33bad6e7
mdbx: отсечение хвоста ChangeLog с отделением в ChangeLog-01.
2025-03-21 00:31:54 +03:00
Леонид Юрьев (Leonid Yuriev)
a313dd2fae
mdbx: merge branch stable
into master
.
2025-03-21 00:11:00 +03:00
Леонид Юрьев (Leonid Yuriev)
2e4962a2f3
mdbx-docs: изменение <title>
и meta-title в index.html
2025-03-20 21:50:53 +03:00
Леонид Юрьев (Leonid Yuriev)
00917f8c96
mdbx: корректировка ChangeLog.
2025-03-20 19:15:56 +03:00
Леонид Юрьев (Leonid Yuriev)
999f8644f6
mdbx: дополнение ChangeLog.
2025-03-20 18:02:00 +03:00
Леонид Юрьев (Leonid Yuriev)
5d9fb63fb8
mdbx: усиление контроля сигнатур курсоров (backport).
2025-03-20 18:00:44 +03:00
Леонид Юрьев (Leonid Yuriev)
06f8573f5f
mdbx: усиление контроля сигнатур курсоров.
2025-03-20 17:20:47 +03:00
Леонид Юрьев (Leonid Yuriev)
1e0a1014a4
mdbx-tests: корректировка обработки прерывания теста посредством SIGTERM
/SIGINT
(backport).
2025-03-20 14:23:19 +03:00
Леонид Юрьев (Leonid Yuriev)
7eb7931a23
mdbx-tests: корректировка обработки прерывания теста посредством SIGTERM
/SIGINT
.
2025-03-20 14:13:20 +03:00
Леонид Юрьев (Leonid Yuriev)
35349cf538
mdbx: добавление опции сборки MDBX_ENABLE_NON_READONLY_EXPORT
и логирование соответствующих ситуаций (backport).
...
Закрывает [запрос](https://gitflic.ru/project/erthink/libmdbx/issue/16 ).
2025-03-20 13:55:07 +03:00
Леонид Юрьев (Leonid Yuriev)
8157d07b00
mdbx: использование при наличии EREMOTEIO
вместо ENOTBLK
в качестве MDBX_EREMOTE
(backport).
2025-03-20 13:53:47 +03:00
Леонид Юрьев (Leonid Yuriev)
3c3628c798
mdbx-tests: кратное сокращение итераций тестов в зависимости от конфигурации Valgrind/Debug/CI (backport).
2025-03-20 01:58:02 +03:00
Леонид Юрьев (Leonid Yuriev)
3a0dbee58c
mdbx-tests: устранение невыравненного доступа в extra/close-dbi для UBSAN (backport).
2025-03-20 01:57:38 +03:00
Леонид Юрьев (Leonid Yuriev)
e11d419d20
mdbx-tests: перехват и логирование исключений в extra-C++ тестах (backport).
2025-03-20 01:56:55 +03:00
Леонид Юрьев (Leonid Yuriev)
59343d9106
mdbx++: minor reflow Doxygen comments (backport).
2025-03-20 01:56:07 +03:00
Леонид Юрьев (Leonid Yuriev)
2127d3b7d7
mdbx-tests: расширение extra/dupfix-multiple (backport).
2025-03-20 01:55:41 +03:00
Леонид Юрьев (Leonid Yuriev)
065aef35ea
mdbx++: добавление mdbx::cursor::put_multiple_samelength()
(backport).
2025-03-20 01:55:10 +03:00
Леонид Юрьев (Leonid Yuriev)
9653c8f45b
mdbx: рефакторинг проверок с выносом в cursor_check_multiple()
(backport).
2025-03-20 01:52:21 +03:00
Леонид Юрьев (Leonid Yuriev)
7ed769e9c6
mdbx: поддержка MDBX_MULTIPLE
с нулевым размером данных (backport).
2025-03-20 01:51:37 +03:00
Леонид Юрьев (Leonid Yuriev)
52a19fecca
mdbx++: явное определение external-инстанцирования mdbx::buffer<>
c API-атрибутами (backport).
2025-03-20 01:50:27 +03:00
Леонид Юрьев (Leonid Yuriev)
3282adf8bd
mdbx: исправление регресса в пути обработки MDBX_MULTIPLE
(backport).
...
Пакетная вставка значений посредством операции `MDBX_MULTIPLE` могла
приводить к падениям и повреждению структуры БД. Ошибка оставалось не
замеченной из-за специфических условий проявления, которые не
реализовались в тестах.
Проблема присутствовала во всех выпусках начиная с v0.13.1, но
соответствующая ошибка не связана с конкретным коммита в истории, а
является следствием нескольких доработок (шагов рефакторинга), которые
суммарно привели к регрессу.
Технически ошибка обусловлена не-обнулением переменной, которая не
обнулялась в некотором пути выполнения и исходно не требовала обнуления,
но такое обнуление потребовалось после ряда этапов оптимизации кода и
рефакторинга.
Основным условием проявления является пакетная вставка multi-значений в
dupsort-таблицу с фиксированным размером значений, при котором набор
значений соответствующий обновляемом ключу, перестаёт помещаться на
вложенной странице и преобразуется/выносится во вложенное дерево
страниц. Если такой вынос/преобразование происходило до исчерпания
переданного набора значений, то при следующей итерации повторно
производились действия соответствующие выносу данных в отдельное дерево
страниц. Что могла приводить как к разыменованию неверных указателей
(повреждению содержимого памяти) и/или к повреждению содержимого страниц
образующих структуру БД.
Исправление свелось к добавлению одной строчки кода, но также были
расширены тесты для покрытия соответствующих сценариев.
2025-03-20 01:49:42 +03:00
Леонид Юрьев (Leonid Yuriev)
529f2c2380
mdbx-tests: уменьшение кол-ва итераций в extra/crunched-delete для 32-битных сборок во избежания MDBX_MAP_FULL
(backport).
2025-03-20 01:49:17 +03:00
Леонид Юрьев (Leonid Yuriev)
1dfe1e872e
mdbx++: добавление mdbx::cursor::seek_multiple_samelength()
(backport).
2025-03-20 01:48:58 +03:00
Леонид Юрьев (Leonid Yuriev)
767ba21977
mdbx: костыли для CLANG < 20 при использовании [[атрибутов]]
C23 (backport).
2025-03-20 01:48:22 +03:00
Леонид Юрьев (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