Commit Graph

39212 Commits

Author SHA1 Message Date
Nicki Křížek
1d6465ff16 [9.18] chg: usr: allow IXFR-to-AXFR fallback on DNS_R_TOOMANYRECORDS
This change allows fallback from an IXFR failure to AXFR when the reason is `DNS_R_TOOMANYRECORDS`. This is because this error condition could be temporary only in an intermediate version of IXFR transactions and it's possible that the latest version of the zone doesn't have that condition. In such a case, the secondary would never be able to update the zone (even if it could) without this fallback.

This fallback behavior is particularly useful with the recently introduced `max-records-per-type` and `max-types-per-name` options: the primary may not have these limitations and may temporarily introduce "too many" records, breaking IXFR. If the primary side subsequently deletes these records, this fallback will help recover the zone transfer failure automatically; without it, the secondary side would first need to increase the limit, which requires more operational overhead and has its own adverse effect.

Closes #4928

Backport of MR !9333

Merge branch 'backport-fallback-ixfr-to-axfr-on-toomanyrecords-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9472
2024-09-10 13:31:21 +00:00
JINMEI Tatuya
a93b6f2040 allow IXFR-to-AXFR fallback on DNS_R_TOOMANYRECORDS
This change allows fallback from an IXFR failure to AXFR when the
reason is DNS_R_TOOMANYRECORDS. This is because this error condition
could be temporary only in an intermediate version of IXFR
transactions and it's possible that the latest version of the zone
doesn't have that condition. In such a case, the secondary would never
be able to update the zone (even if it could) without this fallback.

This fallback behavior is particularly useful with the recently
introduced max-records-per-type and max-types-per-name options:
the primary may not have these limitations and may temporarily
introduce "too many" records, breaking IXFR. If the primary side
subsequently deletes these records, this fallback will help recover
the zone transfer failure automatically; without it, the secondary
side would first need to increase the limit, which requires more
operational overhead and has its own adverse effect.

This change also fixes a minor glitch that DNS_R_TOOMANYRECORDS wasn't
logged in xfrin_fail.

(cherry picked from commit 7289090683)
2024-09-10 14:54:57 +02:00
Michal Nowak
1cdde5656d [9.18] chg: test: Be more patient when stopping servers in the system tests
When the TCP test is run on the busy server, the server might take a
while to wind the server down because it might still be processing all
that 300k invalid XFR requests.

Increate the rncd wait time to 120 seconds, the SIGTERM time to 300
seconds, and reduce the time to wait for ans servers from 1200 second
to just 120 seconds.

(cherry picked from commit d971472321)

Backport of MR !6847

Merge branch 'backport-ondrej-increase-the-time-to-wait-for-servers-to-gracefully-shutdown-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9467
2024-09-10 12:44:29 +00:00
Ondřej Surý
441de680c7 Be more patient when stopping servers in the system tests
When the TCP test is run on the busy server, the server might take a
while to wind the server down because it might still be processing all
that 300k invalid XFR requests.

Increate the rncd wait time to 120 seconds, the SIGTERM time to 300
seconds, and reduce the time to wait for ans servers from 1200 second
to just 120 seconds.

(cherry picked from commit d971472321)
2024-09-10 12:31:21 +02:00
Nicki Křížek
c9ba8630d7 chg: doc: Set up version for BIND 9.18.31
Merge branch 'nicki/set-up-version-for-bind-9.18.31' into 'bind-9.18'

See merge request isc-projects/bind9!9464
2024-09-09 17:24:04 +00:00
Nicki Křížek
80b9b6143b Update BIND version to 9.18.31-dev 2024-09-09 19:23:05 +02:00
Nicki Křížek
17efe703cc [9.18] chg: usr: Follow the number of CPU set by taskset/cpuset
Administrators may wish to constrain the set of cores that BIND 9 runs on via the 'taskset', 'cpuset' or 'numactl' programs (or equivalent on other O/S).

If the admin has used taskset, the `named` will now follow to automatically use the given number of CPUs rather than the system wide count.

