1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-22 13:34:15 +03:00
samba-mirror/lib
Douglas Bagnall 76e1024f4c ldb:kv_index: realloc away old dn list
We can't just free it, because has the GUID index list as a child, and
these are shared by the new dn list (from the subtransaction we are
committing). But if the dn list is long and the main transaction is
long-lived, we can save a lot of memory by turning this dn list into
an almost empty node in the talloc tree. This returns us to roughly
the situation we had prior to the last commit.

For example, with the repro.sh script on bug 15590 in indexes mode
with 10000 rules, The last 3 commits use this much memory at the end
of an unusually large transaction:

full talloc report on 'struct ldb_context' (total 4012222 bytes in 90058 blocks)
full talloc report on 'struct ldb_context' (total 2405482219 bytes in 90058 blocks)
full talloc report on 'struct ldb_context' (total 4282195 bytes in 90058 blocks)

That is, the last commit increased usage 500 fold, and this commit
brings it back to normal.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15590

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
(cherry picked from commit 1bf9ede94f)
2024-10-07 08:33:18 +00:00
..
addns lib:addns: Don’t call memcpy() with a NULL pointer 2023-05-05 02:54:31 +00:00
afs auth: Make more liberal use of SID index constants 2023-02-08 00:03:39 +00:00
async_req lib/async_req: let writev_send/recv use TEVENT_FD_ERROR 2023-10-24 09:36:37 +00:00
audit_logging lib:audit_logging: Initialize ‘tm’ structure 2023-09-27 02:43:28 +00:00
cmdline cmdline:burn: list commands to always burn; warn on unknown 2024-07-23 07:33:12 +00:00
compression Use python.h from libreplace 2023-11-20 15:37:33 +00:00
crypto lib/crypto: add legacy_gnutls_server_end_point_cb() if needed 2024-07-09 09:54:15 +00:00
dbwrap dbwrap: Simplify dbwrap_change_int32_atomic_action() 2023-08-14 19:53:37 +00:00
fuzzing lib/fuzzing/decode_ndr_X_crash: guess the pipe from filename 2024-06-10 13:24:16 +00:00
krb5_wrap Do not fail checksums for RFC8009 types 2024-04-16 12:24:55 +00:00
ldb ldb:kv_index: realloc away old dn list 2024-10-07 08:33:18 +00:00
ldb-samba ldb_ildap: require ldb_get_opaque(ldb, "loadparm") to be valid 2024-07-09 09:54:15 +00:00
messaging lib:messaging: Fix code spelling 2023-04-11 09:06:36 +00:00
mscat lib:mscat: Remove unnecessary casts 2023-09-14 21:35:28 +00:00
param lib/param: Don't treat a missing include file as an error in handle_include(). 2024-08-22 09:01:30 +00:00
printer_driver lib:printer_driver: Check return value of gp_inifile_enum_section() (CID 1444835) 2023-10-13 02:18:30 +00:00
pthreadpool lib:pthreadpool: Fix code spelling 2023-04-11 09:06:36 +00:00
replace lib:replace: Add python.h 2023-11-20 15:37:33 +00:00
smbconf Use python.h from libreplace 2023-11-20 15:37:33 +00:00
socket lib/socket: rearrange iface_comp() to use NUMERIC_CMP 2024-06-10 13:24:16 +00:00
talloc talloc: release 2.4.2 2024-01-29 14:39:32 +00:00
tdb tdb: release 1.4.10 2024-01-29 14:39:32 +00:00
tdb_wrap lib: Open tdb files with O_CLOEXEC 2021-06-04 16:47:34 +00:00
tdr util/charset: Rename utf16_len_n() to utf16_null_terminated_len_n() 2023-11-15 22:07:36 +00:00
tevent tevent: release 0.16.1 2024-01-29 14:39:32 +00:00
texpect texpect: don't ignore unknown options 2021-09-10 15:10:30 +00:00
torture lib/torture: add assert_int_{less,greater} macros 2024-06-10 13:24:16 +00:00
tsocket lib/tsocket: add tstream_bsd_fail_readv_first_error() 2023-10-24 09:36:37 +00:00
util util:datablob: avoid non-transitive comparison in data_blob_cmp() 2024-06-10 13:24:16 +00:00
README various: Remove references to about to be deleted thirdparty/dnspython 2018-12-11 20:07:18 +01:00
wscript_build

compression - Various compression algorithms (MSZIP, lzxpress)
popt - Command-line option parsing library
replace - Provides replacements for standard (POSIX, C99) functions 
          not provided by the host platform.
subunit - Utilities and bindings for working with the Subunit test result 
          reporting protocol.
talloc - Hierarchical pool based memory allocator 
tdb - Simple but fast key/value database library, supporting multiple writers
torture - Simple unit testing helper library