bind9/lib/dns
Ondřej Surý eed17611d8
Reduce lock contention during RBTDB tree pruning
The log message for commit 24381cc36d
explained:

    In some older BIND 9 branches, the extra queuing overhead eliminated by
    this change could be remotely exploited to cause excessive memory use.
    Due to architectural shift, this branch is not vulnerable to that issue,
    but applying the fix to the latter is nevertheless deemed prudent for
    consistency and to make the code future-proof.

However, it turned out that having a single queue for the nodes to be
pruned increased lock contention to a level where cleaning up nodes from
the RBTDB took too long, causing the amount of memory used by the cache
to grow indefinitely over time.

This commit reverts the change to the pruning mechanism introduced by
commit 24381cc36d as BIND branches newer
than 9.16 were not affected by the excessive event queueing overhead
issue mentioned in the log message for the above commit.
2024-02-29 11:23:03 +01:00
..
include Reduce lock contention during RBTDB tree pruning 2024-02-29 11:23:03 +01:00
rdata Add RESINFO record type 2024-02-26 12:02:40 +11:00
.gitignore Add support for User Statically Defined Tracing (USDT) probes 2023-08-21 18:39:53 +02:00
acl.c Convert rwlock in dns_acl to RCU 2023-10-13 14:44:40 +02:00
adb.c Refactor the handling of isc_mem overmem condition 2023-11-29 14:16:20 +01:00
badcache.c Refactor dns_badcache to use cds_lfht lock-free hashtable 2023-07-31 15:51:15 +02:00
byaddr.c remove isc_task completely 2023-02-16 18:35:32 +01:00
cache.c Refactor the handling of isc_mem overmem condition 2023-11-29 14:16:20 +01:00
callbacks.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
catz.c Fix catz db update callback registration logic error (take two) 2023-11-14 08:59:48 +00:00
client.c clean up client.c 2023-12-06 17:31:38 -08:00
clientinfo.c refactor dns_clientinfo_init(); use separate function to set ECS 2023-02-07 23:48:22 -08:00
compress.c Cleanup the dns_name macros 2023-09-12 16:14:10 +02:00
db.c fix several bugs in the RBTDB dbiterator implementation 2024-02-15 10:15:50 -08:00
db_p.h BIND 9.19.21 2024-02-14 13:24:56 +01:00
dbiterator.c Implement dns_db node tracing 2023-02-28 11:44:15 +01:00
diff.c Log what change generated a 'not exact' error 2023-12-20 01:56:38 +11:00
dispatch.c Stream DNS: add PROXY over TLS support 2023-12-06 15:15:25 +02:00
dlz.c Refactor dns_zone_create() to return void 2023-07-27 11:37:44 +02:00
dns64.c Add the ability to use DNS64 internally 2023-09-13 14:31:43 +10:00
dnsrps.c Give the rdataset->privateN fields more helpful names 2023-07-17 14:50:25 +02:00
dnssec.c Refactor dns_keystore_directory() 2024-01-25 15:37:40 +01:00
dnstap.c Change dns_message_create() function to accept memory pools 2023-09-24 18:07:40 +02:00
dnstap.proto Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
ds.c Simplify way we tag unreachable code with only ISC_UNREACHABLE() 2022-03-25 08:33:43 +01:00
dst_api.c BIND 9.19.21 2024-02-14 13:24:56 +01:00
dst_internal.h Create keys with PKCS#11 URI instead of object 2024-01-25 14:48:07 +01:00
dst_openssl.h Report file and line when converting OpenSSL errors 2023-04-03 12:06:04 +10:00
dst_parse.c Fix clang formatting 2023-08-09 23:48:17 +00:00
dst_parse.h Remove TKEY Mode 2 (Diffie-Hellman) 2023-03-08 08:36:25 +01:00
dyndb.c switch to using isc_loopmgr_pause() instead of task exclusive 2023-02-16 17:51:55 +01:00
ecs.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
fixedname.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
forward.c rename dns_qp_findname_ancestor() to dns_qp_lookup() 2023-09-28 00:32:44 -07:00
gen.c Use EXIT_SUCCESS and EXIT_FAILURE 2024-02-08 08:01:58 +01:00
geoip2.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
gssapi_link.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
gssapictx.c remove dns_name_totext2() and dns_name_toprincipal() 2023-08-31 12:53:32 -07:00
hmac_link.c Emit deprecated warning for K* file pairs 2023-06-29 08:28:48 +10:00
ipkeylist.c Remove ISC_MEM_ZERO and isc_mem_*x() API 2023-08-31 22:08:35 +02:00
iptable.c Convert manual dns_iptable_{attach,detach} to ISC_REFCOUNT_IMPL 2023-10-13 14:44:40 +02:00
journal.c Remove ISC_MEM_ZERO and isc_mem_*x() API 2023-08-31 22:08:35 +02:00
kasp.c Store key store reference instead of name 2024-01-25 14:41:25 +01:00
key.c Use dst_key's directory when writing key files 2024-01-25 14:47:43 +01:00
keydata.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
keymgr.c Refactor dns_keystore_directory() 2024-01-25 15:37:40 +01:00
keystore.c Replace keystore attach/detach with ISC_REFCOUNT_IMPL/ISC_REFCOUNT_DECL 2024-01-25 15:37:40 +01:00
keytable.c rename dns_qp_findname_ancestor() to dns_qp_lookup() 2023-09-28 00:32:44 -07:00
log.c remove {root-}delegation-only 2023-03-23 12:57:01 -07:00
Makefile.am separate generic DB helpers into db_p.h 2024-02-14 09:00:27 +01:00
master.c Update the source code formatting using clang-format-17 2023-10-17 17:47:46 +02:00
masterdump.c remove unused functions in dns_master 2023-12-06 17:31:38 -08:00
message.c BIND 9.19.21 2024-02-14 13:24:56 +01:00
name.c Cleanup the dns_name macros 2023-09-12 16:14:10 +02:00
nametree.c rename dns_qp_findname_ancestor() to dns_qp_lookup() 2023-09-28 00:32:44 -07:00
ncache.c Correctly set the value of covered in dns_ncache_current 2023-09-18 13:38:27 +10:00
nsec.c Remove TKEY Mode 2 (Diffie-Hellman) 2023-03-08 08:36:25 +01:00
nsec3.c Don't delete the NSEC3PARAM immediately 2023-12-21 20:12:09 +11:00
nta.c Fix undefined behaviour occurrences 2023-10-13 09:57:28 +00:00
openssl_link.c Use EXIT_SUCCESS and EXIT_FAILURE 2024-02-08 08:01:58 +01:00
openssl_shim.c Apply the SET_IF_NOT_NULL() semantic patch 2023-08-15 12:21:41 +02:00
openssl_shim.h Remove TKEY Mode 2 (Diffie-Hellman) 2023-03-08 08:36:25 +01:00
opensslecdsa_link.c Specify key usage to be digital signature 2024-01-25 14:48:07 +01:00
openssleddsa_link.c Clear OpenSSL errors on context creation failures 2023-09-01 12:01:20 +10:00
opensslrsa_link.c Specify key usage to be digital signature 2024-01-25 14:48:07 +01:00
order.c Update sources to Clang 15 formatting 2022-11-29 08:54:34 +01:00
peer.c remove nonfunctional DSCP implementation 2023-01-09 12:15:21 -08:00
private.c Update the source code formatting using clang-format-17 2023-10-17 17:47:46 +02:00
probes.d Do not destroy IXFR journal in xfrin_end() 2023-12-20 17:21:14 +01:00
qp.c prevent an infinite loop in fix_iterator() 2023-12-21 09:18:30 -08:00
qp_p.h rename QP-related types to use standard BIND nomenclature 2023-09-28 00:32:39 -07:00
rbt-cachedb.c Do not use header_prev in expire_lru_headers 2024-02-23 12:00:12 +01:00
rbt-zonedb.c move DNS_RBT_NSEC_* to db.h 2024-02-14 01:13:44 -08:00
rbt.c Reduce lock contention during RBTDB tree pruning 2024-02-29 11:23:03 +01:00
rbtdb.c Reduce lock contention during RBTDB tree pruning 2024-02-29 11:23:03 +01:00
rbtdb_p.h Reduce lock contention during RBTDB tree pruning 2024-02-29 11:23:03 +01:00
rcode.c Remove TKEY Mode 2 (Diffie-Hellman) 2023-03-08 08:36:25 +01:00
rdata.c Clear OpenSSL errors on d2i_ASN1_OBJECT failures 2023-09-01 12:01:19 +10:00
rdatalist.c Give the rdataset->privateN fields more helpful names 2023-07-17 14:50:25 +02:00
rdataset.c Apply the isc_mem_cget semantic patch 2023-08-31 22:08:35 +02:00
rdatasetiter.c Implement dns_db node tracing 2023-02-28 11:44:15 +01:00
rdataslab.c separate generic DB helpers into db_p.h 2024-02-14 09:00:27 +01:00
remote.c Apply the isc_mem_cget semantic patch 2023-08-31 22:08:35 +02:00
request.c Restore dns_requestmgr_shutdown re-entrancy 2024-02-07 09:52:32 +11:00
resconf.c Address CID 486326: Memory - corruptions (OVERRUN) 2024-02-13 09:21:49 +11:00
resolver.c DoT: do not crash resolver on TLS context creation failure 2024-02-21 21:05:21 +02:00
result.c Refactor how we map isc_result_t <-> dns_rcode_t 2023-06-15 15:32:04 +02:00
rootns.c Suppress reporting upcoming changes in root hints 2023-10-20 14:05:56 +11:00
rpz.c reduce search_lock coverage 2023-10-09 13:29:02 -07:00
rriterator.c Apply the SET_IF_NOT_NULL() semantic patch 2023-08-15 12:21:41 +02:00
rrl.c Remove ISC_MEM_ZERO and isc_mem_*x() API 2023-08-31 22:08:35 +02:00
sdlz.c remove dns_name_totext2() and dns_name_toprincipal() 2023-08-31 12:53:32 -07:00
soa.c Remove use of the inline keyword used as suggestion to compiler 2022-03-25 08:33:43 +01:00
ssu.c Convert rwlock in dns_acl to RCU 2023-10-13 14:44:40 +02:00
ssu_external.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
stats.c Ineffective DbC protections 2023-11-21 14:48:43 +11:00
tests Move all the unit tests to /tests/<libname>/ 2022-05-28 14:53:02 -07:00
time.c Remove isc_stdtime_get() macro 2023-03-31 13:33:16 +02:00
tkey.c Return REFUSED if GSSAPI is not configured 2023-07-28 14:37:32 +10:00
transport.c Integrate TLS cipher suites support into BIND 2024-01-12 13:27:59 +02:00
tsig.c Address races in dns_tsigkey_find() 2024-01-05 11:16:12 +01:00
tsig_p.h remove dns__tsig_algallocated() 2023-06-14 08:14:38 +00:00
ttl.c Remove do-nothing header <isc/print.h> 2023-02-15 16:44:47 +00:00
update.c Refactor findmatchingkeys and keylistfromrdataset 2024-01-25 14:41:25 +01:00
validator.c Disallow stale-answer-client-timeout non-zero values 2024-02-16 08:41:52 +00:00
view.c BIND: Add 'allow-proxy' and 'allow-proxy-on' options 2023-12-06 15:15:25 +02:00
xfrin.c Do not destroy IXFR journal in xfrin_end() 2023-12-20 17:21:14 +01:00
zone.c Disallow stale-answer-client-timeout non-zero values 2024-02-16 08:41:52 +00:00
zone_p.h Refactor findzonekeys 2024-01-25 14:48:07 +01:00
zonekey.c Update sources to Clang 15 formatting 2022-11-29 08:54:34 +01:00
zoneverify.c Remove ISC_MEM_ZERO and isc_mem_*x() API 2023-08-31 22:08:35 +02:00
zt.c rename dns_qp_findname_ancestor() to dns_qp_lookup() 2023-09-28 00:32:44 -07:00