Леонид Юрьев (Leonid Yuriev)
d7f259110c
mdbx-test: фиксация транзакции при ошибках теста для последующего анализа БД.
2024-03-03 17:38:41 +03:00
Леонид Юрьев (Leonid Yuriev)
d53dc4572c
mdbx: рефакторинг node_shrink() для ясности исходного кода.
2024-03-03 17:38:41 +03:00
Леонид Юрьев (Leonid Yuriev)
2e863cf7e0
mdbx: исправление недочета корректировки сопутствующих курсоров при разделении страницы по сценарию добавления пустой страницы слева.
2024-03-03 17:38:41 +03:00
Леонид Юрьев (Leonid Yuriev)
826441741d
mdbx: добавление keysize_min() и valsize_min() в API.
2024-03-03 17:38:41 +03:00
Леонид Юрьев (Leonid Yuriev)
00c4e2636e
mdbx-test: обновление ГПСЧ.
2024-03-03 17:38:41 +03:00
Леонид Юрьев (Leonid Yuriev)
3373631cff
mdbx-test: унификация PRNG и изменение опции командной строки на --prng-seed
.
2024-03-03 17:38:23 +03:00
Леонид Юрьев (Leonid Yuriev)
c5ac7b25c9
mdbx-test: доработка генератора пар key-value для поддержки коротких ключей в режиме MDBX_DUPFIXED
.
2024-02-28 20:12:39 +03:00
Леонид Юрьев (Leonid Yuriev)
544c6bc1e4
mdbx-test: поддержка rnd/rand/random для опций --keylen
и --datalen
.
2024-02-28 20:12:39 +03:00
Леонид Юрьев (Leonid Yuriev)
164d112507
mdbx: доработка chk-функционала с устранением ошибок и недочетов.
2024-02-28 20:12:39 +03:00
Леонид Юрьев (Leonid Yuriev)
fb5dbbdf20
mdbx-test: соответствие протоколируемых имен тестов опциям командной строки (косметика).
2024-02-28 20:12:38 +03:00
Леонид Юрьев (Leonid Yuriev)
b1dcd07be4
mdbx: устранение ошибки в поддержке MDBX_ENABLE_DBI_LOCKFREE.
2024-02-28 20:12:38 +03:00
Леонид Юрьев (Leonid Yuriev)
603ce05435
mdbx: исправление vlen_min для режима dupfixed.
2024-02-28 20:12:38 +03:00
Леонид Юрьев (Leonid Yuriev)
ba719ef12a
mdbx-test: доработка after-fork сценариев с устранением логической ошибки.
2024-02-28 20:12:38 +03:00
Леонид Юрьев (Leonid Yuriev)
f0cfedc26f
mdbx-test: добавление extra/dupfixed_addodd
.
2024-02-28 20:12:38 +03:00
Леонид Юрьев (Leonid Yuriev)
fbc83dd069
mdbx: исправление ложной ошибки MDBX_CORRUPTED (-30796)
в сценарии "odd dupfixed".
...
Повреждение БД и/или потери данных не происходило, проблема лишь в
возврате ложной ошибки.
Благодарю пользователя/разработчика @Dvirsw (https://t.me/Dvirsw ) за
сообщения о проблеме и предоставление минимального/оптимального сценария
воспроизведения.
--
Проблема была из-за излишнего условия при контроле внутренего поля
mp_upper в ходе проверки структуры страниц БД.
Поле mp_upper указывает на нижнуюю границу заполнения страницы от конца
к началу. Вследствие того, что значения ключей выравниваетня на четную
границу, это поле четно во всех случаях за исключением LEAF2-страницы
(листовая страница вложенного дерева для множественных значений
финсированной/одинаковой длины одного ключа), на которой размещено
нечетное количество значений нечетной длины.
Ошибка не проявлялась в большинстве случаев (в том числе в
стохастических тестах), так как штатно лишняя проверка производилась
только при чтении страницы и перебалансировке ключей, но не при каждом
добавлении значения. Тем не менее, сценарии тестов требуют
доработки/расширения для явного добавления нечетных dupfixed-сценариев.
2024-02-28 20:12:38 +03:00
Леонид Юрьев (Leonid Yuriev)
f16c4303bf
mdbx: исправление опечатки в комментарии.
2023-12-08 16:47:40 +03:00
Леонид Юрьев (Leonid Yuriev)
72332a8f9e
mdbx: устранение несущественного замечания Coverity.
2023-12-08 15:09:01 +03:00
Леонид Юрьев (Leonid Yuriev)
6b72d88fde
mdbx: исправление внутреннего регресса lck_serize_rc в сценарии повторного открытия БД одним процессом.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
4c139b3619
mdbx: устранение внутреннего регресса проверки состояние внутри транзакции.
...
После f0d523c507
, при использовании
добавленного API блокировок, возможно ложно-положительное определение
состояние "внутри транзакции".
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
169e69c52e
mdbx: подстройка rp_augment_limit в зависимости от gc_time_limit.
...
Когда rp_augment_limit не задан пользователем посредством
`MDBX_opt_rp_augment_limit`, то как и ранее он подстраивается в
зависимости от текущего размера БД (актуального кол-ва страниц).
Теперь-же авто-устанавливаемое значение rp_augment_limit вычисляется
обратно-пропорционально `MDBX_opt_gc_time_limit`:
- Если gc_time_limit == 0, то rp_augment_limit устанавливается в 1/3 от
общего кол-ва страниц БД, но не меньше рационального минимума.
Это соответствует прежнему поведению и обеспечивает достаточно глубокую
переработку GC во всех не-экстремальных сценариях.
- При gc_time_limit >= 16_секунд
rp_augment_limit устанавливается в минимальное значение.
- Когда 0 < gc_time_limit < 16_секунд
rp_augment_limit устанавливается между минимумом и 1/3 от размера БД
пропорционально остатку gc_time_limit до 16 секунд.
Соответственно, при больших значениях gc_time_limit, выбирается меньшее
значение rp_augment_limit, и контроль глубины переработки GC
ограничивается в основном по-времени.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
eeec44f56d
mdbx: добавление MDBX_opt_gc_time_limit.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
508cf83c32
mdbx: исправление несущественной опечатки в комментарии.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
eb90ec6192
mdbx: новый размер MDBX_opt_rp_augment_limit по умолчанию в 1/3 от текущего кол-ва страниц в БД.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
e316bc8b29
mdbx-test: увеличения таймаута для smoke-теста на случай параллельного выполнения под Valgrind.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
5a86afaac3
mdbx-test: 3-часовой таймаут для extra_doubtless_positioning
при использовании Valgrind.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
349759648d
mdbx: правка rthc_afterfork()
для Valgrind.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
43dbf8ec4f
mdbx: правка txn_valgrind()
для случая resurrect-after-fork.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
14558fa90b
mdbx-test: правка тестов для совместимости с проблемными версиями glibc и glibc++.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
1db44c7914
mdbx++: перенос в public типов buffer::move_assign_alloc
и buffer::copy_assign_alloc
для старых стандартов C++.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
f97c127455
mdbx-test: тест для doubtless-API позиционирования курсоров.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
100f07e89a
mdbx++: дополнительные операторы преобразования к типам C API.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
e68771df18
mdbx++: Добавление buffer_pair<>
и buffer_pair_spec<>
.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
ef69336189
mdbx-test: добавление теста для транскодеров hex/base64/base58.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
0e250a4457
mdbx++: добавление поддержки std::span<>
.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
be8428257d
mdbx++: переделка поддержки base58 по RFC-draft.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
dd47f1bfd9
mdbx++: переход на использование по-умолчанию default_allocator вместо legacy_allocator.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
1f2ff07796
mdbx++: переработка/исправление to_hex()
.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
b412807fc1
mdbx++: добавление mdbx::default_buffer
.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
8a6bddef44
mdbx++: поправка форматирования против бага clang-format.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
304cf25149
mdbx++: использование slice::invalid()
для предотвращения незаметного неверного использования API.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
869cfb3fae
mdbx++: исправление опечатки в doxygen-описании.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
0a58601cdf
mdbx++: добавление pair::invalid()
и взаимодействия с std::pair<>
.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
355090f02e
mdbx++: добавление is_xyz()
для key_mode
и value_mode
.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
55142d8d6f
mdbx++: добавление txn::commit_embark_read()
.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
b9e2f6dc09
mdbx++: добавление MDBX_CXXnn_CONSTEXPR_ENUM
.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
bf21ee7bde
mdbx++: добавление операторов сравнения для mdbx::pair
.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
0b68980489
mdbx++: добавление cursor::scan(predicate...)
и т.п.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
4999264460
mdbx++: добавление error::boolean_or_throw(exception_thunk)
.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
25015c54e1
mdbx: обещанное "doubtless" API для позиционирования курсоров.
2023-12-05 15:32:18 +03:00
Леонид Юрьев (Leonid Yuriev)
5cf6542fa0
mdbx: добавление mdbx_cursor_scan_from()
в API.
2023-12-05 15:32:18 +03:00