From 8b059b211f7ef89c20649698304a1e67585d2b8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Thu, 23 Feb 2023 11:10:39 +0100 Subject: [PATCH] Pause the catz dbiterator while processing the zone The dbiterator read-locks the whole zone and it stayed locked during whole processing time when catz is being read. Pause the iterator, so the updates to catz zone are not being blocked while processing the catz update. (cherry picked from commit 4e7187601f88a15c61282db862f5025703a7a78a) --- lib/dns/catz.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/dns/catz.c b/lib/dns/catz.c index 51cd251292..4867a56dfc 100644 --- a/lib/dns/catz.c +++ b/lib/dns/catz.c @@ -2306,6 +2306,9 @@ dns__catz_update_cb(void *data) { break; } + result = dns_dbiterator_pause(it); + RUNTIME_CHECK(result == ISC_R_SUCCESS); + if (!is_vers_processed) { /* Keep the version node to skip it later in the loop */ vers_node = node;