]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
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)
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


Trivial merge