bind9/lib/dns
JINMEI Tatuya 065ffb2eb8
Optimize database decref by avoiding locking with refs > 1
Previously, this function always acquires a node write lock if it
might need node cleanup in case the reference decrements to 0.  In
fact, the lock is unnecessary if the reference is larger than 1 and it
can be optimized as an "easy" case. This optimization could even be
"necessary". In some extreme cases, many worker threads could repeat
acquring and releasing the reference on the same node, resulting in
severe lock contention for nothing (as the ref wouldn't decrement to 0
in most cases). This change would prevent noticeable performance
drop like query timeout for such cases.

Co-authored-by: JINMEI Tatuya <jtatuya@infoblox.com>
Co-authored-by: Ondřej Surý <ondrej@isc.org>

(cherry picked from commit 7f4471594d)
2025-01-22 14:31:09 +01:00
..
include Implement global limit for outgoing queries 2024-12-06 15:17:53 +00:00
rdata Parse the URI template and check for a dns variable 2024-11-26 03:41:51 +00:00
.gitignore 4394. [func] Add rndc command "dnstap-reopen" to close and 2016-06-24 09:37:04 +10:00
acl.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
adb.c Implement global limit for outgoing queries 2024-12-06 15:17:53 +00:00
badcache.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
byaddr.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
cache.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
callbacks.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
catz.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
client.c Remove --with-tuning=small/large configuration option 2025-01-22 14:16:40 +01:00
clientinfo.c refactor dns_clientinfo_init(); use separate function to set ECS 2023-02-08 00:13:12 -08:00
compress.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
db.c use more generic log module name for 'logtoomanyrecords' 2024-11-27 12:34:11 +11:00
dbiterator.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
diff.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
dispatch.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
dlz.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
dns64.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
dnsrps.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
dnssec.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
dnstap.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
dnstap.proto Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
ds.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
dst_api.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
dst_internal.h Replace isc_fsaccess API with more secure file creation 2023-03-31 16:47:15 +02:00
dst_openssl.h Use autoconf check for BN_GENCB_new() 2022-03-02 10:49:47 +00:00
dst_parse.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
dst_parse.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
dyndb.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
ecs.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
fixedname.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
forward.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
gen.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
geoip2.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
gssapi_link.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
gssapictx.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
hmac_link.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
ipkeylist.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
iptable.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
journal.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
kasp.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
key.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
keydata.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
keymgr.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
keytable.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
log.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
lookup.c Implement global limit for outgoing queries 2024-12-06 15:17:53 +00:00
Makefile.am Update libdns_la_LIBADD rather than libdns_la_LDFLAGS 2022-07-13 10:46:37 +10:00
master.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
masterdump.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
message.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
name.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
ncache.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
nsec.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
nsec3.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
nta.c Implement global limit for outgoing queries 2024-12-06 15:17:53 +00:00
openssl_link.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
openssl_shim.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
openssl_shim.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
openssldh_link.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
opensslecdsa_link.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
openssleddsa_link.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
opensslrsa_link.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
order.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
peer.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
private.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
rbt.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
rbtdb.c Optimize database decref by avoiding locking with refs > 1 2025-01-22 14:31:09 +01:00
rbtdb.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
rcode.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
rdata.c Parse the URI template and check for a dns variable 2024-11-26 03:41:51 +00:00
rdatalist.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
rdatalist_p.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
rdataset.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
rdatasetiter.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
rdataslab.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
request.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
resolver.c Shutdown the fetch context after canceling the last fetch 2025-01-22 14:21:51 +01:00
result.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
rootns.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
rpz.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
rriterator.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
rrl.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
sdb.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
sdlz.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
soa.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
ssu.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
ssu_external.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
stats.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
tests Move all the unit tests to /tests/<libname>/ 2022-05-31 12:06:00 +02:00
time.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
tkey.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
transport.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
tsec.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
tsig.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
tsig_p.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
ttl.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
update.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
validator.c Use query counters in validator code 2024-12-09 11:44:24 +01:00
view.c Implement 'max-query-count' 2024-12-06 15:17:53 +00:00
xfrin.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
zone.c Implement global limit for outgoing queries 2024-12-06 15:17:53 +00:00
zone_p.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
zonekey.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
zoneverify.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00
zt.c Remove redundant parentheses from the return statement 2024-11-19 16:06:16 +01:00