Леонид Юрьев (Leonid Yuriev)
54d8c0d290
mdbx: переработка проверка размера файла БД при открытии.
...
Переработка 05cdf9d202b14ac09c801c7893e65271fa27f378. У предыдущего
варианта был недостаток, при необходимости выдачи предупреждения
и открытии БД с изменением геометрии, предупреждение не выдавалось,
что может затруднять анализ/разбор проблемных ситуаций.
2025-02-20 23:11:28 +03:00
Леонид Юрьев (Leonid Yuriev)
05cdf9d202
mdbx: устранение излишнего предупреждения при смене размера БД во время открытия.
...
Изменение геометрии (увеличение размера) больших БД может быть не
возможно после их открытия вследствие системных ограничений (отсутствия
свободного адресного пространства).
Поэтому API предусматривает возможность запросить изменение
геометрии/размера БД перед её открытием. В этом сценарии ранее могло
выдаваться лишнее/ненужное предупреждение о несоответствии файла БД
новому размеру. Теперь этот недостаток исправлен.
Спасибо Илье Михееву (Erigon) за сообщение об этом недочете.
2025-02-19 23:22:18 +03:00
Леонид Юрьев (Leonid Yuriev)
4730abe3e5
mdbx: корректировка излишне строгого условия в assert-проверке внутри recalculate_subpage_thresholds()
.
2025-02-11 14:01:10 +03:00
Леонид Юрьев (Leonid Yuriev)
cb8eec6d11
mdbx: устранение регресса вероятности SIGSEGV при вытеснении/spilling страниц.
...
Ошибка внесена коммитом `a6f7d74a32a3cbcc310916a624a31302dbebfa07` от
2024-03-07 и присутствует в выпусках v0.13.1, v0.13.2, v0.13.3. Проблема
оставалась незамеченной из-за специфических условий и низкой вероятности
проявления.
Суть ошибки:
- функция cursor_touch() подготавливает стек страниц курсора к внесению
изменений, при этом все страницы в стеке (от корневой до листовой
в текущей позиции курсора) должны стать доступными для модификации.
- микрооптимизация добавленная коммитом пропускала обход стека, если
корневая страница уже доступна для модификации, но это
допустимо/корректно только при отсутствии в стеке вытесненных/spilled
страниц.
- если же складывалась ситуация когда в стека была вытесненная
некорневая страница, то она так и оставалась недоступной для записи и
при попытке её изменения возникал SIGSEGV.
2025-01-27 10:09:04 +03:00
Леонид Юрьев (Leonid Yuriev)
340bd080c9
mdbx: исправление опечатки в cursor_touch()
.
...
При переделке курсоров было пропущено отрицание в условии, при оценке
кол-ва страниц, которые могут потребоваться для выполнения операции.
В текущем понимании ошибка не приводила к каким-либо проблемам, ибо
оценка делает по верхней границе с существенным запасом, а в худшем
случае это могло приводить к прерыванию транзакции из-за достижения
ограничения на кол-во грязных страниц.
2025-01-26 16:37:00 +03:00
Леонид Юрьев (Leonid Yuriev)
7074b94b2e
mdbx: упрощение gcu_loose()
.
2025-01-26 16:36:55 +03:00
Леонид Юрьев (Leonid Yuriev)
beb5a81d12
mdbx-doc: обновление номера версии и даты в заголовках man-страниц.
2025-01-17 18:29:15 +03:00
Леонид Юрьев (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)
0accf98ff7
mdbx: добавление опции сборки MDBX_ENABLE_NON_READONLY_EXPORT
и логирование соответствующих ситуаций.
...
Закрывает [запрос](https://gitflic.ru/project/erthink/libmdbx/issue/16 ).
2025-01-14 13:26:54 +03:00
Леонид Юрьев (Leonid Yuriev)
950db52fe8
mdbx: выделение basal/ro/nested txn-функций в отдельные файлы (без изменений кода).
2025-01-14 13:26:54 +03:00
Леонид Юрьев (Leonid Yuriev)
380385c1db
mdbx: упрощение выхода по not-found пути из cursor_seek()
.
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)
2b9401e372
mdbx: рефакторинг mdbx_txn_commit_ex()
1/5 (переменование локальных timestamp-переменных).
2025-01-14 13:26:54 +03:00
Леонид Юрьев (Leonid Yuriev)
6fe7baa1b8
mdbx: упрощение mdbx_txn_break()
.
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)
a89d418c91
mdbx: рефакторинг mdbx_txn_straggler()
с добавлением проверки env
.
2025-01-14 13:26:54 +03:00
Леонид Юрьев (Leonid Yuriev)
585ccdf716
mdbx: изменение TXN_END_NAMES
.
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)
a994a9bbcc
mdbx: использование MDBX_GET_BOTH
для проверки наличия добавляемого значения в таблице.
2025-01-13 16:55:41 +03:00
Леонид Юрьев (Leonid Yuriev)
c751977bf7
mdbx-tools: добавление логирования ошибок/предупреждений по все утилиты.
2025-01-12 14:38:20 +03:00
Леонид Юрьев (Leonid Yuriev)
e5fe279632
mdbx: логирование ошибок при открытии lck-файла.
2025-01-12 14:30:39 +03:00
Леонид Юрьев (Leonid Yuriev)
8408a2eed3
mdbx: добавление разделителя между MDBX_BUILD_FLAGS_CONFIG
и MDBX_BUILD_FLAGS
(косметика).
2025-01-12 11:54:24 +03:00
Леонид Юрьев (Leonid Yuriev)
0297136648
mdbx: улучшение авто-переключения в режим without-lck при открытии БД на read-only-носителе.
2025-01-12 02:58:59 +03:00
Леонид Юрьев (Leonid Yuriev)
92a49c7c8c
mdbx: устранение риска потери/перезаписи errno
при неожиданных ошибках в close()
.
2025-01-12 02:58:59 +03:00
Леонид Юрьев (Leonid Yuriev)
b75e16f4f8
mdbx: устранение null-dereference регресса в режиме readonly-without-lck.
2025-01-12 02:58:59 +03:00
Леонид Юрьев (Leonid Yuriev)
9c8f90b713
mdbx: доработка эвристик для выбора/подстройки default-значений в mdbx_env_set_geometry()
.
2025-01-11 02:30:53 +03:00
Леонид Юрьев (Leonid Yuriev)
b00e8ea13f
mdbx: использование txl_contain()
в audit()
.
2025-01-08 13:29:10 +03:00
Леонид Юрьев (Leonid Yuriev)
faa9753d2d
mdbx: перемещение и корректировка комментария размечающего внутренние поля пишущей транзакции.
2025-01-05 14:44:00 +03:00
Леонид Юрьев (Leonid Yuriev)
5ba257fafc
mdbx: добавление упущенного static
для txl_reserve()
.
2025-01-05 14:44:00 +03:00
Леонид Юрьев (Leonid Yuriev)
bad6e3c2e2
mdbx: очистка флажка ENV_TXKEY
внутри rthc_dtor()
.
...
На штатную работу это никак не влияет, но немного облегчит разбор
ситуаций когда глобальный конструктор не вызывается, либо делается
попытка вызвать его дважды (из-за ошибок rtc/libc, etc).
2025-01-05 14:40:56 +03:00
Леонид Юрьев (Leonid Yuriev)
dc98f06d2c
mdbx: логирование и возврат MDBX_INCOMPATIBLE
при попытке запуска вложенных транзакций в режиме MDBX_WRITEMAP
.
2025-01-03 22:14:00 +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)
1e4e2eb3c8
mdbx-doc: исправление опечатки в комментарии.
2024-12-29 08:42:48 +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)
c8c541649c
mdbx: доработка контроля длины ключа внутри cursor_seek()
.
...
Ранее проверка внутри cursor_seek() не позволяла искать ключи длиннее чем можно поместить в таблицу,
что при поиске/позиционировании не является ошибкой для ключей переменного размера.
2024-12-27 09:39:36 +03:00
Леонид Юрьев (Leonid Yuriev)
bfc6795762
mdbx: устранение регресса не-отпускания мьютекса при попытки повторного закрытия dbi-хендла.
...
Ошибка была внесена 2024-10-23 коммитом v0.13.1-35-g3049bb87b5b14d83b16d121c186ce8fb3f21383e.
2024-12-22 10:39:49 +03:00
Леонид Юрьев (Leonid Yuriev)
a76e06a48e
mdbx: исправление несогласованности MDBX_DPL_PREALLOC_FOR_RADIXSORT
и assert-проверки внутри dpl_bytes2size()
.
2024-12-22 10:39:49 +03:00
Леонид Юрьев (Leonid Yuriev)
b9e4c1ea73
mdbx: вычленение txl_contain()
.
2024-12-22 10:39:49 +03:00
Леонид Юрьев (Leonid Yuriev)
bc56a613ab
mdbx: чистка исходников pnl/dpl/txl.
2024-12-22 10:39:49 +03:00