bind9/lib/dns
Ondřej Surý 8c31a939c9
Implement incremental hash table resizing in isc_ht
Previously, an incremental hash table resizing was implemented for the
dns_rbt_t hash table implementation.  Using that as a base, also
implement the incremental hash table resizing also for isc_ht API
hashtables:

 1. During the resize, allocate the new hash table, but keep the old
    table unchanged.
 2. In each lookup, delete, or iterator operation, check both tables.
 3. Perform insertion operations only in the new table.
 4. At each insertion also move <r> elements from the old table to
    the new table.
 5. When all elements are removed from the old table, deallocate it.

To ensure that the old table is completely copied over before the new
table itself needs to be enlarged, it is necessary to increase the
size of the table by a factor of at least (<r> + 1)/<r> during resizing.

In our implementation <r> is equal to 1.

The downside of this approach is that the old table and the new table
could stay in memory for longer when there are no new insertions into
the hash table for prolonged periods of time as the incremental
rehashing happens only during the insertions.

(cherry picked from commit e42cb1f198)
2023-01-11 17:15:33 +01:00
..
include remove nonfunctional DSCP implementation 2023-01-09 14:23:26 -08:00
rdata Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
.gitignore 4394. [func] Add rndc command "dnstap-reopen" to close and 2016-06-24 09:37:04 +10:00
acl.c Add isc_rwlock around dns_aclenv .localhost and .localnets member 2022-04-26 14:21:57 +02:00
adb.c remove nonfunctional DSCP implementation 2023-01-09 14:23:26 -08:00
badcache.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
byaddr.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
cache.c Add dns_db_allrdatasets options 2022-12-07 23:59:36 +00:00
callbacks.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
catz.c Implement incremental hash table resizing in isc_ht 2023-01-11 17:15:33 +01:00
client.c Extend dns_db_allrdatasets to control interation results 2022-12-07 23:59:36 +00:00
clientinfo.c allow dns_clientinfo to store client ECS data 2022-01-27 14:51:11 -08:00
compress.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
db.c Extend dns_db_allrdatasets to control interation results 2022-12-07 23:59:36 +00:00
dbiterator.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
diff.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
dispatch.c remove nonfunctional DSCP implementation 2023-01-09 14:23:26 -08:00
dlz.c Remove use of the inline keyword used as suggestion to compiler 2022-03-25 08:42:18 +01:00
dns64.c Add isc_rwlock around dns_aclenv .localhost and .localnets member 2022-04-26 14:21:57 +02:00
dnsrps.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
dnssec.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
dnstap.c dnstap query_message field was erroneously set with responses 2022-08-31 15:24:00 -07: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:42:16 +01:00
dst_api.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
dst_internal.h Check if key metadata is modified before writing 2022-05-16 10:37:23 +02:00
dst_openssl.h Use autoconf check for BN_GENCB_new() 2022-03-02 10:49:47 +00:00
dst_parse.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +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 Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
ecs.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
fixedname.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
forward.c Use sizeof(*ptr) for allocating/freeing memory in forward.c 2023-01-11 13:42:09 +00:00
gen.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +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 a redundant variable-length array 2022-03-18 16:05:56 +00:00
gssapictx.c Remove use of the inline keyword used as suggestion to compiler 2022-03-25 08:42:18 +01:00
hmac_link.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
ipkeylist.c remove nonfunctional DSCP implementation 2023-01-09 14:23:26 -08:00
iptable.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
journal.c Extend dns_db_allrdatasets to control interation results 2022-12-07 23:59:36 +00:00
kasp.c Store built-in dnssec-policies in defaultconf 2022-06-28 14:36:38 +02:00
key.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
keydata.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
keymgr.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
keytable.c Add synth-from-dnssec namespaces for keytable entries 2022-07-07 07:47:45 +10:00
log.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
lookup.c Remove use of the inline keyword used as suggestion to compiler 2022-03-25 08:42:18 +01:00
Makefile.am Update libdns_la_LIBADD rather than libdns_la_LDFLAGS 2022-07-13 10:46:37 +10:00
master.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
masterdump.c Add dns_db_allrdatasets options 2022-12-07 23:59:36 +00:00
message.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
name.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
ncache.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
nsec.c Extend dns_db_allrdatasets to control interation results 2022-12-07 23:59:36 +00:00
nsec3.c Extend dns_db_allrdatasets to control interation results 2022-12-07 23:59:36 +00:00
nta.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
openssl_link.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
openssl_shim.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +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 Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
opensslecdsa_link.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
openssleddsa_link.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
opensslrsa_link.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
order.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
peer.c remove nonfunctional DSCP implementation 2023-01-09 14:23:26 -08:00
private.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
rbt.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
rbtdb.c Remove different zero TTL handling for rdataset iterator 2022-12-07 23:59:36 +00:00
rbtdb.h Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
rcode.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
rdata.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
rdatalist.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +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 Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
rdatasetiter.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
rdataslab.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
request.c remove nonfunctional DSCP implementation 2023-01-09 14:23:26 -08:00
resolver.c remove nonfunctional DSCP implementation 2023-01-09 14:23:26 -08:00
result.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
rootns.c Extend dns_db_allrdatasets to control interation results 2022-12-07 23:59:36 +00:00
rpz.c Implement incremental hash table resizing in isc_ht 2023-01-11 17:15:33 +01:00
rriterator.c Extend dns_db_allrdatasets to control interation results 2022-12-07 23:59:36 +00:00
rrl.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
sdb.c Extend dns_db_allrdatasets to control interation results 2022-12-07 23:59:36 +00:00
sdlz.c Extend dns_db_allrdatasets to control interation results 2022-12-07 23:59:36 +00:00
soa.c Remove use of the inline keyword used as suggestion to compiler 2022-03-25 08:42:18 +01:00
ssu.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
ssu_external.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
stats.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
tests Move all the unit tests to /tests/<libname>/ 2022-05-31 12:06:00 +02:00
time.c Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
tkey.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
transport.c Rename "hostname" to "remote-hostname" within "tls" 2022-05-03 17:42:43 +03:00
tsec.c Simplify way we tag unreachable code with only ISC_UNREACHABLE() 2022-03-25 08:42:16 +01:00
tsig.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +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 Update the copyright information in all files in the repository 2022-01-11 09:05:02 +01:00
update.c Extend dns_db_allrdatasets to control interation results 2022-12-07 23:59:36 +00:00
validator.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
view.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
xfrin.c remove nonfunctional DSCP implementation 2023-01-09 14:23:26 -08:00
zone.c Fix a use-after-free bug in dns_zonemgr_releasezone() 2023-01-11 12:16:23 +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 Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00
zoneverify.c Extend dns_db_allrdatasets to control interation results 2022-12-07 23:59:36 +00:00
zt.c Update sources to Clang 15 formatting 2022-11-29 09:14:07 +01:00