]> git.ipfire.org Git - thirdparty/bind9.git/commit
fix: usr: Resolve "Inbound IXFR performance regression between 9.18.31 and 9.20.9"
authorAlessio Podda <alessio@isc.org>
Tue, 9 Dec 2025 13:06:03 +0000 (13:06 +0000)
committerAlessio Podda <alessio@isc.org>
Tue, 9 Dec 2025 13:06:03 +0000 (13:06 +0000)
commitc47239985b1032b77102deb7d5647be338c73fa7
treebf7b0aa13bd7df3291d96d507bbd14e8f32893a4
parent674195e83e8b331e864280a12dfa7ea9fb97a299
parentad0a38209292b04db8bc6202af4cdcbe6e5a8e4a
fix: usr: Resolve "Inbound IXFR performance regression between 9.18.31 and 9.20.9"

This MR adds add some specialized logic to handle IXFR in qpzone, avoiding the need to have one qp transaction per rdataset.

We do this in multiple steps:
 - We extend dns_rdatacallbacks_t vtable to allow subtraction and resigning.
 - We add a new set of api (begin|commit|abort)update to the dbmethods vtable. These API model an incremental update that can be aborted, and make diff apply use these functions instead of adding the rdatasets directly to the database.
 - We add a specialization of dns_rdatacallbacks_t to qpzone that uses a single qp transaction for the entire IXFR.

With this batch API, we see performance improvements over adding one rdataset at a time.

Closes #5442

Merge branch '5442-ixfr-batch-transaction' into 'main'

See merge request isc-projects/bind9!11077