4610 Commits

Author SHA1 Message Date
Леонид Юрьев (Leonid Yuriev)
df3a18d0cf mdbx: update ChangeLog (v0.3.17 release candidate). 2025-07-26 15:40:22 +03:00
Леонид Юрьев (Leonid Yuriev)
675b462601 mdbx-tests: random order of a parameterized tests inside the stochastic script (backport). 2025-07-26 15:40:04 +03:00
Леонид Юрьев (Leonid Yuriev)
7c990542e3
mdbx: *** using english for commit titles at the request of community ***.
At the request of several non-Russian-speaking developers, it was
decided to return to using English in the commit' brief-headers at least.
2025-07-26 14:57:43 +03:00
Леонид Юрьев (Leonid Yuriev)
9093435ce6 mdbx: ссылки на зеркала в документации (backport). 2025-07-26 14:54:26 +03:00
Леонид Юрьев (Leonid Yuriev)
7ef7a1f983 mdbx-tests: актуализация секции cross-qemu в GNUmakefile (backport). 2025-07-25 13:55:41 +03:00
Леонид Юрьев (Leonid Yuriev)
ac275d246b mdbx-tests: использование SysV-семафоров при cross-тестах посредством qemu (backport). 2025-07-25 13:55:41 +03:00
Леонид Юрьев (Leonid Yuriev)
d2f4697df3 mdbx-tests: явное NUMA-распределение в battery/tmux-тесте (backport). 2025-07-25 13:55:41 +03:00
Леонид Юрьев (Leonid Yuriev)
b107842c3d mdbx-tests: поддержка опции --numa # для привязки стохастического теста к NUMA-узлу (backport). 2025-07-25 13:55:41 +03:00
Леонид Юрьев (Leonid Yuriev)
cb428e613f
mdbx: дополнение ChangeLog. 2025-07-20 20:46:33 +03:00
Леонид Юрьев (Leonid Yuriev)
5c69cb322a mdbx: переработка ошибок файловых блокировок в API копирования с устранением проблемы на OSX (backport).
На POSIX-платформах внутри API копирования используются файловый
блокировки `fcntl(F_SETLK)` и `flock()`, так как только совместное
использование обеспечивает блокировку на всех платформах и файловых
системах, включая NFS и SMB.

Однако, в зависимости от платформы, версии ядра ОС, типа файловой
системы, а в случае NFS/SMB также от удаленной стороны, используемые
системные файловые блокировки могут не работать или конфликтовать между
собой (в частности на OSX).

Поэтому в этом коммите реализуется более гибкий подход. Если кратко,
то допускается отказ одной из блокировок при успехе другой:

 - При успехе fcntl(F_SETLK) допускается EAGAIN/EWOULDBLOCK и EREMOTEIO от flock(),
   если целевой файл на не-локальной файловой системе, а также на не-Linux платформах,
   где одновременная блокировка может быть не разрешена fcntl(F_SETLK) и flock().

 - При успехе flock() допускается ENOTSUP и REMOTEIO от fcntl(F_SETLK),
   если целевой файл на не-локальной файловой системе.
2025-07-20 17:05:31 +03:00
Леонид Юрьев (Leonid Yuriev)
6318ca701a mdbx: добавление ignore_enosys_and_einval() и её использование для отказа от OFD-блокировок (backport). 2025-07-20 17:05:31 +03:00
Леонид Юрьев (Leonid Yuriev)
9c1f3aa4b5 mdbx: разделение ignore_enosys() и ignore_enosys_and_eagain() (backport-required). 2025-07-20 17:05:31 +03:00
Леонид Юрьев (Leonid Yuriev)
759d0442d4 mdbx-tests: дополнение extra/dbi (backport). 2025-07-19 21:56:11 +03:00
Леонид Юрьев (Leonid Yuriev)
6cb9305b31 mdbx: устранение возможности неверного возврата MDBX_DBS_FULL при открытии DBI-дескрипторов (backport).
В lockfree-пути открытия DBI-дескрипторов, при просмотре уже открытых
таблиц, пропускались элементы отличающиеся не только по имени, но также
и при несовпадении запрашиваемых флагов и актуальных флагов уже открытой
таблицы.

Если при этом уже было достигнуто (ранее заданное) максимальное
количество открытых DBI-дескрипторов, то возвращалась ошибка
`MDBX_DBS_FULL`, в том числе в ситуациях когда результат должен быть
другим.

