Leonid Yuriev
4704e3a966
mdbx-ci: add GithubCI badge status to the README.
...
Change-Id: I33b2e63e7903c7d744dd40921524c3f9ce6fb17e
2021-01-29 19:55:40 +03:00
Leonid Yuriev
9c9f6faf38
mdbx: fix madvise_threshold
for large system pages.
...
Fixed https://github.com/erthink/libmdbx/issues/157
Change-Id: I0e880591d236b6ba96a38d2a3fa953695d9c4df0
2021-01-29 04:58:32 +03:00
Leonid Yuriev
7e2de94e1f
mdbx-make: show dist-verification build error(s) on failure.
...
Change-Id: I78f54341b10dd605eb37ceaa19c355df2e7e1707
2021-01-29 04:38:13 +03:00
Leonid Yuriev
0a2f2e28b4
mdbx: fix minor signed/unsigned comparison warnings.
...
Change-Id: Ice6f9759560d5eda514112e838d57e63207a7559
2021-01-27 19:23:07 +03:00
Leonid Yuriev
62b2e31bf4
mdbx: fix auto-recovery weak->steady with the same boot-id (don't truncate DB to size from steady-meta).
...
Change-Id: Ib1c7f845bdf49fb9101b01aa868f8567172e5590
2021-01-27 16:48:03 +03:00
Leonid Yuriev
86db3670aa
mdbx-doc: use multiple Doxygen's groups for cursor functions (haven't effect with current Doxygen).
...
Change-Id: I00263bfd19588e83410f449886b7eefce4bcf0e1
2021-01-26 22:19:14 +03:00
Leonid Yuriev
9b69eed5ce
mdbx-doc: update ChangeLog.
...
Change-Id: I350611d4fc83d2cf764ee1d3bedcf9c86f1a7e26
2021-01-26 22:19:14 +03:00
Leonid Yuriev
aaaa54a397
mdbx-doc: add link to heed
Rust wrapper.
...
Change-Id: I1201bd062941d7cbeaafe0d0fae51ef36cd73e5a
2021-01-26 22:19:14 +03:00
Leonid Yuriev
7ae5ddefe5
mdbx-doc: fix typo and add refs to c_crud_hints
anchor.
...
Change-Id: I46b26ee6f9ca4e1f06c573b61a42d8fbedefd836
2021-01-26 22:18:28 +03:00
Leonid Yuriev
943bb552a2
mdbx: fix GC-slot cleanup inside mdbx_update_gc()
in extra rare complex cases.
...
More for 5f1b684719
and https://github.com/erthink/libmdbx/issues/123
Change-Id: I1b78d6be2babf9ffdd0b77e7b1ee53d1313977bb
2021-01-26 10:28:39 +03:00
Leonid Yuriev
251eda6fb8
mdbx: HNY!
...
Change-Id: I86c7028001b349e3d06b837dc8e2f7e60fb3b1a2
2021-01-26 07:27:13 +03:00
Leonid Yuriev
0cfb853d7f
mdbx-make: workaround for MacOS's buggy sed.
...
Resolve https://github.com/erthink/libmdbx/issues/156
Change-Id: I69bf8378ff19fa2e6c03bf1955e4e6ba68383561
2021-01-26 02:37:18 +03:00
Leonid Yuriev
c918c98ffa
mdbx-ci: use github actions instead of fallen travis-ci.
...
Change-Id: I091635fc16d7141bafe350d36fa8943e91807097
2021-01-26 02:37:02 +03:00
Leonid Yuriev
f2b9babfd3
mdbx: update ChangeLog.
...
Change-Id: I429b8ca8400910ad5a25c7159d5060f0d0f1843f
2021-01-26 01:37:32 +03:00
Leonid Yuriev
4fd23c4716
mdbx: fix minor debug typo.
...
Change-Id: Ieffd3cea351681c1d5ccf93b12953eb0d8abb6b9
2021-01-25 23:26:53 +03:00
Leonid Yuriev
5f1b684719
mdbx: fix regression MDBX_KEYEXISTS
during mdbx_commit_ex()
and overwriting GC records.
...
Fix regression related to https://github.com/erthink/libmdbx/issues/123 and https://github.com/erthink/libmdbx/issues/128 .
Related to https://github.com/erthink/libmdbx/issues/131 .
В lifo-режиме при фиксации транзакции, записи в GC могли быть перезаписаны (с утечкой страниц БД), либо могла возникать ошибка MDBX_KEYEXISTS, по следующему сценарию:
- В истории БД были две транзакции с огромным кол-вом retired pages, после которых в GC остались две соответствующие записи.
- В ходе очередной транзакции первая из огромных GC-записей попадает в переработку и образует огромный reclaimed list.
- При фиксации транзакции производится попытка разбить огромный reclaimed list на чанки размером в одну страницу. Для этого требуется много id для записей, которые в соответствии с lifo должны быть максимально близки к голове GC, т. е. получены путем переработки последних записей GC.
- В ходе переработки последних записей очередь доходит до второй огромной записи, при этом переработка прерывается, ибо иначе reclaimed list переполнится.
- Однако прерывание переработки внутри mdbx_update_gc() трактовалось как отсутствие записей в GC, поэтому список доступных просто добавлялись соответствующие id-шники.
- Если в списке доступных id-шников для помещения в GC были переработанные, то записи с id по всему списку удалялись - тогда вторая большая запись (и возможно предыдущие) удалялись, а содержащиеся в них номера страниц выпадали из оборота.
- Если же в списке доступных id-шников не было переработанных, то чистка не проводилась - тогда при последующая попытка помещения чанков reclaimed list в GC завершалась ошибкой MDBX_KEYEXISTS, которая и возвращалась из mdbx_commit_ex().
Change-Id: I3e5d40ef7950b7476da0513c6836fcba1de74879
2021-01-25 23:23:08 +03:00
Leonid Yuriev
ee22ffb878
mdbx-tools: using walked pages count while output statistics if traversal enabled.
2021-01-25 21:35:59 +03:00
Leonid Yuriev
a9cb6a6a90
mdbx: minor fix ASAN controls.
2021-01-25 21:35:59 +03:00
Leonid Yuriev
0679ea07c6
mdbx-make: rework verification amalgamated sources during make build
.
...
Rework 0166071ec9
for https://github.com/erthink/libmdbx/issues/155
Related to https://github.com/erthink/libmdbx/issues/156
Change-Id: I40697203ff351d10709b3094d50b894c663c67c3
2021-01-24 03:57:23 +03:00
Leonid Yuriev
67b99eadbd
mdbx-make: workaround for BSD's sed limitations.
...
Resolves https://github.com/erthink/libmdbx/issues/156
Related to https://github.com/erthink/libmdbx/issues/155
Change-Id: I68da3f40b055da08a905525a4a31b44018d419b0
2021-01-24 03:57:04 +03:00
Leonid Yuriev
95ae324580
mdbx: fix reclaimed-list allocation during nested txn start.
...
Change-Id: Ia70e01ed69a001249ce14b4930452a469d04b824
2021-01-24 00:49:46 +03:00
Leonid Yuriev
4e13d1239a
mdbx: 'runtime options' feature release.
...
Resolve https://github.com/erthink/libmdbx/issues/128
Change-Id: I67411f623ecb917d3be1cdc6aa78b879d8e68b4c
2021-01-23 01:13:20 +03:00
Leonid Yuriev
4ae2a107bf
mdbx: add MDBX_opt_loose_limit
runtime option.
...
More for https://github.com/erthink/libmdbx/issues/128
Change-Id: I298bf1eef24575df72615ee07e93f5073405e8e0
2021-01-22 23:52:03 +03:00
Leonid Yuriev
dc34041600
mdbx: alter defaults for MDBX_opt_rp_augment_limit
and MDBX_opt_txn_dp_limit
runtime options.
...
Change-Id: I08cdbfb18089a3fed4b32d931ca4423027a9939f
2021-01-22 23:16:21 +03:00
Leonid Yuriev
b1a2892038
mdbx: fix minor Coverity warnings.
...
Change-Id: I0c5d23a36120b8d697887462a6ae86d66a435c3d
2021-01-22 20:13:31 +03:00
Leonid Yuriev
b82d1d5063
mdbx: add MDBX_opt_spill_parent4child_denominator
runtime option.
...
More for https://github.com/erthink/libmdbx/issues/128
Change-Id: If1549c3855eb59c107eb115e6dbca515e81644f9
2021-01-22 18:18:52 +03:00
Leonid Yuriev
56aaad03bc
mdbx: add MDBX_opt_spill_max_denominator
and MDBX_opt_spill_min_denominator
runtime options.
...
More for https://github.com/erthink/libmdbx/issues/128
Change-Id: I6b1b00e30ac11e9c2e3d3d3a29cc73079b41d539
2021-01-22 17:25:44 +03:00
Leonid Yuriev
0166071ec9
mdbx-make: check building amalgamated sources during make dist
.
...
Related to https://github.com/erthink/libmdbx/issues/155
Change-Id: I45a4f6d3d62052d091c18eae634bbe418829761e
2021-01-22 14:17:53 +03:00
Leonid Yuriev
e0d4eaf819
mdbx: minor refine mdbx_txn_merge()
.
2021-01-21 22:45:34 +03:00
Leonid Yuriev
0861a0652b
mdbx: update ChangeLog.
...
Change-Id: I22490e504e503661dff13e6ca4abc75ac5ebc7b6
2021-01-21 22:45:28 +03:00
Leonid Yuriev
1d58ad6d9b
mdbx: fix Valgrind/ASAN controls.
...
Change-Id: Idf526cbdb8ce8e43600efebbd1d12a8306a58184
2021-01-21 22:45:28 +03:00
Leonid Yuriev
e1a022be27
mdbx-tests: more wilcards for Valgrind's suppressions.
...
Change-Id: I1fbc1f5c38dd71d5937b8d0df813b05fdf1a6c43
2021-01-21 22:45:28 +03:00
Leonid Yuriev
58e4eda1c6
mdbx: fix spilled page list memleak.
...
Change-Id: I8b3b3664711943b0809be7bcc6580aafd4e4c286
2021-01-21 22:45:28 +03:00
Leonid Yuriev
d26ae6875b
mdbx: fix assertion to avoid false-positive UB detection by CLANG/LLVM.
...
Assume this resolve https://github.com/erthink/libmdbx/issues/153
Change-Id: I02ceba1063a338b6dedf17629b51b3466358b0b8
2021-01-21 22:45:28 +03:00
Leonid Yuriev
afe93137fc
mdbx: fix minor assertions.
...
Change-Id: Ib3e2dcb2cb419f41717351b2ac2264ffed906014
2021-01-21 22:45:28 +03:00
Leonid Yuriev
bed14e60c2
mdbx-cmake: add -fsanitize-undefined-trap-on-error
to compile flags and ENABLE_UBSAN
to config.h
.
...
Change-Id: Ic18c0d59ccf32f9783a44de456893fbc8a0a7d32
2021-01-21 22:45:23 +03:00
Leonid Yuriev
c816797879
mdbx-cmake: minor/cosmetics unify quoting for add_compile_flags()
.
...
Change-Id: Idad9dccaedb71be42adb4366a7a995ccf7ab8db8
2021-01-20 23:34:30 +03:00
Leonid Yuriev
730b9ea3fd
mdbx: add MDBX_PNL_ASCENDING
build option and dependency for MDBX_DATA_MAGIC
.
...
Change-Id: I55283240b1dbbbc093927be5eaa5d42b87294f72
2021-01-20 23:31:14 +03:00
Leonid Yuriev
6bd0277020
mdbx: minor fix mdbx_cursor_close()
.
...
Avoids reference to txn which could be already freed.
Change-Id: I4e1fadd9786ced1533bb8468d30e013455601228
2021-01-20 09:55:11 +03:00
Leonid Yuriev
7d09de489d
mdbx: fix minor MSVC warnings.
...
Change-Id: I633b8847698dca25b6c395216744e157f6fb240d
2021-01-20 09:55:11 +03:00
Leonid Yuriev
0d09c2cda9
mdbx: avoid overflow for dirty & leftover space inside mdbx_txn_info()
.
...
Change-Id: I36f4d62881e68f1bfe0d11fde2e849cdf1408ed2
2021-01-20 02:07:44 +03:00
Leonid Yuriev
42670aa64a
mdbx: fix MSVC warnings aroung size_t
and unsigned
conversion.
...
Change-Id: I32bd3ee4fe02ac62cc121f33b2f84bf63c81cb75
2021-01-20 01:39:21 +03:00
Leonid Yuriev
6d7daf6401
mdbx: fix audit for complex nested txn cases.
...
Change-Id: I2419cbe0e8d3167e77ac99f397b97edb22717833
2021-01-19 23:53:16 +03:00
Leonid Yuriev
f28da7c9e3
mdbx: rework spilling, page-lists, commit & abort for nested transactions, etc (squashed).
...
Change-Id: I09e4744586342aeae4efcfb71f41a3248ee47758
2021-01-19 23:53:16 +03:00
Leonid Yuriev
7bae2a7cd2
mdbx: provide MDBX_ENABLE_REFUND
build option.
...
Change-Id: I0e4c94a22f3b0957176431709604a7595f85252a
2021-01-19 23:53:16 +03:00
Leonid Yuriev
7183f62e13
mdbx: rework DBI_DIRTY
and MDBX_TXN_DIRTY
propagation.
...
Change-Id: Ief12ee320ce7c7142632bd1142d847aac314db0b
2021-01-19 23:53:16 +03:00
Leonid Yuriev
4afc30c79f
mdbx: rework mdbx_page_alloc()
.
...
Change-Id: I5c6e2ef23abf79096dd699f9dfbecf97bfc4fe37
2021-01-19 23:53:16 +03:00
Leonid Yuriev
764dab90fc
mdbx-tests: set MALLOC_CHECK
environment varilables.
...
Change-Id: Ic5d2a4b5c69d05111051432996f5382bb73caba1
2021-01-19 23:53:16 +03:00
Leonid Yuriev
c6a8f0f9af
mdbx-tools: minor refine mdbx_chk
error output.
...
Change-Id: I4692a46c3e007fa2910ef67ec7fe21c7285e92eb
2021-01-19 23:53:16 +03:00
Leonid Yuriev
966d7027a3
mdbx: minor fix bad_page()
debug output.
...
Change-Id: I14531fdceaad054ad8c45bf9042fee73de1f9a36
2021-01-19 23:53:16 +03:00