Commit Graph
39504 Commits
Author SHA1 Message Date
Nicki Křížek 53a84151c5 [9.18] chg: ci: Ensure changelog job builds docs with the new entry
The changelog job is supposed to test that the text from GitLab MR
title&description is valid rst syntax and can be built with sphinx. In
49128fc1, the way gitchangelog generates entries was changed - it no
longer writes to the changelog file, but generates output on stdout
instead. Ensure the generated notes is actually written to (some)
rendered file which is part of the docs so that the subsequent sphinx
build attempts to render the note.

Backport of MR !9804

Merge branch 'backport-nicki/ci-fix-changelog-job-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9998
2025-01-27 09:35:45 +00:00
Nicki Křížek 50fa13cafe Ensure changelog job builds docs with the new entry
The changelog job is supposed to test that the text from GitLab MR
title&description is valid rst syntax and can be built with sphinx. In
49128fc1, the way gitchangelog generates entries was changed - it no
longer writes to the changelog file, but generates output on stdout
instead. Ensure the generated notes is actually written to (some)
rendered file which is part of the docs so that the subsequent sphinx
build attempts to render the note.

(cherry picked from commit 380a30ba8d)
2025-01-24 18:11:16 +00:00
Michal Nowak 70ef4952e5 [9.18] new: doc: Add linkcheck to CI
Backport of MR !9680

Merge branch 'backport-mnowak/rtd-add-linkcheck-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9995
2025-01-24 14:39:56 +00:00
Michal Nowak 2d354606d6 Disable anchor checking for GitHub
(cherry picked from commit 641d7c561f391bdb6b46f5e19a532a5028ba0946)
2025-01-24 15:07:38 +01:00
Michal Nowak 789cafb209 Add linkcheck job
(cherry picked from commit 48eab76427)
2025-01-24 14:38:52 +01:00
Michal Nowak 48a77b943a Fix broken links in documentation
Some detected links are not to be verified (127.*, dnssec-or-not.com)
and some I can't fix (flaticon, godaddy, icann), but they are not
crucial.

(cherry picked from commit 8302469507)
2025-01-24 14:38:52 +01:00
Matthijs Mekking 13f3e88a8e [9.18] chg: doc: Document how secondaries refresh a zone in the ARM
Closes #5123

Backport of MR !9966

Merge branch 'backport-5123-document-refreshing-a-secondary-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9987
2025-01-24 09:07:30 +00:00
Matthijs Mekking 8777a33e3e Document how secondaries refresh a zone in the ARM
We have a KB article that describes this, put a condensed version into
the ARM.

(cherry picked from commit 8daf3782d1)
2025-01-24 09:07:21 +00:00
Nicki Křížek 46be0e9838 [9.18] chg: ci: Set stricter limits for respdiff testing
Adjust the limit of maximum disagreements in respdiff results based on
recent pipeline results.

The respdiff and respdiff:asan seem to have almost identical results,
typically around 0.07 % of differences with ocassional spikes up to
around 0.11 %. Similar results are for respdiff:tsan, perhaps with more
common spikes with values up to around 0.12 %. Set the limit to 0.15 %
to allow for some tolerance due to network conditions, time of day etc.

The respdiff:third-party has a slightly higher disagreements average,
with typical values being around 0.12 %. Set the limit to 0.2 %.

Exceeding either of those values should be quite clear indication that
some resolution behaviour has changed, since the values appear to be
very stable within the newly configured limits.

Backport of MR !9950

Merge branch 'backport-nicki/ci-respdiff-limits-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9990
2025-01-23 17:48:18 +00:00
Nicki Křížek 1c1a7aa2e1 Set stricter limits for respdiff testing
Adjust the limit of maximum disagreements in respdiff results based on
recent pipeline results.

The respdiff and respdiff:asan seem to have almost identical results,
typically around 0.07 % of differences with ocassional spikes up to
around 0.11 %. Similar results are for respdiff:tsan, perhaps with more
common spikes with values up to around 0.12 %. Set the limit to 0.15 %
to allow for some tolerance due to network conditions, time of day etc.

