Remove name boundary optimization

In MR !9740, we introduced an optimization that reduces memory usage
by processing rdatas in batches during AXFR.

The maximum batch size is 128, but the batch size was allowed to grow
beyond that limit if all rdatas in a batch were for the same name, as
that allows a more efficient optimization.

This optimization could theoretically allow the batch size arbitrarily
for a sufficient large zone transfer. Since synthetic tests don't show
any performance improvement from the optimization, this MR removes it.
This commit is contained in:
Alessio Podda 2026-05-22 17:58:10 +02:00 committed by Ondřej Surý
parent 5c80876a6d
commit 7502e73333
No known key found for this signature in database
GPG key ID: 2820F37E873DEA41
3 changed files with 1 additions and 26 deletions

View file

@ -139,19 +139,6 @@ dns_diff_append(dns_diff_t *diff, dns_difftuple_t **tuplep) {
*tuplep = NULL;
}
bool
dns_diff_is_boundary(const dns_diff_t *diff, dns_name_t *new_name) {
REQUIRE(DNS_DIFF_VALID(diff));
REQUIRE(DNS_NAME_VALID(new_name));
if (ISC_LIST_EMPTY(diff->tuples)) {
return false;
}
dns_difftuple_t *tail = ISC_LIST_TAIL(diff->tuples);
return !dns_name_caseequal(&tail->name, new_name);
}
size_t
dns_diff_size(const dns_diff_t *diff) {
REQUIRE(DNS_DIFF_VALID(diff));

View file

@ -187,16 +187,6 @@ dns_diff_append(dns_diff_t *diff, dns_difftuple_t **tuple);
* \li The tuple has been freed, or will be freed when the diff is cleared.
*/
bool
dns_diff_is_boundary(const dns_diff_t *diff, dns_name_t *name);
/*%<
* Checks if 'name' is equal, up to case, to the last name of the diff.
*
* Requires:
* \li 'diff' is a valid diff.
* \li 'name' is a valid dns name.
*/
size_t
dns_diff_size(const dns_diff_t *diff);
/*%<

View file

@ -324,9 +324,7 @@ axfr_putdata(dns_xfrin_t *xfr, dns_diffop_t op, dns_name_t *name, dns_ttl_t ttl,
}
CHECK(dns_zone_checknames(xfr->zone, name, rdata));
if (dns_diff_size(&xfr->diff) > 128 &&
dns_diff_is_boundary(&xfr->diff, name))
{
if (dns_diff_size(&xfr->diff) > 128) {
xfrin_work_t work = (xfrin_work_t){
.magic = XFRIN_WORK_MAGIC,
.result = ISC_R_UNSET,