4284 Commits

Author SHA1 Message Date
Леонид Юрьев (Leonid Yuriev)
8369b8ff64 mdbx-cmake: перемещение add_extra_test(). 2024-11-23 01:10:33 +03:00
Леонид Юрьев (Leonid Yuriev)
2194349644 mdbx: устранение зацикливания обновления GC при фиксации транзакций.
В продолжение 6c56ed97bbd8ca46abac61886a113ba31e5f1291, включая исправление регрессов.
2024-11-22 20:14:45 +03:00
Леонид Юрьев (Leonid Yuriev)
1c9c49dd1a mdbx-build: поддержка переменной среды SOURCE_DATE_EPOCH в качестве MDBX_BUILD_TIMESTAMP для воспроизводимости сборок. 2024-11-22 20:14:45 +03:00
Леонид Юрьев (Leonid Yuriev)
881d4d4207 mdbx-build: добавление build-metadata и опции сборки MDBX_BUILD_METADATA. 2024-11-22 20:14:45 +03:00
Леонид Юрьев (Leonid Yuriev)
2b71df417e mdbx-windows: использование ntdll вместо CRT только при явном отключении C++ API.
Изменение поведения по-умолчанию, но без утраты контроля.

Без изменения:
  Определение опции MDBX_WITHOUT_MSVC_CRT в значение 0 или 1 позволяет явно выбирать между использование ntdll и CRT.
  При этом включение C++ API (MDBX_BUILD_CXX=1) требует использования CRT.

Ранее:
  По-умолчанию, когда не определены опции MDBX_WITHOUT_MSVC_CRT и MDBX_BUILD_CXX, делался выбор в пользу использования ntdll, вместо CRT.

Теперь:
  Функции ntdll будет использоваться вместо CRT только если явно выключена поддержка C++ API (задано MDBX_BUILD_CXX=0).
2024-11-21 19:47:26 +03:00
Леонид Юрьев (Leonid Yuriev)
5815ff2ef7 mdbx: переделка костыля namespace::attr для MSVC и Apple. 2024-11-21 19:47:26 +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)
efaa46d7cd mdbx: предотвращение незначащих, но мешающих отладке, ошибок внутри copy2fd(). 2024-11-17 22:52:07 +03:00
Леонид Юрьев (Leonid Yuriev)
92dec0bca9 mdbx: исправление утечки памяти из-за регресса в txn_end() при добавлении парковки транзакций.
Если читающая транзакция была припаркована и затем вытеснена, то при её
завершении ресурсы не освобождались.
2024-11-17 22:52:07 +03:00
Леонид Юрьев (Leonid Yuriev)
c13efb791f mdbx-testing: логирование флагов/опций в copy-сценарии. 2024-11-17 22:52:07 +03:00
Леонид Юрьев (Leonid Yuriev)
12442bd1f4 mdbx-testing: корректировка контроля результата в copy-сценарии. 2024-11-17 22:51:56 +03:00
Леонид Юрьев (Leonid Yuriev)
f5b1e36b9e mdbx-testing: устранение лишней установки prng при завершении цикла тестов. 2024-11-17 10:29:54 +03:00
Леонид Юрьев (Leonid Yuriev)
f32d3f260f mdbx: безусловное прерывание транзакции при опции MDBX_CP_DISPOSE_TXN. 2024-11-16 11:18:47 +03:00
Леонид Юрьев (Leonid Yuriev)
47f96b6afa mdbx: дополнение ChangeLog. 2024-11-15 15:58:48 +03:00
Леонид Юрьев (Leonid Yuriev)
0306ba8136 mdbx-dist: отключение clang-format в амальгамированном исходном коде. 2024-11-13 19:16:26 +03:00
Леонид Юрьев (Leonid Yuriev)
a2984c604d mdbx-cmake: переформатирование cmake-скриптов. 2024-11-13 15:05:26 +03:00
Леонид Юрьев (Leonid Yuriev)
5862a4b542 mdbx-cmake: исправление упущенных POST_BUILD в add_custom_command(). 2024-11-13 15:05:26 +03:00
Леонид Юрьев (Leonid Yuriev)
e2b4245abe mdbx: дополнение .gitignore 2024-11-13 15:05:26 +03:00
Леонид Юрьев (Leonid Yuriev)
b5def26565 mdbx-make: добавление целей cmake-build и ninja. 2024-11-13 15:05:26 +03:00
Леонид Юрьев (Leonid Yuriev)
e27537dd9d mdbx-make: добавление префикса @ к именам служебных/временных файлов/каталогов. 2024-11-13 15:05:26 +03:00
Леонид Юрьев (Leonid Yuriev)
f550c65476 mdbx-make: использование VERSION.json с полной информацией вместо однострочного текстового файла. 2024-11-13 15:05:26 +03:00
Леонид Юрьев (Leonid Yuriev)
ab4bf2d7f0 mdbx-cmake: экспорт/импорт информации о версии в VERSION.json 2024-11-13 15:05:26 +03:00
Леонид Юрьев (Leonid Yuriev)
871bb7f56c mdbx: обмен порядка атрибутов pure|const/maybe_unused в определении функций. 2024-11-13 15:05:26 +03:00
Леонид Юрьев (Leonid Yuriev)
7aa5d9ab97 mdbx++: доработка использования std::experimental::filesystem. 2024-11-13 15:05:26 +03:00
Леонид Юрьев (Leonid Yuriev)
6893a79c70 mdbx-testing: добавление extra/cursor_closing. 2024-11-10 20:17:44 +03:00
Леонид Юрьев (Leonid Yuriev)
6f41276dbc mdbx++: поддержка вложенных пишущих транзакций. 2024-11-10 20:17:44 +03:00
Леонид Юрьев (Leonid Yuriev)
9da743515c mdbx-cmake: включение тестов использующих mdbx::path на Windows только для C++17 и выше. 2024-11-10 20:17:44 +03:00
Леонид Юрьев (Leonid Yuriev)
9b9d6c6d65 mdbx-cmake: очистка условий включения стандартов C и C++. 2024-11-10 20:17:44 +03:00
Леонид Юрьев (Leonid Yuriev)
bd7b272bca mdbx-tests: корректировка использования mdbx::default_buffer для совместимости с C++11. 2024-11-10 20:17:44 +03:00
Леонид Юрьев (Leonid Yuriev)
4cc1c7d8de mdbx: доработка MDBX_DEPRECATED_ENUM для старых компиляторов при включении С++11. 2024-11-10 20:17:44 +03:00
Леонид Юрьев (Leonid Yuriev)
10a93f4b9f mdbx: дополнение ChangeLog. 2024-11-07 11:40:16 +03:00
Леонид Юрьев (Leonid Yuriev)
ca8e9fe7b1 mdbx-testing: переименование скрипта stochastic.sh 2024-11-07 09:32:27 +03:00
Леонид Юрьев (Leonid Yuriev)
c0e5108d71 mdbx-testing: реализация/перенос поддержки сценария мелких транзакций в long_stochastic скрипт. 2024-11-07 09:32:27 +03:00
Леонид Юрьев (Leonid Yuriev)
00be608af9 mdbx-testing: проверка версии bash >= 4.3 2024-11-07 09:32:27 +03:00
Леонид Юрьев (Leonid Yuriev)
6c56ed97bb mdbx: доработка/исправление и постоянная активация корректирующей обратной связи при обновлении GC.
При обновлении GC, с помещением/возвратом страниц, возникает рекурсивная
зависимость, так как страницы, необходимые для CoW-модификации GC и
размещения списков возвращаемых страниц, берутся/выделяются из этих-же
списков и/или из GC. Эта рекуррентная зависимость разрешается путём
подготовки необходимого запаса страниц и двух-стадийным заполнением
списков, с повторением всего цикла при изменении ситуации/расклада, плюс
применение некоторых эвристик и поправок. Кроме корректной работы,
принципиально важным тут является минимизация количества
повторов/рестартов процесса, в том числе исключение возможности
бесконечного зацикливания.

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

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

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

