mirror of
https://github.com/isc-projects/bind9.git
synced 2026-02-26 11:32:01 -05:00
The basic scenario for the problem was that in the process of resolving a query, if any rrset was eligible for prefetching, then it would trigger a call to query_prefetch(), this call would run in parallel to the normal query processing. The problem arises due to the fact that both query_prefetch(), and, in the original thread, a call to ns_query_recurse(), try to attach to the recursionquota, but recursing client stats counter is only incremented if ns_query_recurse() attachs to it first. Conversely, if fetch_callback() is called before prefetch_done(), it would not only detach from recursionquota, but also decrement the stats counter, if query_prefetch() attached to te quota first that would result in a decrement not matched by an increment, as expected. To solve this issue an atomic bool was added, it is set once in ns_query_recurse(), allowing fetch_callback() to check for it and decrement stats accordingly. For a more compreensive explanation check the thread comment below: https://gitlab.isc.org/isc-projects/bind9/-/issues/1719#note_145857 |
||
|---|---|---|
| .. | ||
| bind9 | ||
| dns | ||
| irs | ||
| isc | ||
| isccc | ||
| isccfg | ||
| ns | ||
| samples | ||
| win32/bindevt | ||
| .gitignore | ||
| Makefile.am | ||
| unit-test-driver.sh.in | ||