4349 Commits

Author SHA1 Message Date
Леонид Юрьев (Leonid Yuriev)
00c5bbcc5e mdbx: дополнение ChangeLog. 2024-12-22 10:39:49 +03:00
Леонид Юрьев (Leonid Yuriev)
471b14a147 mdbx-tests: проверка случая повторного закрытия dbi-хендла. 2024-12-22 10:39:49 +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
Леонид Юрьев (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)
0339aa56d9 mdbx: перенос prefault_write_activated в транзакцию. 2024-12-22 10:39:49 +03:00
Леонид Юрьев (Leonid Yuriev)
4059686534 mdbx: опечатки в комментариях. 2024-12-22 10:39:49 +03:00
Леонид Юрьев (Leonid Yuriev)
ab57ce7d5f mdbx: добавление ссылки на новые привязки к Python. 2024-12-21 19:36:54 +03:00
Леонид Юрьев (Leonid Yuriev)
462af2be48 mdbx: исправление ошибки редактирования README. 2024-12-20 11:46:01 +03:00
Леонид Юрьев (Leonid Yuriev)
d3a27d27f6 mdbx-doc: добавление yandex-метрики в генерируемый html. 2024-12-19 17:49:40 +03:00
Леонид Юрьев (Leonid Yuriev)
0d1c08677d mdbx: корректировка ChangeLog. 2024-12-18 13:01:52 +03:00
Леонид Юрьев (Leonid Yuriev)
e43cf69a0c mdbx-doc: изменение базы ссылок online-перевода с gitflic.ru на libmdbx.dqdkfa.ru. 2024-12-18 12:27:37 +03:00
Леонид Юрьев (Leonid Yuriev)
891fa1d435 mdbx: корректировка doxygen-комментариев. 2024-12-18 01:25:50 +03:00
Леонид Юрьев (Leonid Yuriev)
5a9eea8acc mdbx: дополнение ChangeLog. 2024-12-18 01:21:00 +03:00
Леонид Юрьев (Leonid Yuriev)
e15079ec68 mdbx: изменение log_if_error() ради устранения ложных "may be used uninitialized" предупреждений в LTO-сборках.
При включении LTO анализатор путей выполнения внутри GCC начинает укачивать из-за выражений вида `return LOG_IFERR(MDBX_EINVAL);`

Проблема в том, что несмотря на __builtin_assume() и __builtin_unreachable(), комплятор не хочет
видеть что функция log_if_error() всегда возвращает получаемое значение. А если допустить что значение
будет изменено, то вместо ошибки может быть MDBX_SUCCESS, и тогда в вызывающем как-бы может произойти
обращение к неинициализированным данным, что и беспокоит компилятор.

Например, при сборке mdbx_load:
  ‘txn_info.txn_space_dirty’ may be used uninitialized [-Wmaybe-uninitialized]

Проэтому проще пойти анализатору навстречу и упростить исходный код.
Теперь код ошибки явно пробрасывается через тело inline-функции, но это
требует 1-2 дополнительных процессорных инструкции на каждое применение
макроса LOG_IFERROR.

Также здесь откатывается коммит 81a8127084d9a6a7777bb375e029062330e51979.
2024-12-17 22:00:33 +03:00
Леонид Юрьев (Leonid Yuriev)
ba6df2bb6d mdbx: выделение API-функций в api-файлы. 2024-12-17 19:00:39 +03:00
Леонид Юрьев (Leonid Yuriev)
4607184999 mdbx: макрос osal_malloc_usable_size() вместо непосредственного использования malloc_usable_size(). 2024-12-17 18:58:44 +03:00
Леонид Юрьев (Leonid Yuriev)
5168c80be8 mdbx: сбор затрат на pnl_merge() при включении MDBX_ENABLE_PROFGC. 2024-12-17 18:54:58 +03:00
Леонид Юрьев (Leonid Yuriev)
6ed4dcb4ea mdbx: добавление отладочных сообщений при возврате ошибок из API. 2024-12-16 13:31:07 +03:00
Леонид Юрьев (Leonid Yuriev)
122562cf9c mdbx-tests: переименование опции data.dups в data.multi. 2024-12-16 12:16:11 +03:00
Леонид Юрьев (Leonid Yuriev)
526ed28de1 mdbx: добавление mdbx_cursor_count_ex() в API. 2024-12-16 11:54:24 +03:00
Леонид Юрьев (Leonid Yuriev)
90b187c3ba mdbx: добавление проверок в inner_hollow(). 2024-12-16 11:30:10 +03:00
Леонид Юрьев (Leonid Yuriev)
a845522db7 mdbx: исправление регресса состояния dupsort-курсора после cursor_put(APPEND).
При добавлении нового ключа в append-режиме, в случае когда в текущей
(последней) позиции с ключом связаны несколько значений и
(соответственно) вложенный dupsort-курсор инициализирован, вставка
происходила без сброса вложенного курсора.

В результате вложенный курсор логически оставался стоять на
multivalue-данных связанных с предыдущей позицией основного курсора,
т.е. переходил в неконсистентное состояние.

Ошибка проявлялась возвратом неверных значений из mdbx_cursor_count()
или срабатывание assert-проверки в отладочных сборках.
2024-12-15 22:17:12 +03:00
Леонид Юрьев (Leonid Yuriev)
c66dac50c3 mdbx: доработка osal_bootid() для LXC.
Из LXC-контейнера не доступен файл хостовой системы "/proc/sys/kernel/random/boot_id".
Вместо него, при каждом старте контейнера, создается и заполняется
случайными данными собственный boot_id смонтированный через bind из tmpfs.
https://github.com/lxc/lxc/issues/3027