Спасибо [Артёму Воротникову](https://github.com/vorot93) за сообщение о проблеме!
2025-07-19 21:56:05 +03:00
Леонид Юрьев (Leonid Yuriev)
68f9dc18be mdbx-tests: дополнение extra/txn сценарием провоцирующим гонку за атрибуты MainDB-DBI (backport). 2025-07-19 21:56:05 +03:00
Леонид Юрьев (Leonid Yuriev)
f5aa804a2d mdbx: устранение неожиданной ошибки MDBX_BAD_DBI при гонках внутри процесса (backport).
Запуск читающих и пишущих транзакций взаимно не блокируется. Однако,
внутри одного процесса, DBI-хендлы и атрибуты таблиц используются
совместно всеми транзакциями (в рамках экземпляра среды работы с БД).
Поэтому после изменения атрибутов таблиц, в том числе при первоначальном
чтении актуальных атрибутов MainDB, может возникать состояние гонок при
одновременном старте нескольких транзакций.

Этим коммитом исправляются недочеты в обработке ситуации таких гонок,
из-за чего могла возвращается неожиданная (с точки зрения пользователя)
ошибка `MDBX_BAD_DBI`.

Формально ошибка присутствовала начиная с коммита `e6af7d7c53428ca2892bcbf7eec1c2acee06fd44` от 2023-11-05.
Однако, до этого (исторически, как было унаследовано от LMDB)
отсутствовал какой-либо контроль смены атрибутов MainDB во время старта
и/или работы транзакций. Поэтому вместо возврата каких-либо ошибок
подобные состояние гонок и/или связанные с изменением атрибутов MainDB
оставались необработанными/незамеченными, либо проявлялись как редкие
неуловимые сбои пользовательских приложений.

Спасибо [Артёму Воротникову](https://github.com/vorot93) за сообщение о проблеме!
2025-07-19 21:55:52 +03:00
Леонид Юрьев (Leonid Yuriev)
7468ce6ada mdbx: исправление resurrect-after-fork при использовании SysV-семафоров (backport).
Ошибка/недоработка была с первой реализации resurrect-after-fork в
ноябре 2023, но оставалась не замеченной из-за отсутствия
CI-тестирования на платформе OSX/Mac (где нет поддержки разделяемых
мьютексов).
2025-07-16 23:18:28 +03:00
Леонид Юрьев (Leonid Yuriev)
decf34fd2b mdbx-make: изменение кол-ва внутренних итераций прогона тестов для уменьшения затрат на CI (backport). 2025-07-16 23:18:28 +03:00
Леонид Юрьев (Leonid Yuriev)
f1b933c541 mdbx: отключение MSVC предупреждений C5286 и C5287 (backport). 2025-07-16 23:18:28 +03:00
Леонид Юрьев (Leonid Yuriev)
230fbd64f5 mdbx: удаление/исправление лишних assert-проверок (backport, squashed). 2025-07-16 23:17:38 +03:00
Леонид Юрьев (Leonid Yuriev)
e8bfffc9f6
mdbx: исправление опечатки MDBX_ENOMEM (backport).
Вместо `MDBX_ENOMEM` был использован идентификатор `ENOMEM`,
что могло ломать сборку на не-POSIX/Windows платформах,
в зависимости от конфигурации и/или версии SDK.
2025-06-01 11:32:37 +03:00
Леонид Юрьев (Leonid Yuriev)
6abaa67eb8 mdbx: дополнение ChangeLog. 2025-05-21 14:22:49 +03:00
Леонид Юрьев (Leonid Yuriev)
266937e72d mdbx: перемещение и доработка проверки _FILE_OFFSET_BITS для Android (backport). 2025-05-21 14:20:09 +03:00
Леонид Юрьев (Leonid Yuriev)
5c44dd201c
mdbx: обновление патча для старых версий buildroot. 2025-04-22 14:43:37 +03:00
Леонид Юрьев (Leonid Yuriev)
f4384800b5 mdbx: обновление ChangeLog. 2025-04-22 13:10:30 +03:00
Леонид Юрьев (Leonid Yuriev)
a971c76aff
v0.13.6 "Бузина".
Поддерживающий выпуск стабильной ветки с исправлением обнаруженных ошибок и устранением недочётов,
в память о погибшем украинском историке и писателе [Алесе Бузине](https://ru.ruwiki.ru/wiki/Бузина,_Олесь_Алексеевич).

За перечнем доработок и изменений обращайтесь к [ChangeLog](https://libmdbx.dqdkfa.ru/md__change_log.html).

git diff' stat: 15 files changed, 194 insertions(+), 36 deletions(-).
Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>
v0.13.6
2025-04-22 11:53:23 +03:00
Леонид Юрьев (Leonid Yuriev)
b6f918aa1c
mdbx: исправление опечатки в логировании (backport). 2025-04-22 11:17:39 +03:00
Леонид Юрьев (Leonid Yuriev)
ab2f661c97
mdbx: дополнение ChangeLog. 2025-04-20 00:01:59 +03:00
Леонид Юрьев (Leonid Yuriev)
5548ef20f6
mdbx: переупорядочивание атрибутов для совместимости с GCC-15 в режиме C23 (backport). 2025-04-19 23:44:07 +03:00
Леонид Юрьев (Leonid Yuriev)
679c1eb939
mdbx-tests: обнуление pid на входе в osal_actor_poll() (backport). 2025-04-19 23:43:43 +03:00
Леонид Юрьев (Leonid Yuriev)
76a588f91b
mdbx: исправление возврата MDBX_BAD_TXN вместо MDBX_EINVAL из mdbx_cursor_unbind() в особых случаях (backport). 2025-04-19 23:42:59 +03:00
Леонид Юрьев (Leonid Yuriev)
6b5515908b
mdbx: предотвращение возврата неожиданной ошибки MDBX_BUSY из mdbx_txn_lock(dont_wait=false) (backport). 2025-04-19 23:42:34 +03:00
Леонид Юрьев (Leonid Yuriev)
214fa153e2
mdbx: дополнение ChangeLog. 2025-04-10 16:54:13 +03:00
Леонид Юрьев (Leonid Yuriev)
819551ce13
mdbx-tests: расширение и доработка сценария extra/cursor-closing (backport). 2025-04-10 16:37:42 +03:00
Леонид Юрьев (Leonid Yuriev)
a22c0c5c48
mdbx: подсказка для Coverity для подавления ложно-положительных предупреждений (backport). 2025-04-10 16:35:53 +03:00
Леонид Юрьев (Leonid Yuriev)
9540cabf5f
mdbx: возврат MDBX_EINVAL из mdbx_cursor_bind() при невозможности отвязки курсора от его текущей транзакции (backport). 2025-04-10 16:34:57 +03:00
Леонид Юрьев (Leonid Yuriev)
0e3b093eb5
mdbx: исправление неверной assert-проверки и микрооптимизация (backport).
В пути фиксации вложенных транзакций, условие в assert-проверке не было
корректным для случая, когда таблица уже существовала и её дескриптор
был открыт, использовался в завершаемой вложенной транзакции, но не
использовался в родительской.

Это исправление недочета также передаёт, уже загруженное из БД, кешируемое
состояние таблицы в родительскую транзакцию.
2025-04-10 16:34:19 +03:00
Леонид Юрьев (Leonid Yuriev)
5d38add405
mdbx: исправление ошибок merge/rebase (backport). 2025-04-10 16:33:10 +03:00
Леонид Юрьев (Leonid Yuriev)
b55a41f604
mdbx: дополнение ChangeLog. 2025-04-09 22:18:13 +03:00
Леонид Юрьев (Leonid Yuriev)
29bed7cf5d mdbx: игнорирование EAGAIN от flock() в случае копирования на NFS. 2025-04-09 22:18:07 +03:00
Леонид Юрьев (Leonid Yuriev)
8d0eceee9f mdbx: отключение использования copy_file_range() для ядер linux 5.3-5.18 включительно. 2025-04-07 05:28:16 +03:00
Леонид Юрьев (Leonid Yuriev)
56a6377622
mdbx: понижение уровня логирования для "skip update meta" (backport).
Спасибо [Илье Михееву](https://github.com/JkLondon) за сообщение о недочете.
2025-03-28 15:14:54 +03:00
Леонид Юрьев (Leonid Yuriev)
19dc93fc76
mdbx: дополнение ChangeLog. 2025-03-23 17:46:28 +03:00
Леонид Юрьев (Leonid Yuriev)
5f1d8dcb3e mdbx: уточнение типа адреса для донатов (backport). 2025-03-22 23:33:13 +03:00
Леонид Юрьев (Leonid Yuriev)
3d2b221256 mdbx++: вброс std::invalid_argument с явным сообщением "MDBX_EINVAL" (backport). 2025-03-22 23:32:57 +03:00
Леонид Юрьев (Leonid Yuriev)
ca1808d57f mdbx-test: расширение extra/cursor-closing (backport). 2025-03-22 23:32:57 +03:00
Леонид Юрьев (Leonid Yuriev)
aa98d6a88e
mdbx: обновление NOTICE. 2025-03-22 23:31:47 +03:00
Леонид Юрьев (Leonid Yuriev)
b9b14f0061
mdbx: устранение регресса при использовании курсоров для DBI=0 в читающих транзакциях (hotfix).
В результате рефакторинга и ряда оптимизаций для завершения/гашения
курсоров в читающих и пишущих транзакций стал использоваться общий код.
Причем за основу, был взят соответствующий фрагмент относящийся к
пишущим транзакциям, в которых пользователю не позволяется
использоваться курсоры для DBI=0 и поэтому эта итераций пропускалась.

В результате, при завершении читающих транзакциях, курсоры связанные с
DBI=0 не завершались должным образом, а при их повторном использовании
или явном закрытии после завершения читающей транзакции происходило
обращение к уже освобожденной памяти. Если же такие курсоры
отсоединялись или закрывались до завершения читающей транзакции, то
ошибка не имела шансов на проявление.

Спасибо Илье Михееву (https://github.com/JkLondon) и команде Erigon (https://erigon.tech) за сообщения о проблеме.
2025-03-22 20:01:52 +03:00
Леонид Юрьев (Leonid Yuriev)
e3324cef91
mdbx: выпуск 0.13.5 "Труба".
Поддерживающий выпуск стабильной ветки с исправлением обнаруженных ошибок и устранением недочётов.

За перечнем доработок и изменений обращайтесь к [ChangeLog](https://libmdbx.dqdkfa.ru/md__change_log.html).

git diff' stat: 49 files changed, 2106 insertions(+), 1135 deletions(-)
Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>
v0.13.5
2025-03-21 21:14:00 +03:00
Леонид Юрьев (Leonid Yuriev)
bb664152b8
mdbx: дополнение ChangeLog (подготовка к выпуску). 2025-03-20 23:53:22 +03:00