14 Commits

Author SHA1 Message Date
Леонид Юрьев (Leonid Yuriev)
76e2544cc0 mdbx: доработки gc_handle_dense() для экстремально-редких случаев. 2025-04-29 08:39:18 +03:00
Леонид Юрьев (Leonid Yuriev)
06300de34e mdbx: подсказки для coverity. 2025-04-26 00:15:52 +03:00
Леонид Юрьев (Leonid Yuriev)
2b36fd5974
mdbx: новый код обновления GC. 2025-04-26 00:15:41 +03:00
Леонид Юрьев (Leonid Yuriev)
7074b94b2e mdbx: упрощение gcu_loose(). 2025-01-26 16:36:55 +03:00
Леонид Юрьев (Leonid Yuriev)
56d1dbef45 mdbx: обновление года в ©. 2025-01-15 19:36:07 +03:00
Леонид Юрьев (Leonid Yuriev)
314b8ce1f0 mdbx: переименование (косметика). 2025-01-15 00:50:57 +03:00
Леонид Юрьев (Leonid Yuriev)
225fb79eb2 mdbx: переименование repnl/retxl. 2024-12-22 10:39:49 +03:00
Леонид Юрьев (Leonid Yuriev)
ffb7918525 mdbx: понижение уровня логирования "reserve depleted" при обновлении GC. 2024-12-22 10:39:49 +03:00
Леонид Юрьев (Leonid Yuriev)
8867c2ddc2 mdbx: новые настройки clang-format (косметика). 2024-12-11 21:22:04 +03:00
Леонид Юрьев (Leonid Yuriev)
2194349644 mdbx: устранение зацикливания обновления GC при фиксации транзакций.
В продолжение 6c56ed97bbd8ca46abac61886a113ba31e5f1291, включая исправление регрессов.
2024-11-22 20:14:45 +03:00
Леонид Юрьев (Leonid Yuriev)
6c56ed97bb mdbx: доработка/исправление и постоянная активация корректирующей обратной связи при обновлении GC.
При обновлении GC, с помещением/возвратом страниц, возникает рекурсивная
зависимость, так как страницы, необходимые для CoW-модификации GC и
размещения списков возвращаемых страниц, берутся/выделяются из этих-же
списков и/или из GC. Эта рекуррентная зависимость разрешается путём
подготовки необходимого запаса страниц и двух-стадийным заполнением
списков, с повторением всего цикла при изменении ситуации/расклада, плюс
применение некоторых эвристик и поправок. Кроме корректной работы,
принципиально важным тут является минимизация количества
повторов/рестартов процесса, в том числе исключение возможности
бесконечного зацикливания.

Существующая реализация многократно/итеративно дорабатывалась. Поэтому
она неплохо обкатана и стабильна, но одновременно сложна и запутана.

Тем не менее, до последнего момента для текущей реализации были известны
условия/сценарии, в которых сходимость итеративного процесса обновления
GC нарушалась и при фиксации транзакции возвращалась ошибка
MDBX_PROBLEM. Эти условия/сценарии очень специфичны и далеки от реальных
практических случаев, поэтому этот недостаток не мешал использованию
библиотеки.

Этим коммитом добавляется и активируется еще один механизм нацеленный на
улучшение сходимости и минимизацию повторов/рестартов. Суть механизма в
формировании и учета поправки, которая на следующем цикле позволит
учесть все переходные процессы/затраты вне зависимости от их природы, и
этим обеспечить моментальную сходимость.

В текущем понимании, описанный выше недостаток полностью
устраняется/исправляется этим коммитом.
2024-11-07 09:32:27 +03:00
Леонид Юрьев (Leonid Yuriev)
2b5d7ed29a mdbx: вывод номера транзакции при ситуации зацикливания внутри gc_update(). 2024-08-22 00:04:41 +03:00
Леонид Юрьев (Leonid Yuriev)
a2753c9ae1 mdbx: доработка gc_update() с отключением нового/нестабильного кода. 2024-06-19 14:18:18 +03:00
Леонид Юрьев (Leonid Yuriev)
3de3d425a1 mdbx: изменение лицензии и реструктуризация исходного кода. 2024-06-19 14:18:18 +03:00