The respdiff:third-party has a slightly higher disagreements average,
with typical values being around 0.12 %. Set the limit to 0.2 %.

Exceeding either of those values should be quite clear indication that
some resolution behaviour has changed, since the values appear to be
very stable within the newly configured limits.

(cherry picked from commit 0584d3f65f)
2025-01-23 18:31:38 +01:00
Ondřej Surý 2c8d9c490c fix: nil: Stop the timer when canceling the last fetch
When canceling the last fetch, we also need to stop the fctx_expired
timer from possibly firing between the fctx_shutdown() call and the
fetch being actually destroyed along with the timer.

Closes #5136

Merge branch '5136-stop-timer-when-canceling-last-fetch-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9988
2025-01-23 17:25:37 +00:00
Ondřej Surý b14df7d459 Stop the timer when shuttingdown the fetch context
When canceling the last fetch, we also need to stop the fctx_expired
timer from possibly firing between the fctx_shutdown() call and the
fetch being actually destroyed along with the timer.  As there are
multiple places where fctx_shutdown() is being called without stopping
the timer, move the fctx_stoptimer() to fctx_shutdown() and cleanup the
explicit usage.
2025-01-23 17:46:37 +01:00
Matthijs Mekking 8e631afebe [9.18] fix: doc: Clarify dnssec-signzone interval option
There was confusion about whether the interval was calculated from
the validity period provided on the command line (with -s and -e),
or from the signature being replaced.

Add text to clarify that the interval is calculated from the new
validity period.

Closes #5128

Backport of MR !9955

Merge branch 'backport-5128-clarify-dnssec-signzone-interval-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9984
2025-01-23 11:53:34 +00:00
Matthijs Mekking 7545157fe8 Clarify dnssec-signzone interval option
There was confusion about whether the interval was calculated from
the validity period provided on the command line (with -s and -e),
or from the signature being replaced.

Add text to clarify that the interval is calculated from the new
validity period.

(cherry picked from commit ae42fa69fa)
2025-01-23 11:13:15 +00:00
Mark Andrews 132947c0ba [9.18] fix: usr: Yaml string not terminated in negative response in delv
Closes #5098

Backport of MR !9922

Merge branch 'backport-5098-missing-yaml-string-termination-delv-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9980
2025-01-23 00:40:13 +00:00
Mark Andrews 60c441eeff Check delv +yaml negative response output
(cherry picked from commit 9c04640def)
2025-01-22 23:58:54 +00:00
Mark Andrews 8790d5cd22 Terminate yaml string after negative comment
(cherry picked from commit 89afc11389)
2025-01-22 23:58:54 +00:00
Ondřej Surý 7c90bd5bb3 [9.18] fix: usr: Apply the memory limit only to ADB database items
Resolver under heavy-load could exhaust the memory available for storing
the information in the Address Database (ADB) effectively evicting already
stored information in the ADB.  The memory used to retrieve and provide
information from the ADB is now not a subject of the same memory limits
that are applied for storing the information in the Address Database.

Closes #5127

Backport of MR !9954

Merge branch 'backport-5127-change-ADB-memory-split-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9976
2025-01-22 14:30:05 +00:00
Ondřej Surý 239f4104da Remove memory limit on ADB finds and fetches
Address Database (ADB) shares the memory for the short lived ADB
objects (finds, fetches, addrinfo) and the long lived ADB
objects (names, entries, namehooks).  This could lead to a situation
where the resolver-heavy load would force evict ADB objects from the
database to point where ADB is completely empty, leading to even more
resolver-heavy load.

Make the short lived ADB objects use the other memory context that we
already created for the hashmaps.  This makes the ADB overmem condition
to not be triggered by the ongoing resolver fetches.

