diff --git a/CHANGES b/CHANGES index b32e4583ef..e7aa4be105 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +6012. [func] Cleanup the dead nodes while pruning the tree. + [GL #3641] + 6011. [func] Refactor the privilege setting part of named_os unit to make libcap on Linux mandatory and use setreuid and setregid if available. [GL #3583] diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c index f446b822e9..abe0296914 100644 --- a/lib/dns/rbtdb.c +++ b/lib/dns/rbtdb.c @@ -2254,6 +2254,12 @@ prune_tree(isc_task_t *task, isc_event_t *event) { decrement_reference(rbtdb, node, 0, &nlocktype, &tlocktype, true); + /* + * We have both write locks, we might as well do a light + * dead nodes cleaning. + */ + cleanup_dead_nodes(rbtdb, locknum); + if (parent != NULL && parent->down == NULL) { /* * node was the only down child of the parent and has