Леонид Юрьев (Leonid Yuriev)
6c036add8b
mdbx: переработка проверки курсоров на входе API-функций с добавлением cursor_check()
(backport).
2025-03-20 01:44:20 +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)
36abcc57f0
mdbx: обновление года в © (backport).
2025-01-18 10:58:31 +03:00
Леонид Юрьев (Leonid Yuriev)
1bf008ac16
mdbx: доработка контроля потока-владельца транзакции.
...
1. Теперь допускается commit/abort вложенных транзакций из любого треда в режиме MDBX_NOSTICKYTHREADS.
2. Более наглядные/явные проверки без зависимости от больше/меньше.
Одна проверка внутри check_txn() для всех основных случаев (bad_bits != 0) и две проверки для abort/reset/break (bad_bits == 0).
+-------------------------------------------------------------------------------------------------------+
| Три анализируемых txn->flags | Проверка txn->owner == osal_thread_self() |
+-----------------+------------+--------------+-----------------------+---------------------------------+
| NOSTICKYTHREADS | TXN_RDONLY | TXN_FINISHED | usual (bad_bits != 0) | abort/reset/break (bad_bits==0) |
| - | - | - | + | + |
| - | - | + | + | + |
| - | + | - | + | + |
| - | + | + | + | - |
| + | - | - | - | - |
| + | - | + | + | + |
| + | + | - | - | - |
| + | + | + | + | - |
+-------------------------------------------------------------------------------------------------------+
2025-01-03 22:12:17 +03:00
Леонид Юрьев (Leonid Yuriev)
8867c2ddc2
mdbx: новые настройки clang-format (косметика).
2024-12-11 21:22:04 +03:00
Леонид Юрьев (Leonid Yuriev)
7ed4a551f4
mdbx: внутренние переименования subDb в таблицы.
2024-08-03 15:14:23 +03:00
Леонид Юрьев (Leonid Yuriev)
57e558a57d
mdbx: использование термина "таблица" вместо "sub-database".
2024-08-03 15:14:23 +03:00
Леонид Юрьев (Leonid Yuriev)
ec0ada7b8c
mdbx: парковка читающих транзакций.
2024-07-12 01:05:56 +03:00
Леонид Юрьев (Leonid Yuriev)
3de3d425a1
mdbx: изменение лицензии и реструктуризация исходного кода.
2024-06-19 14:18:18 +03:00