(cherry picked from commit 05faff6d53)
2025-01-22 15:29:27 +01:00
Ondřej Surý 2c667bc9c6 [9.18] fix: usr: Improve the resolver performance under attack
A remote client can force the DNS resolver component to consume the memory faster than cleaning up the resources for the canceled resolver fetches due to `recursive-clients` limit. If the such traffic pattern is sustained for a long period of time, the DNS server might eventually run out of the available memory. This has been fixed.

It should be noted that when under such heavy attack for BIND 9 version both with and without the fix, no outgoing DNS queries will be successful as the generated traffic pattern will consume all the available slots for the recursive clients.

Merge branch '5110-backport-the-hashtable-use-for-fetchcontexts-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9961
2025-01-22 14:27:44 +00:00
Ondřej Surý 4cc1160e4d Replace linked lists with the hashtables to hold fetch contexts
When the recursive-clients value is too large, the linked lists holding
the fetch contexts can also grow large and since the algorithm to merge
outgoing queries is quadratic, named can get slow.

Replace the linked list with hashtable for faster lookups.  This also
allows us to reduce the number of tasks (buckets) in the resolver.
2025-01-22 15:06:04 +01:00
Ondřej Surý 43c77d95f1 [9.18] fix: usr: Avoid unnecessary locking in the zone/cache database
Prevent lock contention among many worker threads referring to the same database node at the same time. This would improve zone and cache database performance for the heavily contended database nodes.

Backport of !9963 

Closes #5130

Merge branch '5130-reduce-lock-contention-in-decrement-reference-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9965
2025-01-22 13:31:39 +00:00
JINMEI TatuyaandOndřej Surý 065ffb2eb8 Optimize database decref by avoiding locking with refs > 1
Previously, this function always acquires a node write lock if it
might need node cleanup in case the reference decrements to 0.  In
fact, the lock is unnecessary if the reference is larger than 1 and it
can be optimized as an "easy" case. This optimization could even be
"necessary". In some extreme cases, many worker threads could repeat
acquring and releasing the reference on the same node, resulting in
severe lock contention for nothing (as the ref wouldn't decrement to 0
in most cases). This change would prevent noticeable performance
drop like query timeout for such cases.

Co-authored-by: JINMEI Tatuya <jtatuya@infoblox.com>
Co-authored-by: Ondřej Surý <ondrej@isc.org>

(cherry picked from commit 7f4471594d)
2025-01-22 14:31:09 +01:00
Ondřej Surý 57187b2c4f [9.18] chg: dev: Shutdown the fetch context after canceling the last fetch
Shutdown the fetch context immediately after the last fetch has been canceled from that particular fetch context.

Merge branch 'ondrej/shutdown-the-fetch-context-early-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9960
2025-01-22 13:22:26 +00:00
Ondřej Surý 8bf311c769 Shutdown the fetch context after canceling the last fetch
Currently, the fetch context will continue running even when the last
fetch (response) has been removed from the context, so named can process
and cache the answer.  This can lead to a situation where the number of
outgoing recursing clients exceeds the the configured number for
recursive-clients.

Be more stringent about the recursive-clients limit and shutdown the
fetch context immediately after the last fetch has been canceled from
that particular fetch context.
2025-01-22 14:21:51 +01:00
Ondřej Surý 327b666c6d [9.18] rem: usr: Remove --with-tuning=small/large configuration option
The configuration option --with-tuning has been removed as it is no longer required or desired.

Merge branch 'ondrej/remove-tuning-large-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9959
2025-01-22 13:17:13 +00:00
Ondřej Surý 1b9d949534 Remove --with-tuning=small/large configuration option
The last remaining tuning value was RESOLVER_NTASKS and instead of
having variable number of the tasks per-cpu and in named and in
dns_client, set the number of the resolver tasks to 523 (number taken
from dns_client unit) to accomodate most of the recursive-clients
values.
2025-01-22 14:16:40 +01:00
Ondřej Surý 008e520109 [9.18] chg: dev: Reduce memory sizes of common structures
* Reduce `sizeof(isc_sockaddr_t)` from 152 to 48 bytes
* Reduce `sizeof(struct isc__nm_uvreq)` from 1560 to 560 bytes