В текущем понимании, описанный выше недостаток полностью
устраняется/исправляется этим коммитом.
2024-11-07 09:32:27 +03:00
Леонид Юрьев (Leonid Yuriev)
acb15790b4 mdbx-testing: косметика в long_stochastic.sh для уменьшения объема вывода в консоль. 2024-11-06 13:43:40 +03:00
Леонид Юрьев (Leonid Yuriev)
029f14280b mdbx-testing: удаление /usr/bin/time так как rusage() есть в коде теста. 2024-11-06 13:15:25 +03:00
Леонид Юрьев (Leonid Yuriev)
af41bcf11e mdbx-testing: исправление опечатки для /usr/bin/banner. 2024-11-06 13:15:25 +03:00
Леонид Юрьев (Leonid Yuriev)
2669f285f9 mdbx-testing: проверка поддержки tee -p. 2024-11-06 13:14:58 +03:00
Леонид Юрьев (Leonid Yuriev)
157ede4e42 mdbx-testing: добавление опции --report-depth для сокращения накладных расходов. 2024-11-06 13:14:58 +03:00
Леонид Юрьев (Leonid Yuriev)
6067ba5f9d mdbx-testing: минимальная обработка SIGINT/SIGTERM/SIGHUP/SIGQUIT для прозрачности прерываний в логах. 2024-11-06 13:14:58 +03:00
Леонид Юрьев (Leonid Yuriev)
2c919c0efe mdbx-testing: предотвращение потери логов из-за отстрела gzip/lz4 в составе группы процессов. 2024-11-06 13:14:58 +03:00
Леонид Юрьев (Leonid Yuriev)
de36d94aca mdbx: предотвращение включения отладки только из-за активации assert-проверок. 2024-11-04 20:42:39 +03:00
Леонид Юрьев (Leonid Yuriev)
8571eac81b mdbx-cmake: корректировка пробы OpenMP. 2024-10-28 08:55:37 +03:00
Леонид Юрьев (Leonid Yuriev)
dc6f29a046 mdbx: импорт дополнений ChangeLog из ветки stable. 2024-10-27 23:00:34 +03:00
Леонид Юрьев (Leonid Yuriev)
90642bffab mdbx: импорт обновления патча для старых версий buildroot из ветки stable. 2024-10-27 22:59:20 +03:00
Леонид Юрьев (Leonid Yuriev)
b8f9b8659c mdbx: дополнение ChangeLog. 2024-10-26 23:23:17 +03:00
Леонид Юрьев (Leonid Yuriev)
3d6e196422 mdbx: исправление отрытия таблицы с пустым/нулевым именем и устранение SIGSEGV при её закрытии. 2024-10-26 09:57:10 +03:00
Леонид Юрьев (Leonid Yuriev)
03077773cb mdbx-testing: добавление extra/early_close_dbi. 2024-10-26 09:57:10 +03:00
Леонид Юрьев (Leonid Yuriev)
5dc1f36b67 mdbx++: смена базового типа на intptr_t для размерных констант mdbx::env::geometry. 2024-10-26 09:49:22 +03:00