From: Aleš Mrázek Date: Tue, 15 Apr 2025 09:32:29 +0000 (+0200) Subject: datamodel: renamed defer section to prioritization X-Git-Tag: v6.0.17~9^2~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=380fcb8f52eeaa45ae773fae2f9b09116be4dfb9;p=thirdparty%2Fknot-resolver.git datamodel: renamed defer section to prioritization - renamed /defer/log-period -> /defer/logging-period --- diff --git a/NEWS b/NEWS index 0668c765a..d1bb25c62 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,8 @@ Incompatible changes - /network/tls/auto-discovery - /webmgmt - Renamed/moved options in the declarative configuration model (YAML). + - /defer/* -> /prioritization/* + - /defer/log-period -> /prioritization/logging-period - /dns64: true|false -> /dns64/enabled: true|false - /dns64/rev-ttl -> /dns64/reverse-ttl - /dnssec: true|false -> /dnssec/enabled: true|false diff --git a/doc/_static/config.schema.json b/doc/_static/config.schema.json index 9f324e98f..bad48d6c0 100644 --- a/doc/_static/config.schema.json +++ b/doc/_static/config.schema.json @@ -1730,16 +1730,16 @@ }, "default": null }, - "defer": { + "prioritization": { "description": "Configuration of request prioritization (defer).", "type": "object", "properties": { "enabled": { "type": "boolean", - "description": "Use request prioritization.", + "description": "Enable/disable request prioritization.", "default": false }, - "log-period": { + "logging-period": { "type": "string", "pattern": "^(\\d+)(us|ms|s|m|h|d)$", "description": "Minimal time between two log messages, or '0s' to disable.", @@ -1748,7 +1748,7 @@ }, "default": { "enabled": false, - "log_period": "0s" + "logging_period": "0s" } }, "lua": { diff --git a/python/knot_resolver/datamodel/config_schema.py b/python/knot_resolver/datamodel/config_schema.py index c14143b18..8eebf8b17 100644 --- a/python/knot_resolver/datamodel/config_schema.py +++ b/python/knot_resolver/datamodel/config_schema.py @@ -5,7 +5,6 @@ from typing import Any, Dict, List, Literal, Optional, Tuple, Union from knot_resolver.constants import API_SOCK_FILE, RUN_DIR, VERSION from knot_resolver.datamodel.cache_schema import CacheSchema -from knot_resolver.datamodel.defer_schema import DeferSchema from knot_resolver.datamodel.dns64_schema import Dns64Schema from knot_resolver.datamodel.dnssec_schema import DnssecSchema from knot_resolver.datamodel.forward_schema import FallbackSchema, ForwardSchema @@ -17,6 +16,7 @@ from knot_resolver.datamodel.management_schema import ManagementSchema from knot_resolver.datamodel.monitoring_schema import MonitoringSchema from knot_resolver.datamodel.network_schema import NetworkSchema from knot_resolver.datamodel.options_schema import OptionsSchema +from knot_resolver.datamodel.prioritization_schema import PrioritizationSchema from knot_resolver.datamodel.rate_limiting_schema import RateLimitingSchema from knot_resolver.datamodel.templates import KRESD_CONFIG_TEMPLATE, POLICY_LOADER_CONFIG_TEMPLATE from knot_resolver.datamodel.types import EscapedStr, IntPositive, WritableDir @@ -107,7 +107,7 @@ class KresConfig(ConfigSchema): monitoring: Metrics exposisition configuration (Prometheus, Graphite) lua: Custom Lua configuration. rate_limiting: Configuration of rate limiting. - defer: Configuration of request prioritization (defer). + prioritization: Configuration of request prioritization (defer). """ version: int = 1 @@ -128,7 +128,7 @@ class KresConfig(ConfigSchema): logging: LoggingSchema = LoggingSchema() monitoring: MonitoringSchema = MonitoringSchema() rate_limiting: Optional[RateLimitingSchema] = None - defer: DeferSchema = DeferSchema() + prioritization: PrioritizationSchema = PrioritizationSchema() lua: LuaSchema = LuaSchema() _LAYER = Raw @@ -150,7 +150,7 @@ class KresConfig(ConfigSchema): logging: LoggingSchema monitoring: MonitoringSchema rate_limiting: Optional[RateLimitingSchema] - defer: DeferSchema + prioritization: PrioritizationSchema lua: LuaSchema def _hostname(self, obj: Raw) -> Any: diff --git a/python/knot_resolver/datamodel/defer_schema.py b/python/knot_resolver/datamodel/defer_schema.py deleted file mode 100644 index 81546a075..000000000 --- a/python/knot_resolver/datamodel/defer_schema.py +++ /dev/null @@ -1,15 +0,0 @@ -from knot_resolver.datamodel.types import TimeUnit -from knot_resolver.utils.modeling import ConfigSchema - - -class DeferSchema(ConfigSchema): - """ - Configuration of request prioritization (defer). - - --- - enabled: Use request prioritization. - log_period: Minimal time between two log messages, or '0s' to disable. - """ - - enabled: bool = False - log_period: TimeUnit = TimeUnit("0s") diff --git a/python/knot_resolver/datamodel/prioritization_schema.py b/python/knot_resolver/datamodel/prioritization_schema.py new file mode 100644 index 000000000..74025b8d9 --- /dev/null +++ b/python/knot_resolver/datamodel/prioritization_schema.py @@ -0,0 +1,15 @@ +from knot_resolver.datamodel.types import TimeUnit +from knot_resolver.utils.modeling import ConfigSchema + + +class PrioritizationSchema(ConfigSchema): + """ + Configuration of request prioritization (defer). + + --- + enabled: Enable/disable request prioritization. + logging_period: Minimal time between two log messages, or '0s' to disable. + """ + + enabled: bool = False + logging_period: TimeUnit = TimeUnit("0s") diff --git a/python/knot_resolver/datamodel/templates/defer.lua.j2 b/python/knot_resolver/datamodel/templates/defer.lua.j2 deleted file mode 100644 index 5dacff75f..000000000 --- a/python/knot_resolver/datamodel/templates/defer.lua.j2 +++ /dev/null @@ -1,10 +0,0 @@ -{% from 'macros/common_macros.lua.j2' import boolean %} - -{% if cfg.defer.enabled and disable_defer is not defined -%} -assert(C.defer_init( - '{{ cfg.rundir }}/defer', - {{ cfg.defer.log_period.millis() }}, - {{ cfg.workers }}) == 0) -{% else %} -assert(C.defer_init(nil, 0, 0) == 0) -{%- endif %} diff --git a/python/knot_resolver/datamodel/templates/kresd.lua.j2 b/python/knot_resolver/datamodel/templates/kresd.lua.j2 index 14b862913..a31248023 100644 --- a/python/knot_resolver/datamodel/templates/kresd.lua.j2 +++ b/python/knot_resolver/datamodel/templates/kresd.lua.j2 @@ -43,8 +43,8 @@ nsid.name('{{ cfg.nsid }}' .. worker.id) -- RATE-LIMITING section ------------------------------------ {% include "rate_limiting.lua.j2" %} --- DEFER section ------------------------------------ -{% include "defer.lua.j2" %} +-- PRIORITIZATION section ------------------------------------ +{% include "prioritization.lua.j2" %} {% endif %} diff --git a/python/knot_resolver/datamodel/templates/policy-loader.lua.j2 b/python/knot_resolver/datamodel/templates/policy-loader.lua.j2 index 0b9997033..5f8349e69 100644 --- a/python/knot_resolver/datamodel/templates/policy-loader.lua.j2 +++ b/python/knot_resolver/datamodel/templates/policy-loader.lua.j2 @@ -35,10 +35,10 @@ cache.open({{ cfg.cache.size_max.bytes() }}, 'lmdb://{{ cfg.cache.storage }}') -- FORWARD section ---------------------------------- {% include "forward.lua.j2" %} --- DEFER section ------------------------------------ +-- PRIORITIZATION section ------------------------------------ -- Force-disable defer to avoid the default defer config. -{% set disable_defer = true %} -{% include "defer.lua.j2" %} +{% set disable_prioritization = true %} +{% include "prioritization.lua.j2" %} {% endif %} diff --git a/python/knot_resolver/datamodel/templates/prioritization.lua.j2 b/python/knot_resolver/datamodel/templates/prioritization.lua.j2 new file mode 100644 index 000000000..7c241e14f --- /dev/null +++ b/python/knot_resolver/datamodel/templates/prioritization.lua.j2 @@ -0,0 +1,13 @@ +{% if cfg.prioritization.enabled and disable_prioritization is not defined %} +-- Enable and configure request prioritization (defer) +assert( + C.defer_init( + '{{ cfg.rundir }}/defer', + {{ cfg.prioritization.logging_period.millis() }}, + {{ cfg.workers }} + ) == 0 +) +{% else %} +-- Disable request prioritization (defer) +assert(C.defer_init(nil, 0, 0) == 0) +{% endif %} diff --git a/python/knot_resolver/manager/manager.py b/python/knot_resolver/manager/manager.py index 4b5d04210..065742dac 100644 --- a/python/knot_resolver/manager/manager.py +++ b/python/knot_resolver/manager/manager.py @@ -128,9 +128,9 @@ class KresManager: # pylint: disable=too-many-instance-attributes config.dns64, config.logging, config.monitoring, - config.lua, config.rate_limiting, - config.defer, + config.prioritization, + config.lua, ] # register and immediately call a verifier that validates config with 'canary' kresd process @@ -225,7 +225,7 @@ class KresManager: # pylint: disable=too-many-instance-attributes os.unlink(str(_old.rundir) + "/ratelimiting") except FileNotFoundError: pass - if _old.workers != new.workers or _old.defer != new.defer: + if _old.workers != new.workers or _old.prioritization != new.prioritization: logger.debug("Unlinking shared defer memory") try: os.unlink(str(_old.rundir) + "/defer")