mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-08 20:42:06 -04:00
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:
parent
5c80876a6d
commit
7502e73333
3 changed files with 1 additions and 26 deletions
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
/*%<
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue