From 02ce483852341fee2d913aa612e2a50f73b7eb7e Mon Sep 17 00:00:00 2001
From: Michal Arbet <michal.arbet@ultimum.io>
Date: Mon, 26 Sep 2022 19:28:37 +0200
Subject: [PATCH] Specify number of threads for designate bind9 backend

Bind9 is running without limit for UDP listeners.
This patch is changing this behaviour and sets max 32
of UDP listeners. This is needed because of bug below [1].

[1] https://bugs.launchpad.net/ubuntu/+source/bind9/+bug/1827923

Change-Id: Ie4c2ac4d5e990ebdc30c3a94d855703d814f1fee
---
 ansible/roles/designate/defaults/main.yml                    | 1 +
 .../designate/templates/designate-backend-bind9.json.j2      | 2 +-
 ...ble-designate-backend-bind9-workers-cfd4676196410c6a.yaml | 5 +++++
 3 files changed, 7 insertions(+), 1 deletion(-)
 create mode 100644 releasenotes/notes/new-variable-designate-backend-bind9-workers-cfd4676196410c6a.yaml

diff --git a/ansible/roles/designate/defaults/main.yml b/ansible/roles/designate/defaults/main.yml
index 616b53881f..9619a1689f 100644
--- a/ansible/roles/designate/defaults/main.yml
+++ b/ansible/roles/designate/defaults/main.yml
@@ -289,6 +289,7 @@ designate_producer_workers: "{{ openstack_service_workers }}"
 designate_central_workers: "{{ openstack_service_workers }}"
 designate_sink_workers: "{{ openstack_service_workers }}"
 designate_mdns_workers: "{{ openstack_service_workers }}"
+designate_backend_bind9_workers: "{{ [ansible_facts.processor_vcpus, 32] | min }}"
 
 ####################
 # Kolla
diff --git a/ansible/roles/designate/templates/designate-backend-bind9.json.j2 b/ansible/roles/designate/templates/designate-backend-bind9.json.j2
index c1e0c0448c..49a786576c 100644
--- a/ansible/roles/designate/templates/designate-backend-bind9.json.j2
+++ b/ansible/roles/designate/templates/designate-backend-bind9.json.j2
@@ -2,7 +2,7 @@
 {% set bind_file = 'bind/named.conf' if kolla_base_distro in ['ubuntu', 'debian'] else 'named.conf' %}
 
 {
-    "command": "/usr/sbin/{{ bind_cmd }} -g",
+    "command": "/usr/sbin/{{ bind_cmd }} -U {{ designate_backend_bind9_workers }} -g",
     "config_files": [
         {
             "source": "{{ container_config_directory }}/named.conf",
diff --git a/releasenotes/notes/new-variable-designate-backend-bind9-workers-cfd4676196410c6a.yaml b/releasenotes/notes/new-variable-designate-backend-bind9-workers-cfd4676196410c6a.yaml
new file mode 100644
index 0000000000..42d7ba1a62
--- /dev/null
+++ b/releasenotes/notes/new-variable-designate-backend-bind9-workers-cfd4676196410c6a.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Adds support for configuring a number of UDP workers for Designate's
+    bind9 backend via the ``designate_backend_bind9_workers`` variable.