Поэтому полноценный контроль по boot_id не возможен, так как при
рестарте LXC-контейнера (но не хоста) boot_id будет меняться, хотя
данные в unified page cache сохраняются.

Таким образом, при рестарте LXC-контейнера, libmdbx будет производить
откат БД до крайней точки устойчивой фиксации, что может приводить к
утрате данных пользователя в случаях когда они могли быть сохранены.
Однако, улучшить ситуацию пока не представляется возможным, как минимум
до доступности boot_id хостовой системы изнутри LXC-контейнера.

Этот коммит частично улучшает ситуацию тем, что позволяет использовать
фейковый/замещенный boot_id размещенный в файловой системе с типом tmpfs
при работе внутри LXC-контейнера.
2024-12-13 22:30:40 +03:00
Леонид Юрьев (Leonid Yuriev)
ccdb6255e9 mdbx: возврат MDBX_EINVAL при попытке запустить вложенную читающую транзакцию. 2024-12-13 08:26:55 +03:00
Леонид Юрьев (Leonid Yuriev)
ea3f99f58f mdbx-cmake: удаление add_mdbx_option(). 2024-12-12 13:07:49 +03:00
Леонид Юрьев (Leonid Yuriev)
513518ca5e mdbx-cmake: синхронизация утилит между проектами. 2024-12-12 13:06:44 +03:00
Леонид Юрьев (Leonid Yuriev)
f2dc60aa53 mdbx-cmake: новые настройки cmake-format (косметика). 2024-12-12 11:20:34 +03:00
Леонид Юрьев (Leonid Yuriev)
b687e835e9
mdbx: выпуск 0.13.2 "Прошлогодний Снег" (Last Year's Snow).
Поддерживающий выпуск с исправлением обнаруженных ошибок и устранением недочетов
в день рождения и в память об [Алекса́ндре Миха́йловиче Тата́рском](https://ru.wikipedia.org/wiki/Татарский,_Александр_Михайлович),
российском режиссёре-мультипликаторе, создавшем такие знаменитые мультфильмы как "Падал прошлогодний снег",
"Пластилиновая ворона", заставку "Спокойной ночи, малыши!" и многие другие шедевры нашего детства.

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

git diff' stat: 151 files changed, 10647 insertions(+), 14952 deletions(-)
Signed-off-by: Леонид Юрьев (Leonid Yuriev) <leo@yuriev.ru>
v0.13.2
2024-12-11 21:51:56 +03:00
Леонид Юрьев (Leonid Yuriev)
8867c2ddc2 mdbx: новые настройки clang-format (косметика). 2024-12-11 21:22:04 +03:00
Леонид Юрьев (Leonid Yuriev)
3c4d019d00 mdbx-cmake: явное ракрытие переменных в if-условиях для обхода бага-фичи CMake. 2024-12-11 21:04:00 +03:00
Леонид Юрьев (Leonid Yuriev)
dbf18b4c22 mdbx-make: исправление подстановки переменных SemVer. 2024-12-11 21:02:50 +03:00
Леонид Юрьев (Leonid Yuriev)
5652b360b9 mdbx: незначительные правки README. 2024-12-11 15:04:49 +03:00
Леонид Юрьев (Leonid Yuriev)
529b0357e8 mdbx-cmake: исправление ошибки при copy&paste. 2024-12-10 17:06:45 +03:00
Леонид Юрьев (Leonid Yuriev)
fe627ed2f2 mdbx: дополнение ChangeLog. 2024-12-08 09:33:08 +03:00
Леонид Юрьев (Leonid Yuriev)
7aed3a7609 mdbx: дополнение и корректировка README. 2024-12-08 09:33:08 +03:00
Леонид Юрьев (Leonid Yuriev)
1566a0006c mdbx: исправление регресса в mdbx_env_stat_ex(). 2024-12-07 19:04:27 +03:00
Леонид Юрьев (Leonid Yuriev)
9481c0e5c4 mdbx: опечатки/орфография. 2024-12-06 23:56:13 +03:00
Леонид Юрьев (Leonid Yuriev)
207ad31257 mdbx: добавление в README упоминаний о поддержке Conan. 2024-12-06 20:36:48 +03:00
Леонид Юрьев (Leonid Yuriev)
3a09b8fb0c mdbx: координаты для спонсирования в ETH.
// Пока Positive Technologies, пора заняться делом.
2024-12-06 18:44:41 +03:00
Леонид Юрьев (Leonid Yuriev)
d1b2ec0489 mdbx-cmake: удаление двойной проверки версии MSVC. 2024-12-04 23:50:33 +03:00
Леонид Юрьев (Leonid Yuriev)
367a118a8f mdbx: дополнение ChangeLog. 2024-12-03 00:23:37 +03:00
Леонид Юрьев (Leonid Yuriev)
e2ca81ae83 mdbx: поддержка Conan. 2024-12-03 00:23:37 +03:00
Леонид Юрьев (Leonid Yuriev)
44865dadc7 mdbx: переименование и доработка опций сборки. 2024-12-03 00:23:37 +03:00
Леонид Юрьев (Leonid Yuriev)
35177611d2 mdbx: исправление сборки при MDBX_ENABLE_DBI_SPARSE=OFF. 2024-12-03 00:11:28 +03:00
Леонид Юрьев (Leonid Yuriev)
99fa43f322 mdbx: удаление устаревшего CMakeSettings.json 2024-12-02 18:10:32 +03:00
Леонид Юрьев (Leonid Yuriev)
acb3cb0290 mdbx: исправление сборки при включении профилирования GC (опция MDBX_ENABLE_PROFGC). 2024-12-02 17:40:07 +03:00