Closes #4884

Backport of MR !9398

Merge branch 'backport-4884-use-cpuset-to-get-number-of-cpus-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9443
2024-09-03 13:52:32 +00:00
Ondřej Surý
c8f1fa0e47 Follow the number of CPU set by taskset/cpuset
Administrators may wish to constrain the set of cores that BIND 9 runs
on via the 'taskset', 'cpuset' or 'numactl' programs (or equivalent on
other O/S), for example to achieve higher (or more stable) performance
by more closely associating threads with individual NIC rx queues. If
the admin has used taskset, it follows that BIND ought to
automatically use the given number of CPUs rather than the system wide
count.

Co-Authored-By: Ray Bellis <ray@isc.org>
(cherry picked from commit 5a2df8caf5)
2024-09-03 14:54:40 +02:00
Mark Andrews
7f6e092c05 [9.18] fix: chg: Improve performance when looking for the closest encloser when returning NSEC3 proofs
Use the fact that the database returns the longest matching part of the requested name to find the required NSEC3 record. If there are multiple versions present in the database we may have to search further.

Closes #4460

Backport of MR !9436

Merge branch 'backport-4460-auth-nsec3-many-labels-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9439
2024-08-29 21:38:37 +00:00
Mark Andrews
5d81a258e3 Return partial match when requested
Return partial match from dns_db_find/dns_db_find when requested
to short circuit the closest encloser discover process.  Most of the
time this will be the actual closest encloser but may not be when
there yet to be committed / cleaned up versions of the zone with
names below the actual closest encloser.

(cherry picked from commit d42ea08f16)
2024-08-29 21:05:54 +00:00
Michal Nowak
456904d15d [9.18] chg: test: Bump max-recursion-queries to 100 in resolver system test
With max-recursion-queries set to 50 the resolver system test was
unstable in the "checking query resolution for a domain with a valid
glueless delegation chain" check as ns1 replied with SERVFAIL.

Closes #4897

Backport of MR !9435

Merge branch 'backport-4897-resolver-ns1-max-recursion-queries-100-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9441
2024-08-29 15:32:08 +00:00
Michal Nowak
5a802a22b5 Bump max-recursion-queries to 100 in resolver system test
With max-recursion-queries set to 50 the resolver system test was
unstable in the "checking query resolution for a domain with a valid
glueless delegation chain" check as ns1 replied with SERVFAIL.

(cherry picked from commit 8e0244d300)
2024-08-29 14:41:52 +00:00
Michal Nowak
2e4e6daf98 [9.18] chg: ci: Generate TSAN stress test
Backport of MR !9334

Merge branch 'backport-mnowak/generate-tsan-stress-jobs-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9432
2024-08-28 16:39:54 +00:00
Michal Nowak
77941b7aa9 Generate TSAN stress test
(cherry picked from commit 338d4c8dd3)
2024-08-28 09:40:26 +00:00
Michal Nowak
7859024c46 [9.18] chg: ci: Cleanup stress test artifacts
Backport of MR !9424

Merge branch 'backport-mnowak/avoid-some-artifacts-in-stress-tests-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9429
2024-08-28 08:56:04 +00:00
Michal Nowak
014c0e3048 Some stress test artifacts should not be saved in CI artifact
(cherry picked from commit 6f86885304)
2024-08-28 08:01:27 +00:00
Ondřej Surý
cccd26e942 [9.18] fix: dev: Stop using malloc_usable_size and malloc_size
The `malloc_usable_size()` can return size larger than originally allocated and when these sizes disagree the fortifier enabled by `_FORTIFY_SOURCE=3` detects overflow and stops the `named` execution abruptly.  Stop using these convenience functions as they are primary used for introspection-only.

Closes #4880

Backport of MR !9400

