Commit Graph
7091 Commits
Author SHA1 Message Date
Ondřej Surý 713e202110 Add CHANGES note for [GL #4004] 2023-04-21 12:53:34 +02:00
Ondřej Surý c233cd621b Add CHANGES and release note for [GL #4005] 2023-04-21 12:42:28 +02:00
Ondřej Surý ebd9188d42 Add CHANGES note for [GL #3977] 2023-04-21 12:10:02 +02:00
Ondřej Surý 9b0353e62e Add CHANGES note for [GL #4011] 2023-04-20 12:58:47 +02:00
Michał Kępień 4fcbb078c1 Merge tag 'v9.19.12'
BIND 9.19.12
2023-04-20 12:43:46 +02:00
Ondřej Surý 3d36e0bb89 Add CHANGES note for [GL #3986] 2023-04-20 10:57:20 +02:00
Ondřej Surý f4fcb63152 Add CHANGES and release note for [GL #4001] [GL #4002] 2023-04-20 10:09:53 +02:00
Ondřej Surý 2423907b87 Add CHANGES note for [GL #4015] 2023-04-14 16:31:48 +02:00
Aram Sargsyan 786b0689c6 Add a CHANGES note for [GL #4000] 2023-04-14 12:11:52 +00:00
Aram Sargsyan bf8e93aee5 Add a CHANGES note for [GL !7832] 2023-04-14 07:39:38 +00:00
Ondřej Surý b88ed40c96 Add CHANGES note for [GL #3985] 2023-04-12 14:10:37 +02:00
Petr Špaček a375f38557 Add a CHANGES marker 2023-04-11 16:48:27 +02:00
Tony Finch b171cacf4f Use a qp-trie for the zone table
This change makes the zone table lock-free for reads. Previously, the
zone table used a red-black tree, which is not thread safe, so the hot
read path acquired both the per-view mutex and the per-zonetable
rwlock. (The double locking was to fix to cleanup races on shutdown.)

One visible difference is that zones are not necessarily shut down
promptly: it depends on when the qp-trie garbage collector cleans up
the zone table. The `catz` system test checks several times that zones
have been deleted; the test now checks for zones to be removed from
the server configuration, instead of being fully shut down. The catz
test does not churn through enough zones to trigger a gc, so the zones
are not fully detached until the server exits.

After this change, it is still possible to improve the way we handle
changes to the zone table, for instance, batching changes, or better
compaction heuristics.
2023-04-05 12:38:11 +01:00
Aram Sargsyan 4a0bd69056 Add a CHANGES note for [GL #3997] 2023-04-04 10:33:28 +00:00
Ondřej Surý 69a23a557b Add CHANGES note for [GL #3984] 2023-04-04 10:32:41 +02:00
Ondřej Surý 04b851342b Add CHANGES note for [GL #3989] 2023-04-04 09:23:51 +02:00
Mark AndrewsandPetr Špaček 5de552d545 Add CHANGES for [GL #3981] 2023-04-03 17:44:41 +02:00
Aram Sargsyan ef81775e7b Add a CHANGES note for [GL #3674] 2023-04-03 15:21:43 +00:00
Matthijs Mekking 148ce1f678 Add CHANGES and release notes for #3901
This is a new feature that deserves attention.
2023-04-03 14:01:22 +00:00
Tony FinchandTony Finch fdcbbc2a20 CHANGES note for [GL !7696]
[func]		Add isc_histo_t general-purpose log-linear histograms,
		and use them for message size statistics.
2023-04-03 12:08:37 +01:00
Ondřej Surý d5921fafed Add CHANGES note for [GL #3710] 2023-04-03 10:28:43 +00:00
Tony Finch 555690a3c9 Simplify thread spawning
The `isc_trampoline` module had a lot of machinery to support stable
thread IDs for use by hazard pointers. But the hazard pointer code
is gone, and the `isc_loop` module now has its own per-loop thread
IDs.

The trampoline machinery seems over-complicated for its remaining
tasks, so move the per-thread initialization into `isc/thread.c`,
and delete the rest.
2023-03-31 17:21:52 +01:00
Ondřej Surý f853672e41 Add CHANGES note for [GL #3982] 2023-03-31 12:52:59 +00:00
Ondřej Surý a568a3d52a Add CHANGES note for [GL !7757] 2023-03-31 13:33:18 +02:00
Tony Finch 194621a74e Fix a crash when dig or host receive a signal
When the loopmanager is shutting down following a signal,
`dig` and `host` should stop cleanly. Before this commit
they were oblivious to ISC_R_SHUTTINGDOWN.

The `isc_signal` callbacks now report this kind of mistake
with a stack backtrace.
2023-03-31 09:52:54 +00:00
Ondřej Surý 5d64306b72 Add CHANGES for [GL #3961] 2023-03-30 16:07:41 +02:00
Matthijs Mekking 5a879028fe Add CHANGES for #3967 2023-03-29 15:28:29 +02:00
Evan Hunt a83358c6aa CHANGES for [GL !7693] 2023-03-28 18:41:17 -07:00
Evan Hunt 155f6a2996 CHANGES and release note for [GL #3842] 2023-03-28 12:41:32 -07:00
Matthijs Mekking 357b27b04f Add CHANGES entry for #3965 2023-03-28 14:57:14 +02:00
Aram Sargsyan 95cb2affaa Add a CHANGES note for [GL #3968] 2023-03-27 11:09:13 +00:00
Evan HuntandOndřej Surý 5cefc52b2e CHANGES for [GL #3964] 2023-03-24 07:58:53 +01:00
Evan Hunt 08c86c4357 revised CHANGES and release note for [GL #3953] 2023-03-23 12:57:01 -07:00
Evan HuntandOndřej Surý 8d80ee561e CHANGES and release note for [GL #3953] 2023-03-23 19:17:22 +01:00
Aram Sargsyan aee14ee5d9 Add a CHANGES note for [GL #3955] 2023-03-21 10:39:52 +00:00
Tom Krizek 48067d78fa Merge tag 'v9_19_11'
BIND 9.19.11
2023-03-15 18:23:44 +01:00
Mark Andrews aafcb8611c Add CHANGES for [GL #3937] 2023-03-14 23:26:39 +11:00
Aram Sargsyan 7211398a77 Add a CHANGES placeholder for [GL #3928] 2023-03-14 09:52:13 +00:00
Tony FinchandOndřej Surý 37c4f7f349 CHANGES and release notes for [GL #3935]
[func]		BIND now requires liburcu for lock-free data structures
		and concurrent safe memory reclamation. It replaces the
		home-grown lock-free linked list and QSBR machinery
		added in changes 6108 and 6109. The qp-trie code has
		been adjusted to use liburcu.
2023-03-10 17:31:28 +01:00
Ondřej Surý cf21e05313 Add CHANGES and release note for [GL #3905] 2023-03-08 08:36:25 +01:00
Tom Krizek f14d8ad78c Add a CHANGES marker 2023-03-03 15:10:10 +01:00
Aram Sargsyan cb0d6393a7 Add a CHANGES note for [GL #3907] 2023-03-02 17:40:10 +00:00
Aram Sargsyan e1627e1289 Update the CHANGES note for [GL #3777]
Remove the part which is no longer true after reverting the commit
in question.

The CHANGES entry was never part of a released BIND 9 version.
2023-03-02 09:43:37 +00:00
Aram Sargsyan e1036253db Add CHANGES and release notes for [GL #3911] 2023-03-01 14:10:31 +00:00
Matthijs Mekking e5841856f8 Add release note and change for cds-digest-type 2023-02-28 09:37:37 +01:00
Tony Finch 4b5ec07bb7 Refactor qp-trie to use QSBR
The first working multi-threaded qp-trie was stuck with an unpleasant
trade-off:

  * Use `isc_rwlock`, which has acceptable write performance, but
    terrible read scalability because the qp-trie made all accesses
    through a single lock.

  * Use `liburcu`, which has great read scalability, but terrible
    write performance, because I was relying on `rcu_synchronize()`
    which is rather slow. And `liburcu` is LGPL.

To get the best of both worlds, we need our own scalable read side,
which we now have with `isc_qsbr`. And we need to modify the write
side so that it is not blocked by readers.

Better write performance requires an async cleanup function like
`call_rcu()`, instead of the blocking `rcu_synchronize()`. (There
is no blocking cleanup in `isc_qsbr`, because I have concluded
that it would be an attractive nuisance.)

Until now, all my multithreading qp-trie designs have been based
around two versions, read-only and mutable. This is too few to
work with asynchronous cleanup. The bare minimum (as in epoch
based reclamation) is three, but it makes more sense to support an
arbitrary number. Doing multi-version support "properly" makes
fewer assumptions about how safe memory reclamation works, and it
makes snapshots and rollbacks simpler.

To avoid making the memory management even more complicated, I
have introduced a new kind of "packed reader node" to anchor the
root of a version of the trie. This is simpler because it re-uses
the existing chunk lifetime logic - see the discussion under
"packed reader nodes" in `qp_p.h`.

I have also made the chunk lifetime logic simpler. The idea of a
"generation" is gone; instead, chunks are either mutable or
immutable. And the QSBR phase number is used to indicate when a
chunk can be reclaimed.

Instead of the `shared_base` flag (which was basically a one-bit
reference count, with a two version limit) the base array now has a
refcount, which replaces the confusing ad-hoc lifetime logic with
something more familiar and systematic.
2023-02-27 13:47:55 +00:00
Aram Sargsyan 4c22aae748 Add a CHANGES placeholder for [GL #3900] 2023-02-27 13:10:22 +00:00
Aram Sargsyan 46b1c558ce Add a CHANGES note for [GL #3777] 2023-02-27 10:06:32 +00:00
Aram SargsyanandOndřej Surý cb1cd67bea Add CHANGES and release notes for [GL #3881] 2023-02-24 17:06:18 +01:00
Aram SargsyanandOndřej Surý c76cc58803 Add a CHANGES note for [GL !7571] 2023-02-24 15:07:14 +01:00