17 Commits

Author SHA1 Message Date
Леонид Юрьев (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