Merge branch 'backport-4880-dont-use-malloc_usable_size-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9419
2024-08-27 03:46:13 +00:00
Ondřej Surý
015b390f62 Stop using malloc_usable_size and malloc_size
Although the nanual page of malloc_usable_size says:

    Although the excess bytes can be over‐written by the application
    without ill effects, this is not good programming practice: the
    number of excess bytes in an allocation depends on the underlying
    implementation.

it looks like the premise is broken with _FORTIFY_SOURCE=3 on newer
systems and it might return a value that causes program to stop with
"buffer overflow" detected from the _FORTIFY_SOURCE.  As we do have own
implementation that tracks the allocation size that we can use to track
the allocation size, we can stop relying on this introspection function.

Also the newer manual page for malloc_usable_size changed the NOTES to:

    The value returned by malloc_usable_size() may be greater than the
    requested size of the allocation because of various internal
    implementation details, none of which the programmer should rely on.
    This function is intended to only be used for diagnostics and
    statistics; writing to the excess memory without first calling
    realloc(3) to resize the allocation is not supported.  The returned
    value is only valid at the time of the call.

Remove usage of both malloc_usable_size() and malloc_size() to be on the
safe size and only use the internal size tracking mechanism when
jemalloc is not available.

(cherry picked from commit d61712d14e)
2024-08-27 04:49:55 +02:00
Mark Andrews
b73a385696 Define ISC_ATTR_UNUSED macro for __attribute__((__unused__))
The ISC_ATTR_UNUSED macro was missing in BIND 9.18, which
complicated things when backporting merge requests from main.
As __attribute__((__unused__)) is ubiquitous, just define the
macro.
2024-08-27 04:49:55 +02:00
Michal Nowak
38a8fc87c5 [9.18] chg: ci: Drop removed system tests from cross-version-config-tests
The cross-version-config-tests job fails when a system test is removed
from the upcoming release. To avoid this, remove the system test also
from the $BIND_BASELINE_VERSION.

See the failure mode at https://gitlab.isc.org/isc-projects/bind9/-/jobs/4668947.

Backport of MR !9413

Merge branch 'backport-mnowak/remove-dialup-from-cross-version-config-tests-job-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9416
2024-08-26 15:20:47 +00:00
Michal Nowak
c1af8342cb Drop removed system tests from $BIND_BASELINE_VERSION
The cross-version-config-tests job fails when a system test is removed
from the upcoming release. To avoid this, remove the system test also
from the $BIND_BASELINE_VERSION.

(cherry picked from commit 60f5f2a9d9)
2024-08-26 14:32:50 +00:00
Nicki Křížek
91c8693f7a chg: test: Re-enable keyfromlabel&enginepkcs11 tests
Closes #4814

Merge branch '4814-reenable-keyfromlabel-enginepkcs11-tests' into 'bind-9.18'

See merge request isc-projects/bind9!9412
2024-08-26 08:49:27 +00:00
Nicki Křížek
c75d9734e7 Revert "Mark the keyfromlabel&enginepkcs11 tests as xfail"
This reverts commit ff983ed647.
2024-08-26 10:09:41 +02:00
Petr Špaček
b4d1988c28 [9.18] fix: dev: Preserve statement tag order in documentation
This supports bit-for-bit reproducibility of built documentation.

Closes #4886

Backport of MR !9399

Merge branch 'backport-issue-4886/order-preserving-documentation-tags-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9409
2024-08-23 14:42:41 +00:00
Petr Špaček
a5d06fceb7 Disallow duplicate statement tags in docs
I can't think of a use-case for them, so let's simplify code and treat
them as an invalid input.

(cherry picked from commit 5b832126b3)
2024-08-23 14:02:21 +00:00
James Addison
3ecef74b9a Preserve de-duplicated tag order in documentation
The 'set' datatype in Python does not provide iteration-order
guarantees related to insertion-order.  That means that its
usage in the 'split_csv' helper function during documentation
build can produce nondeterministic results.

That is non-desirable for two reasons: it means that the
documentation output may appear to vary unnecessarily between
builds, and secondly there could be loss-of-information in cases
where tag order in the source documentation is significant.