Partial backport of !8299

Merge branch 'ondrej/reduce-netmgr-memory-usage-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9953
2025-01-22 13:13:01 +00:00
Ondřej Surý d8206a939c Reduce struct isc__nm_uvreq size from 1560 to 560 bytes
The uv_req union member of struct isc__nm_uvreq contained libuv request
types that we don't use.  Turns out that uv_getnameinfo_t is 1000 bytes
big and unnecessarily enlarged the whole structure.  Remove all the
unused members from the uv_req union.
2025-01-22 14:12:38 +01:00
Ondřej Surý a7630c2c62 Reduce sizeof isc_sockaddr from 152 to 48 bytes
After removing sockaddr_unix from isc_sockaddr, we can also remove
sockaddr_storage and reduce the isc_sockaddr size from 152 bytes to just
48 bytes needed to hold IPv6 addresses.

(cherry picked from commit 2367b6a2e1)
2025-01-22 14:12:38 +01:00
Colin Vidal e487294ce4 [9.18] new: nil: ignore TAGS files
Backport of MR !9956

Merge branch 'backport-colin/ignoreTAGS-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9974
2025-01-22 12:09:02 +00:00
Colin Vidal 9c5d1ebe28 ignore TAGS files
TAGS file are generated from `make tags` using etags. Other index tags
are already ignored (GTAGS, GPATH, etc.). Also ignoring `TAGS`.

(cherry picked from commit 2164ea8abd)
2025-01-22 11:23:33 +00:00
Andoni Duarte 766b7bcf7e chg: doc: Set up version for BIND 9.18.34
Merge branch 'andoni/set-up-version-for-bind-9.18.34' into 'bind-9.18'

See merge request isc-projects/bind9!9970
2025-01-22 08:33:26 +00:00
Andoni Duarte Pintado 10680d143c Update BIND version to 9.18.34-dev 2025-01-21 17:55:04 +01:00
Nicki Křížek a3fe766fe9 [9.18] new: ci: Add shotgun perf test of DoH GET to CI
Add performance tests of DoH using the GET protocol to nightly pipelines.

Backport of MR !9926

Merge branch 'backport-nicki/ci-shotgun-doh-get-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9940
2025-01-08 14:13:04 +00:00
Nicki Křížek 934b57040f Add shotgun perf test of DoH GET to CI
(cherry picked from commit 32c5f24713)
2025-01-08 13:46:54 +00:00
Arаm Sаrgsyаn f68e60b3dc fix: dev: Fix a bug in isc_rwlock_trylock()
When isc_rwlock_trylock() fails to get a read lock because another
writer was faster, it should wake up other waiting writers in case
there are no other readers, but the current code forgets about
the currently active writer when evaluating 'cntflag'.

Unset the WRITER_ACTIVE bit in 'cntflag' before checking to see if
there are other readers, otherwise the waiting writers, if they exist,
might not wake up.

Closes #5121

Merge branch 'aram/isc_rwlock_trylock-bugfix-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9937
2025-01-08 10:29:14 +00:00
Aram Sargsyan 73b6d9e9e5 Fix a bug in isc_rwlock_trylock()
When isc_rwlock_trylock() fails to get a read lock because another
writer was faster, it should wake up other waiting writers in case
there are no other readers, but the current code forgets about
the currently active writer when evaluating 'cntflag'.

Unset the WRITER_ACTIVE bit in 'cntflag' before checking to see if
there are other readers, otherwise the waiting writers, if they exist,
might not wake up.
2025-01-07 13:30:26 +00:00
Michal Nowak 333834e764 [9.18] fix: test: Various coccinelle fixes
Backport of MR !9836

