Леонид Юрьев (Leonid Yuriev)
e03b8e1227
mdbx: добавление ignore_enosys_and_einval()
и её использование для отказа от OFD-блокировок.
2025-05-20 13:37:54 +03:00
Леонид Юрьев (Leonid Yuriev)
c88c51d33c
mdbx: разделение ignore_enosys()
и ignore_enosys_and_eagain()
.
2025-05-20 13:37:54 +03:00
Леонид Юрьев (Leonid Yuriev)
650569cc6a
mdbx: merge branch master
into devel
.
2025-03-31 00:52:52 +03:00
Леонид Юрьев (Leonid Yuriev)
936c25e671
mdbx: добавление assert-проверок для отлова ошибок приводящих к переполнению/повреждению страниц.
2025-03-30 17:41:33 +03:00
Леонид Юрьев (Leonid Yuriev)
aeac971f0b
mdbx: переработка проверки курсоров на входе API-функций с добавлением cursor_check()
.
2025-03-17 23:25:30 +03:00
Леонид Юрьев (Leonid Yuriev)
3e91500fac
mdbx: устранение гонки в tbl_setup(MDBX_DUPFIXED | MDBX_INTEGERDUP)
при работе в разных потоках.
...
Проблема была в том, что в случаях фиксированного размера значений
clc.lmin/clc.lmax устанавливались в env->kvs[], а затем корректировались
по актуальному размеру данных в БД. Поэтому при конкурентном вызове из
разных потоков, один поток мог выполнять инициализацию, а второй
прочитать временные/промежуточные значения lmin/lmax.
В результате, при конкурентном старте транзакций в разных потоках при
использовании только-что открытого dbi-хендла, проверка допустимости
длины значения могла заканчиваться ложной ошибкой MDBX_BAD_VALSIZE.
2025-03-17 23:13:26 +03:00
Леонид Юрьев (Leonid Yuriev)
56d1dbef45
mdbx: обновление года в ©.
2025-01-15 19:36:07 +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