Леонид Юрьев (Leonid Yuriev)
56d1dbef45
mdbx: обновление года в ©.
2025-01-15 19:36:07 +03:00
Леонид Юрьев (Leonid Yuriev)
2c3b36da64
mdbx: рефакторинг txn_renew()
транзакций с вычленением txn_basal_start()
.
2025-01-15 00:50:57 +03:00
Леонид Юрьев (Leonid Yuriev)
314b8ce1f0
mdbx: переименование (косметика).
2025-01-15 00:50:57 +03:00
Леонид Юрьев (Leonid Yuriev)
7e772114bc
mdbx: рефакторинг читающих транзакций в вычленением txn_ro_start()
, txn_ro_seize()
, txn_ro_slot()
.
2025-01-15 00:50:36 +03:00
Леонид Юрьев (Leonid Yuriev)
950db52fe8
mdbx: выделение basal/ro/nested txn-функций в отдельные файлы (без изменений кода).
2025-01-14 13:26:54 +03:00
Леонид Юрьев (Leonid Yuriev)
10e7e5c899
mdbx: рефакторинг mdbx_txn_commit_ex()
5/5 (вычленение txn_basal_end()
).
2025-01-14 13:26:54 +03:00
Леонид Юрьев (Leonid Yuriev)
6d92a778a5
mdbx: оформление опции сборки MDBX_NOSUCCESS_PURE_COMMIT
(выключено по умолчанию).
2025-01-14 13:26:54 +03:00
Леонид Юрьев (Leonid Yuriev)
c60f6afe5f
mdbx: упрощение/выпрямление/рефакторинг txn_end()
и затронутых зависимостей.
2025-01-14 13:26:54 +03:00
Леонид Юрьев (Leonid Yuriev)
a5bb555db3
mdbx: рефакторинг mdbx_txn_commit_ex()
4/5 (вычленение txn_basal_commit()
).
2025-01-14 13:26:54 +03:00
Леонид Юрьев (Leonid Yuriev)
b9b784c18e
mdbx: рефакторинг mdbx_txn_commit_ex()
3/5 (вычленение txn_nested_join()
).
2025-01-14 13:26:54 +03:00
Леонид Юрьев (Leonid Yuriev)
c6cd482ea0
mdbx: рефакторинг mdbx_txn_commit_ex()
2/5 (struct commit_timestamp
, latency_init/gcprof/done()
).
2025-01-14 13:26:54 +03:00
Леонид Юрьев (Leonid Yuriev)
1e5fef2c76
mdbx: рефакторинг txn-api с выносом отдельных txn-функций.
2025-01-14 13:26:54 +03:00
Леонид Юрьев (Leonid Yuriev)
0a4156fe6f
mdbx: перенос check_env()
из txn_end()
в функции txn-api.
2025-01-14 13:26:54 +03:00
Леонид Юрьев (Leonid Yuriev)
81e2623a54
mdbx: рефакторинг затенения и завершения курсоров, с удалением TXN_END_EOTDONE
и добавлением txn_may_have_cursors
.
2025-01-14 13:26:54 +03:00
Леонид Юрьев (Leonid Yuriev)
b681b59434
mdbx: рефакторинг/вычленение txn_basal_create/destroy()
.
2025-01-14 13:26:54 +03:00
Леонид Юрьев (Leonid Yuriev)
b75e16f4f8
mdbx: устранение null-dereference регресса в режиме readonly-without-lck.
2025-01-12 02:58:59 +03:00
Леонид Юрьев (Leonid Yuriev)
df8b15f639
mdbx: const
для транзакции в txn_take_gcprof()
.
2024-12-28 09:38:08 +03:00
Леонид Юрьев (Leonid Yuriev)
26f6fd351a
mdbx: подстройка dirty-pages-limit при старте транзакций.
2024-12-27 09:39:36 +03:00
Леонид Юрьев (Leonid Yuriev)
225fb79eb2
mdbx: переименование repnl/retxl.
2024-12-22 10:39:49 +03:00
Леонид Юрьев (Leonid Yuriev)
ba6df2bb6d
mdbx: выделение API-функций в api-файлы.
2024-12-17 19:00:39 +03:00
Леонид Юрьев (Leonid Yuriev)
5168c80be8
mdbx: сбор затрат на pnl_merge()
при включении MDBX_ENABLE_PROFGC
.
2024-12-17 18:54:58 +03:00
Леонид Юрьев (Leonid Yuriev)
6ed4dcb4ea
mdbx: добавление отладочных сообщений при возврате ошибок из API.
2024-12-16 13:31:07 +03:00
Леонид Юрьев (Leonid Yuriev)
ccdb6255e9
mdbx: возврат MDBX_EINVAL
при попытке запустить вложенную читающую транзакцию.
2024-12-13 08:26:55 +03:00
Леонид Юрьев (Leonid Yuriev)
8867c2ddc2
mdbx: новые настройки clang-format (косметика).
2024-12-11 21:22:04 +03:00
Леонид Юрьев (Leonid Yuriev)
ddea36c54a
mdbx: освобождение памяти сброшенных/прерванных читающих транзакций передаваемых в mdbx_txn_commit()
.
...
Исторически в API была слабость/неоднозначность в жизненном цикле читающих транзакций:
- В простейших сценариях читающие транзакции запускались посредством
mdbx_txn_begin() и завершались посредством mdbx_txn_abort(), либо mdbx_txn_commit();
- Для экономии накладных расходов были предусмотрены функции
mdbx_txn_reset() и mdbx_txn_renew(), которые сбрасывали/прерывали
читающую транзакцию без её освобождения/разрушения и затем перезапускали её.
При этом транзакции сброшенные посредством mdbx_txn_reset() должны были
быть либо перезапущены, либо освобождены посредством mdbx_txn_abort();
- Заминка возникала при вызове mdbx_txn_commit() для читающих
транзакций сброшенных/прерванных посредством mdbx_txn_reset().
В таких ситуациях возвращалась ошибка MDBX_BAD_TXN, а транзакция
не освобождалась.
Такое поведение вносило лишнюю асимметрию в API и способствовало
появлению ошибок утечки ресурсов, но поддерживалось для совместимости.
Этот коммит изменяет историческое поведение с нарушением совместимости,
но делает API более регулярным и уменьшает вероятность ошибок утечки
ресурсов.
Теперь mdbx_txn_commit() освобождает/разрушает читающие транзакции
сброшенные/прерванные посредством mdbx_txn_reset() возвращая при этом
MDBX_RESULT_TRUE вместо MDBX_SUCCESS, по аналогии обработки фиксации
аварийных пишущих транзакций.
2024-11-17 22:52:07 +03:00
Леонид Юрьев (Leonid Yuriev)
92dec0bca9
mdbx: исправление утечки памяти из-за регресса в txn_end()
при добавлении парковки транзакций.
...
Если читающая транзакция была припаркована и затем вытеснена, то при её
завершении ресурсы не освобождались.
2024-11-17 22:52:07 +03:00
Леонид Юрьев (Leonid Yuriev)
b054a69e72
mdbx: исправление и рефакторинг цикла чтения мета-страниц при старте читающих транзакций.
...
Сценарий достаточно запутанный/сложный.
2024-08-11 09:44:32 +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)
b6b126195b
mdbx: исправление упущенного TXN_END_EOTDONE
при сбое старта читающей транзакции.
...
Упомянутый флажок отсутствовал в пути разрушения транзакции при ошибке
её запуска. Из-за чего делалась попытка разрушить курсоры, что приводило
к падению отладочных сборок, так как в них соответствующий массив
намеренно заполнен некорректными указателями.
2024-08-02 23:33:22 +03:00
Леонид Юрьев (Leonid Yuriev)
9e3a36b74d
mdbx: корректировка txn_end()
для устранения лишних MDBX_TXN_OUSTED
.
2024-07-27 12:44:06 +03:00
Леонид Юрьев (Leonid Yuriev)
a430b3b288
mdbx: исправление опечатки 0x%u
в логировании.
2024-07-24 11:22:59 +03:00
Леонид Юрьев (Leonid Yuriev)
ec0ada7b8c
mdbx: парковка читающих транзакций.
2024-07-12 01:05:56 +03:00
Леонид Юрьев (Leonid Yuriev)
fe31958d46
mdbx: добавление UUID для идентификации БД.
2024-07-10 22:33:46 +03:00
Леонид Юрьев (Leonid Yuriev)
3de3d425a1
mdbx: изменение лицензии и реструктуризация исходного кода.
2024-06-19 14:18:18 +03:00