Merge branch 'backport-mnowak/cocci-more-set-if-not-null-changes-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9917
2024-12-13 15:34:11 +00:00
Michal Nowak 6db006af23 Drop superfluous isc_mem_get() NULL check
coccinelle v1.1 trips over a superfluous isc_mem_get() NULL check in
tests/libtest/ns.c and reports the following failure in CI:

    EXN: Failure("rule starting on line 26: already tagged token:\nC code context\nFile \"./tests/libtest/ns.c\", line 350, column 1, charpos = 7939\n  around = 'if',\n  whole content = \tif (qctx != NULL) {") in ./tests/libtest/ns.c

(cherry picked from commit cf76851c75)
2024-12-13 14:54:48 +01:00
Andoni Duarte Pintado 1d3f2cf624 Merge tag 'v9.18.32' into bind-9.18 2024-12-13 10:41:07 +01:00
Mark Andrews fdbefcd64f [9.18] fix: test: Fix "checking startup notify rate limit" failure
Fix the loop terminating condition to get consistent sample sizes and increase the minimum number of samples from 20 to 40.

Closes #5091

Backport of MR !9894

Merge branch 'backport-5091-investigate-checking-startup-notify-rate-limit-failure-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9910
2024-12-13 01:40:04 +00:00
Mark Andrews 9fa4bd1c1b Fix startup notify rate test
The terminating conditions for the startup notify test would
occasionally get ~20 records or get +10 seconds of records due to
a bad terminating condition.  Additionally 20 samples lead to test
failures.  Fix the terminating condition to use the correct conditional
(-eq -> -ge) and increase the minimum number of log entries to
average over to 22.

(cherry picked from commit 46388d07a2)
2024-12-13 12:06:33 +11:00
Mark Andrews 7333218a2c [9.18] fix: test: tests/irs/resconf_test.c is missing check callbacks
Closes #5088

Backport of MR !9884

Merge branch 'backport-5088-tests-irs-resconf_test-c-is-missing-check-callbacks-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9908
2024-12-12 23:58:26 +00:00
Mark Andrews 40c616f303 Check that nameservers are parsed correctly
Add checks that the expected nameservers where actuall addes when
parsing resolv.conf.

(cherry picked from commit c38eb87158)
2024-12-13 10:27:22 +11:00
Nicki Křížek 95a159561f [9.18] chg: doc: Update CONTRIBUTING.md and developer docs
Include the recent changes such as:
- changes to running system tests
- gitlab development workflow
- changelog and release note process

Closes #5045

Backport of MR !9784

Merge branch 'backport-5045-update-contributing-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9903
2024-12-12 17:13:39 +00:00
Nicki Křížek 5db64b5898 Update CONTRIBUTING.md and developer doc
Include the recent changes such as:
- changes to running system tests
- gitlab development workflow
- changelog and release note process

(cherry picked from commit 39485c1f70)
2024-12-12 17:40:50 +01:00
Michal Nowak 41302f8535 [9.18] fix: test: Wait for "all zones loaded" after rndc reload in "database" test
After the rndc reload command finished, we might have queried the
database zone sooner than it was reloaded because rndc reloads zones
asynchronously if no specific zone was provided. We should wait for "all
zones loaded" in the ns1 log to be sure.

Closes #5075

Backport of MR !9829

Merge branch 'backport-5075-database-rndc-reload-ensure-all-zones-loaded-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9901
2024-12-12 12:51:46 +00:00
Michal Nowak 5825e79375 Wait for "all zones loaded" after rndc reload in "database" test
After the rndc reload command finished, we might have queried the
database zone sooner than it was reloaded because rndc reloads zones
asynchronously if no specific zone was provided. We should wait for "all
zones loaded" in the ns1 log to be sure.

(cherry picked from commit 0bdd03db66)
2024-12-12 12:09:35 +00:00
Evan Hunt 3f95283d76 [9.18] fix: nil: update style guideline to reflect current practice
The style guide now mentions clang-format, doesn't parenthesize return values, and no longer calls for backward compatibility in public function names.

Backport of MR !9892

Merge branch 'backport-each-style-update-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9897
2024-12-11 15:53:26 +00:00