Don't skip the counting if fcount_incr() is called with force==true

The fcount_incr() was incorrectly skipping the accounting for the
fetches-per-zone if the force argument was set to true.  We want to skip
the accounting only when the fetches-per-zone is completely disabled,
but for individual names we need to do the accounting even if we are
forcing the result to be success.

(cherry picked from commit a513d4c07f)
This commit is contained in:
Ondřej Surý 2024-06-20 18:59:56 +02:00
parent 46caf5f4a4
commit 6df4fa58fd

View file

@ -1439,8 +1439,9 @@ fcount_incr(fetchctx_t *fctx, bool force) {
REQUIRE(res != NULL);
INSIST(fctx->counter == NULL);
/* Skip any counting if fetches-per-zone is disabled */
spill = atomic_load_acquire(&res->zspill);
if (force || spill == 0) {
if (spill == 0) {
return (ISC_R_SUCCESS);
}
@ -1486,7 +1487,7 @@ fcount_incr(fetchctx_t *fctx, bool force) {
INSIST(spill > 0);
LOCK(&counter->lock);
if (++counter->count > spill) {
if (!force && ++counter->count > spill) {
counter->count--;
INSIST(counter->count > 0);
counter->dropped++;