2341 Commits

Author SHA1 Message Date
Леонид Юрьев (Leonid Yuriev)
69f85af242 mdbx-tools: добавление опций -d и -p для mdbx_copy. 2024-08-02 23:33:22 +03:00
Леонид Юрьев (Leonid Yuriev)
9eef3c3541 mdbx-tools: исправление сравнения thread_id для припаркованных транзакций. 2024-08-02 23:33:22 +03:00
Леонид Юрьев (Leonid Yuriev)
a0e278ff00 mdbx++: добавление обработки MDBX_EDEADLK в С++ API. 2024-08-02 23:33:22 +03:00
Леонид Юрьев (Leonid Yuriev)
d21ae28bb9 mdbx++: добавление обработки MDBX_MVCC_RETARDED в C++ API. 2024-08-02 23:33:22 +03:00
Леонид Юрьев (Leonid Yuriev)
b6b126195b mdbx: исправление упущенного TXN_END_EOTDONE при сбое старта читающей транзакции.
Упомянутый флажок отсутствовал в пути разрушения транзакции при ошибке
её запуска. Из-за чего делалась попытка разрушить курсоры, что приводило
к падению отладочных сборок, так как в них соответствующий массив
намеренно заполнен некорректными указателями.
2024-08-02 23:33:22 +03:00
Леонид Юрьев (Leonid Yuriev)
e7488bc30c mdbx: добавление mdbx_txn_copy2fd() и mdbx_txn_copy2pathname(), включая дополнительные опции. 2024-08-02 19:06:14 +03:00
Леонид Юрьев (Leonid Yuriev)
0a9d96affd mdbx: устранения ложной ошибки не-когерентности при использовании mdbx_dbi_sequence(MAIN_DBI) без других изменений.
Временная подпорка для coherency_check(), которую в перспективе
следует заменить вместе с переделкой установки mod_txnid.

Суть проблемы:
 - coherency_check() в качестве одного из критериев "когерентности"
   проверяет условие meta.maindb.mod_txnid == maindb.root->txnid;
 - при обновлении maindb.sequence высталяется DBI_DIRTY, что приведет
   к обновлению meta.maindb.mod_txnid = current_txnid;
 - однако, если в само дерево maindb обновление не вносились и оно
   не пустое, то корневая страницы останеться с прежним txnid и из-за
   этого ложно сработает coherency_check().

Временное (текущее) решение: Принудительно обновляем корневую
страницу в описанной выше ситуации. Это устраняет проблему, но и
не создает рисков регресса.

Итоговое решение, которое предстоит реализовать:
 - изменить семантику установки/обновления mod_txnid, привязав его
   строго к изменению b-tree, но не атрибутов;
 - обновлять mod_txnid при фиксации вложенных транзакций;
 - для dbi-хендлов пользовательских subDb (видимо) можно оставить
   DBI_DIRTY в качестве признака необходимости обновления записи
   subDb в MainDB, при этом взводить DBI_DIRTY вместе с обновлением
   mod_txnid, в том числе при обновлении sequence.
 - для MAIN_DBI при обновлении sequence не следует взводить DBI_DIRTY
   и/или обновлять mod_txnid, а только взводить MDBX_TXN_DIRTY.
 - альтернативно, можно перераспределить флажки-признаки dbi_state,
   чтобы различать состояние dirty-tree и dirty-attributes.
2024-08-01 22:08:26 +03:00
Леонид Юрьев (Leonid Yuriev)
dc7f15c63e mdbx-tools: отображение статусов parked/ousted для транзакций. 2024-07-27 12:47:21 +03:00
Леонид Юрьев (Leonid Yuriev)
9e3a36b74d mdbx: корректировка txn_end() для устранения лишних MDBX_TXN_OUSTED. 2024-07-27 12:44:06 +03:00
Леонид Юрьев (Leonid Yuriev)
2e7d325cf1 mdbx: добавление поддержки MDBX_OUSTED в mdbx_strerror() и C++ API. 2024-07-24 15:57:55 +03:00
Леонид Юрьев (Leonid Yuriev)
cb743d44fc mdbx: новый/поправленный clang-format. 2024-07-24 11:27:41 +03:00
Леонид Юрьев (Leonid Yuriev)
a430b3b288 mdbx: исправление опечатки 0x%u в логировании. 2024-07-24 11:22:59 +03:00
Леонид Юрьев (Leonid Yuriev)
69aa9e0fe1 mdbx: устранение лишней итерации внутри tree_rebalance().
Допускаем итерацию с не-вовлечением еще не-измененных страниц,
только когда страницы для объединения доступны справа и слева,

Т.е. допускаем итерацию для выбора лучшей альтернативы (справа или слева),
и избегаем этой итерации когда альтернативы нет.
2024-07-23 16:07:27 +03:00
Леонид Юрьев (Leonid Yuriev)
9309aa7e12 mdbx: уточнение комментариев в коде (косметика). 2024-07-23 15:58:59 +03:00
Леонид Юрьев (Leonid Yuriev)
0a36ed3ca1 mdbx: исправление опечатки в имени ior_sgv_gap4terminator. 2024-07-21 22:27:05 +03:00
Леонид Юрьев (Leonid Yuriev)
6b2b15ebc8 mdbx: допускаем лишние/устаревшие флаги для GC/FreeDB для старых БД. 2024-07-20 14:05:16 +03:00
Леонид Юрьев (Leonid Yuriev)
9d9a19ae17 mdbx: форматирование/пробелы/косметика. 2024-07-20 13:15:27 +03:00
Леонид Юрьев (Leonid Yuriev)
b1cc8b2e9f mdbx-windows: исправление нарезки FILE_SEGMENT_ELEMENT.
Ошибка слишком грубая.
Похоже при переработке I/O под Windows при `git pull --rebase` потерялся коммит.

К повреждению БД проблема не приводила, так как сбой происходил во время записи данных с возвратом ERROR_INVALID_PARAMETER из системного вызова.
2024-07-20 13:15:21 +03:00
Леонид Юрьев (Leonid Yuriev)
c46270ec56 mdbx-windows: исправление падения при логировании ошибки WriteFileGather(). 2024-07-20 13:15:21 +03:00
Леонид Юрьев (Leonid Yuriev)
7dee88e27f mdbx-test: вывод кадров стека для решения проблем Windows. 2024-07-18 20:57:10 +03:00
Леонид Юрьев (Leonid Yuriev)
242ebefdb7 mdbx-windows: добавление потерянного #include <wincrypt.h>. 2024-07-14 23:42:24 +03:00
Леонид Юрьев (Leonid Yuriev)
8e8ac09e14 mdbx: корректировка mdbx_enumerate_subdb(). 2024-07-13 16:13:11 +03:00
Леонид Юрьев (Leonid Yuriev)
32df0ad1eb mdbx: устранение регресса SIGSEGV при открытии БД с измененным размером страницы. 2024-07-12 11:43:12 +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)
319753661a mdbx: рефакторинг coherency_check_written(). 2024-07-05 22:00:05 +03:00
Леонид Юрьев (Leonid Yuriev)
9acbe88566 mdbx: добавление mdbx_enumerate_subdb(). 2024-07-05 00:25:28 +03:00
Леонид Юрьев (Leonid Yuriev)
49c6e14b30 mdbx++: расширение API методами принимающими имена subDb через mdbx::slice. 2024-07-04 23:20:37 +03:00
Леонид Юрьев (Leonid Yuriev)
69df6e6ac0 mdbx: корректировка assert-проверки внутри meta_override().
После доработок/рефакторинга условие проверки стало неверным.
2024-06-28 14:00:49 +03:00
Леонид Юрьев (Leonid Yuriev)
7abeac762f mdbx: устранение вероятности SIGSEGV при включении логирования MDBX_LOG_TRACE в отладочных сборках. 2024-06-26 09:44:42 +03:00
Леонид Юрьев (Leonid Yuriev)
a79a318d61 mdbx++: поддержка MDBX_VALIDATION. 2024-06-19 14:18:18 +03:00
Леонид Юрьев (Leonid Yuriev)
a2753c9ae1 mdbx: доработка gc_update() с отключением нового/нестабильного кода. 2024-06-19 14:18:18 +03:00
Леонид Юрьев (Leonid Yuriev)
e9c122af68 mdbx-windows: чистка результатов FormatMessageA() от концевых переводов строк. 2024-06-19 14:18:18 +03:00
Леонид Юрьев (Leonid Yuriev)
b940ae8fad mdbx++: использование \n вместо std::endl. 2024-06-19 14:18:18 +03:00
Леонид Юрьев (Leonid Yuriev)
5792eb31eb mdbx: добавление опций для subpage: limit, room_threshold, reserve_prereq, reserve_limit. 2024-06-19 14:18:18 +03:00
Леонид Юрьев (Leonid Yuriev)
2f66eb9fec mdbx-tools: преобразование из hex без переходов в mdbx_load. 2024-06-19 14:18:18 +03:00
Леонид Юрьев (Leonid Yuriev)
12eb2df57d mdbx: удаление DEFAULT_MAPSIZE. 2024-06-19 14:18:18 +03:00
Леонид Юрьев (Leonid Yuriev)
3de3d425a1 mdbx: изменение лицензии и реструктуризация исходного кода. 2024-06-19 14:18:18 +03:00
Леонид Юрьев (Leonid Yuriev)
95bc96dda3 mdbx: доработка update_gc() для улучшения сходимости с исправлением вероятности MDBX_PROBLEM. 2024-05-19 22:05:14 +03:00
Леонид Юрьев (Leonid Yuriev)
45377f20c5 mdbx: отключение уже ненужной отладки внутри txn_merge(). 2024-04-14 22:50:19 +03:00
Леонид Юрьев (Leonid Yuriev)
7c69493473 mdbx: добавление MDBX_opt_prefer_waf_insteadof_balance. 2024-04-05 00:19:08 +03:00
Леонид Юрьев (Leonid Yuriev)
b9fd42b9b3 mdbx: объявление опции MDBX_COALESCE устаревшей. 2024-04-04 15:00:27 +03:00
Леонид Юрьев (Leonid Yuriev)
e56c73b4e6 mdbx: добавление режима MDBX_NOSTICKYTHREADS вместо MDBX_NOTLS. 2024-04-04 12:52:50 +03:00
Леонид Юрьев (Leonid Yuriev)
1727b697a0 mdbx-doc: устранение отложенных недоработок в документации. 2024-04-04 12:52:30 +03:00
Леонид Юрьев (Leonid Yuriev)
d603de4a87 mdbx: исправление критической ошибки в TXN_FOREACH_DBI_FROM.
Какие-либо выпуски и стабильные ветки не были затронуты проблемой.
Ошибка была внесена 2023-11-05 коммитом e6af7d7c53428ca2892bcbf7eec1c2acee06fd44 в ветку `devel`.

Большое спасибо команде Erigon и особенно Алексею Шарову за помощь в поиске причины проблемы.
2024-04-03 12:59:06 +03:00
Леонид Юрьев (Leonid Yuriev)
bdff60e6a7 mdbx: исправление форматирования (косметика). 2024-04-02 13:33:12 +03:00
Леонид Юрьев (Leonid Yuriev)
639ba8b7a5 mdbx: переименование mdbx_env_chk_encount_problem(). 2024-04-01 16:06:09 +03:00
Леонид Юрьев (Leonid Yuriev)
2ce6ed33fa mdbx: устранение MDBX_EINVAL в случае mdbx_env_remove("."). 2024-04-01 16:06:09 +03:00
Леонид Юрьев (Leonid Yuriev)
5c3c7b9292 mdbx++: исправление инверсии bool-результата env::remove(). 2024-03-31 14:29:17 +03:00
Леонид Юрьев (Leonid Yuriev)
e9a49e3715 mdbx++: добавление перегрузок со std::string_view для методов open_map/create_map_/drop_map/clear_map/rename_map(). 2024-03-31 14:27:19 +03:00