This patch implements order-preserving de-duplication of tags,
allowing authors to specify tags using intentional priority
ordering, while also removing tags that appear more than once.

(cherry picked from commit 5a79b36f56)
2024-08-23 14:02:21 +00:00
Petr Špaček
2443a31350 [9.18] new: ci: Automate parts of MR workflow
Backport of MR !9244

Merge branch 'backport-pspacek/post-merge-ci-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9402
2024-08-23 08:19:16 +00:00
Petr Špaček
cd79103c5f Remove milestone check from dangerfile
Milestone is automatically set by 'merged-metadata' CI job to 'Not
released yet' so it does not matter what the original value was.

(cherry picked from commit 73b950dc29)
2024-08-23 07:58:34 +00:00
Petr Špaček
e3b13bfacf Remove 'Release notes' label check from dangerfile
This label is now handled automatically by 'merged-metadata' CI job.

(cherry picked from commit 146743d5a3)
2024-08-23 07:58:34 +00:00
Petr Špaček
a85479639c Remove 'No CHANGES' check from dangerfile
This label is now handled automatically by 'merged-metadata' CI job.

(cherry picked from commit edf0e6415a)
2024-08-23 07:58:34 +00:00
Petr Špaček
aa0e56680a Automatically adjust MR metadata after merge
1. Set milestone to 'Not released yet' after merge
   We will set milestone to actual version number when we actually tag a
   particular version. This will get rid of mass MR reassignment when we
   do last minute changes to a release plan etc.

2. Adjust No CHANGES and Release Notes MR labels to match gitchangelog
   workflow.

(cherry picked from commit d1c64d588b)
2024-08-23 07:58:34 +00:00
Petr Špaček
0a246b5cfd Mark backports CI job as non-interruptible
Previously CI job for the autobackport bot inherited "interruptible:
true" global configuration. This caused premature termination of the job
when another merge was finished before the autobackport job ran to
completion.

(cherry picked from commit 3165261ecd)
2024-08-23 07:58:34 +00:00
Matthijs Mekking
43c8ed45e5 [9.18] fix: usr: Fix algoritm rollover bug when there are two keys with the same keytag
If there is an algorithm rollover and two keys of different algorithm share the same keytags, then there is a possibility that if we check that a key matches a specific state, we are checking against the wrong key. This has been fixed by not only checking for matching key tag but also key algorithm.

Closes #4878

Backport of MR !9381

Merge branch 'backport-4878-fix-algorithm-rollover-keytag-conflict-bug-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9394
2024-08-22 12:58:16 +00:00
Matthijs Mekking
bb3bf56157 Fix algorithm rollover bug wrt keytag conflicts
If there is an algorithm rollover and two keys of different algorithm
share the same keytags, then there is a possibility that if we check
that a key matches a specific state, we are checking against the wrong
key.

Fix this by not only checking for matching key id but also key
algorithm.

(cherry picked from commit f37eb33f29)
2024-08-22 10:15:02 +00:00
Matthijs Mekking
9e1bed5bdb Adjust kasp system test to get keys which signed
If there is a keytag conflict between keys with different algorithms,
we need to supply what key algorithm is used so we can get the right
public key.

For clarity, print the algorithm on the found keys after 'check_keys'.

(cherry picked from commit 7bb6d82505)
2024-08-22 10:15:01 +00:00
Michal Nowak
06d612a312 [9.18] chg: ci: Update Clang to version 19
These Clang 19-identified issues need to be addressed first:
- [x] isc-projects/bind9!9313
- [x] isc-projects/bind9!9317
- [x] isc-projects/bind9!9316
- [x] isc-projects/bind9!9315

Validation pipelines for backports:
- [x] ~"v9.21" - https://gitlab.isc.org/isc-projects/bind9/-/pipelines/191211
- [x] ~"v9.20" - https://gitlab.isc.org/isc-projects/bind9/-/pipelines/191512
- [x] ~"v9.18" - https://gitlab.isc.org/isc-projects/bind9/-/pipelines/191904

