]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
manager: use WORKERS_SUPPORT constant
authorAleš Mrázek <ales.mrazek@nic.cz>
Wed, 26 Nov 2025 17:21:42 +0000 (18:21 +0100)
committerAleš Mrázek <ales.mrazek@nic.cz>
Fri, 28 Nov 2025 13:35:14 +0000 (14:35 +0100)
python/knot_resolver/datamodel/config_schema.py
python/knot_resolver/manager/manager.py

index c4871def4490190ad533e997b1db1389aabdb67b..add8aba83dfec256fa2dbd95fd9bc643474f1412 100644 (file)
@@ -3,7 +3,7 @@ import os
 import socket
 from typing import Any, Dict, List, Literal, Optional, Tuple, Union
 
-from knot_resolver.constants import API_SOCK_FILE, FREEBSD_SYS, LINUX_SYS, RUN_DIR, VERSION
+from knot_resolver.constants import API_SOCK_FILE, RUN_DIR, VERSION, WORKERS_SUPPORT
 from knot_resolver.datamodel.cache_schema import CacheSchema
 from knot_resolver.datamodel.defer_schema import DeferSchema
 from knot_resolver.datamodel.dns64_schema import Dns64Schema
@@ -161,17 +161,18 @@ class KresConfig(ConfigSchema):
         return obj.hostname
 
     def _workers(self, obj: Raw) -> Any:
-        no_support_msg = "On this system, you cannot run more than one worker because SO_REUSEPORT/SO_REUSEPORT_LB socket option is not supported."
-
-        workers_support = LINUX_SYS or FREEBSD_SYS
-        if not workers_support and (int(obj.workers) > 1):
-            raise ValueError(no_support_msg)
+        no_workers_support_msg = (
+            "On this system, you cannot run more than one worker because "
+            "SO_REUSEPORT (Linux) or SO_REUSEPORT_LB (FreeBSD) socket option is not supported."
+        )
+        if not WORKERS_SUPPORT and (int(obj.workers) > 1):
+            raise ValueError(no_workers_support_msg)
 
         if obj.workers == "auto":
-            if not workers_support:
+            if not WORKERS_SUPPORT:
                 logger.info(
                     "Running on system without support for multiple workers,"
-                    f"' workers' configuration automatically set to 1. {no_support_msg}"
+                    f"' workers' configuration automatically set to 1. {no_workers_support_msg}"
                 )
                 return IntPositive(1)
 
index f8c6607f2dca31edc22529c97a42a90c4432113b..da9721c38fb33035f55c7912dfe3423cf73ce592 100644 (file)
@@ -7,7 +7,6 @@ from secrets import token_hex
 from subprocess import SubprocessError
 from typing import Any, Callable, List, Optional
 
-from knot_resolver.constants import FREEBSD_SYS, LINUX_SYS
 from knot_resolver.controller.exceptions import SubprocessControllerError
 from knot_resolver.controller.interface import Subprocess, SubprocessController, SubprocessStatus, SubprocessType
 from knot_resolver.controller.registered_workers import command_registered_workers, get_registered_workers_kresids
@@ -143,13 +142,10 @@ class KresManager:  # pylint: disable=too-many-instance-attributes
         # register callback to reset policy rules for each 'kresd' worker
         await config_store.register_on_change_callback(self.reset_workers_policy_rules)
 
-        # Only necessary on systems that allow multiple kresd workers
-        # TLS session secret synchronization across all workers
-        if LINUX_SYS or FREEBSD_SYS:
-            # register and immediately call a callback to set new TLS session ticket secret for 'kresd' workers
-            await config_store.register_on_change_callback(
-                only_on_real_changes_update(config_nodes)(self.set_new_tls_sticket_secret)
-            )
+        # register and immediately call a callback to set new TLS session ticket secret for 'kresd' workers
+        await config_store.register_on_change_callback(
+            only_on_real_changes_update(config_nodes)(self.set_new_tls_sticket_secret)
+        )
 
         # register callback that reloads files (TLS cert files) if selected configuration has not been changed
         await config_store.register_on_change_callback(only_on_no_changes_update(config_nodes)(files_reload))
@@ -276,8 +272,15 @@ class KresManager:  # pylint: disable=too-many-instance-attributes
             )
 
     async def set_new_tls_sticket_secret(self, config: KresConfig, force: bool = False) -> None:
+        if int(config.workers) == 1:
+            logger.info(
+                "There is no need to synchronize the TLS session secret across all workers"
+                " because only one kresd worker is configured - skipping auto-generation"
+            )
+            return
+
         if config.network.tls.sticket_secret or config.network.tls.sticket_secret_file:
-            logger.debug("User-configured TLS resumption secret found - skipping auto-generation.")
+            logger.debug("User-configured TLS resumption secret found - skipping auto-generation")
             return
 
         logger.debug("Creating TLS session ticket secret")