Prereq: isc-projects/images!328

Backport of MR !9296

Merge branch 'backport-mnowak/llvm-19-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9391
2024-08-22 09:09:03 +00:00
Michal Nowak
b5caae0633 Use clang-format-19 to update formatting 2024-08-22 10:25:22 +02:00
Michal Nowak
07179f0897 Update Clang to version 19
(cherry picked from commit ec62fc1399)
2024-08-22 08:16:08 +00:00
Mark Andrews
a59fe212a3 [9.18] chg: dev: Restore the ability to select individual unit tests
This adds the command line arguments: `-d` (debug), `-l` (list tests) and `-t test` (run this test) to the unit tests.

e.g. 
```
    % ./rdata_test -t zonemd
    [==========] selected: Running 1 test(s).
    [ RUN      ] zonemd
    [       OK ] zonemd
    [==========] selected: 1 test(s) run.
    [  PASSED  ] 1 test(s).
    % 
```

Closes #4579

Backport of MR !9384

Merge branch 'backport-4579-restore-the-ability-to-select-individual-unit-tests-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9386
2024-08-22 06:49:00 +00:00
Mark Andrews
b8cdd96ff4 Extend ISC_TEST_MAIN for debugging
ISC_TEST_MAIN now supports turning on/off debugging and
running individual tests.

(cherry picked from commit d8a6ff5c3e)
2024-08-22 06:04:59 +00:00
Evan Hunt
01ee251d13 fix: dev: fix clang-scan 19 warnings
Silence warnings generated by clang-scan.

Merge branch 'each-clang-scan-errors-bind-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9388
2024-08-22 05:29:09 +00:00
Evan Hunt
a1b2c85d84 ensure fd is non-negative before calling dup()
this silences a spurious warning from clang-scan 19.
2024-08-21 21:37:51 -07:00
Evan Hunt
2b58dc89f5 check for NULL before closing batchfp
this silences a warning from clang-scan 19.
2024-08-21 21:37:51 -07:00
Michal Nowak
9f9a63b04e [9.18] chg: ci: Add FreeBSD 14.1
Prereq: https://gitlab.isc.org/isc-projects/images/-/merge_requests/323

Backport of MR !9116

Merge branch 'backport-mnowak/freebsd-14.1-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9383
2024-08-22 04:11:26 +00:00
Michal Nowak
13dffbe415 Add FreeBSD 14.1
(cherry picked from commit bca3d09354)
2024-08-21 16:31:28 +00:00
Nicki Křížek
9a63dd7cb6 Merge tag 'v9.18.29' into bind-9.18 2024-08-21 16:36:08 +02:00
Arаm Sаrgsyаn
99ce0d6b83 [9.18] new: usr: Print the full path of the working directory in startup log messages
named now prints its initial working directory during startup and the
changed working directory when loading or reloading its configuration
file if it has a valid 'directory' option defined.

Closes #4731

Backport of MR !9362

Merge branch 'backport-4731-log-workdir-full-path-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9373
2024-08-21 09:25:34 +00:00
Aram Sargsyan
3832070e92 Print the full path of the working directory in startup log messages
named now prints its initial working directory during startup and the
changed working directory when loading or reloading its configuration
file if it has a valid 'directory' option defined.

(cherry picked from commit fd8e1d161f)
2024-08-21 08:20:55 +00:00
Petr Špaček
ca53636043 [9.18] chg: doc: Improve changelog & release notes workflow
Related: #4847

Backport of MR !9300

Merge branch 'backport-4847-changelog-sorting-and-tweaks-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!9365
2024-08-20 12:03:01 +00:00
Nicki Křížek
c0ca052661 Omit MR link from release notes
When manually handling the release notes (due to rst markup, fixups
etc.), the different MR number for backports causes needless friction.
Remove the reference from release notes and keep it only in changelog
which isn't manually redacted.

(cherry picked from commit 993ba7cc7f)
2024-08-20 11:51:47 +00:00