fix(advert): set default values to False for adaptive, rate limit, and penalty configurations

This commit is contained in:
Rightup
2026-07-14 23:07:12 +01:00
parent 781901a750
commit f10b512c91
2 changed files with 42 additions and 7 deletions
+7 -7
View File
@@ -6,9 +6,9 @@ Includes adaptive rate limiting based on mesh activity.
"""
import asyncio
import itertools
import logging
import time
import itertools
from collections import OrderedDict, deque
from enum import Enum
from typing import Dict, Optional, Tuple
@@ -62,7 +62,7 @@ class AdvertHelper:
# --- Adaptive mode config ---
adaptive_cfg = repeater_cfg.get("advert_adaptive", {})
self._adaptive_enabled = bool(adaptive_cfg.get("enabled", True))
self._adaptive_enabled = bool(adaptive_cfg.get("enabled", False))
self._ewma_alpha = max(0.01, min(1.0, float(adaptive_cfg.get("ewma_alpha", 0.1))))
self._tier_hysteresis_seconds = max(
0.0, float(adaptive_cfg.get("hysteresis_seconds", 300.0))
@@ -76,7 +76,7 @@ class AdvertHelper:
# --- Base rate limit config (scaled by tier) ---
rate_cfg = repeater_cfg.get("advert_rate_limit", {})
self._rate_limit_enabled = bool(rate_cfg.get("enabled", True))
self._rate_limit_enabled = bool(rate_cfg.get("enabled", False))
self._base_bucket_capacity = max(1.0, float(rate_cfg.get("bucket_capacity", 2)))
self._base_refill_tokens = max(0.1, float(rate_cfg.get("refill_tokens", 1.0)))
self._base_refill_interval = max(
@@ -86,7 +86,7 @@ class AdvertHelper:
# --- Penalty box config ---
penalty_cfg = repeater_cfg.get("advert_penalty_box", {})
self._penalty_enabled = bool(penalty_cfg.get("enabled", True))
self._penalty_enabled = bool(penalty_cfg.get("enabled", False))
self._penalty_violation_threshold = max(1, int(penalty_cfg.get("violation_threshold", 2)))
self._penalty_decay_seconds = max(
1.0, float(penalty_cfg.get("violation_decay_seconds", 43200.0))
@@ -665,7 +665,7 @@ class AdvertHelper:
# Adaptive mode config
adaptive_cfg = repeater_cfg.get("advert_adaptive", {})
self._adaptive_enabled = bool(adaptive_cfg.get("enabled", True))
self._adaptive_enabled = bool(adaptive_cfg.get("enabled", False))
self._ewma_alpha = max(0.01, min(1.0, float(adaptive_cfg.get("ewma_alpha", 0.1))))
self._tier_hysteresis_seconds = max(
0.0, float(adaptive_cfg.get("hysteresis_seconds", 300.0))
@@ -678,7 +678,7 @@ class AdvertHelper:
# Base rate limit config
rate_cfg = repeater_cfg.get("advert_rate_limit", {})
self._rate_limit_enabled = bool(rate_cfg.get("enabled", True))
self._rate_limit_enabled = bool(rate_cfg.get("enabled", False))
self._base_bucket_capacity = max(1.0, float(rate_cfg.get("bucket_capacity", 2)))
self._base_refill_tokens = max(0.1, float(rate_cfg.get("refill_tokens", 1.0)))
self._base_refill_interval = max(
@@ -688,7 +688,7 @@ class AdvertHelper:
# Penalty box config
penalty_cfg = repeater_cfg.get("advert_penalty_box", {})
self._penalty_enabled = bool(penalty_cfg.get("enabled", True))
self._penalty_enabled = bool(penalty_cfg.get("enabled", False))
self._penalty_violation_threshold = max(
1, int(penalty_cfg.get("violation_threshold", 2))
)
+35
View File
@@ -343,3 +343,38 @@ def test_advert_reload_config_and_cleanup_old_state_bounds_memory():
assert "old" not in helper._recent_advert_hashes
assert "pk" not in helper._penalty_until
assert "oldpk" not in helper._bucket_state
def test_advert_limiter_missing_sections_defaults_disabled():
helper = AdvertHelper(local_identity=None, storage=None, config={"repeater": {}})
assert helper._adaptive_enabled is False
assert helper._rate_limit_enabled is False
assert helper._penalty_enabled is False
def test_advert_limiter_partial_sections_without_enabled_remain_disabled_after_reload():
helper = AdvertHelper(local_identity=None, storage=None, config={"repeater": {}})
helper.config = {
"repeater": {
"advert_adaptive": {
# enabled intentionally omitted
"thresholds": {"normal": 2, "busy": 7, "congested": 12}
},
"advert_rate_limit": {
# enabled intentionally omitted
"bucket_capacity": 3,
"refill_tokens": 2,
},
"advert_penalty_box": {
# enabled intentionally omitted
"violation_threshold": 2,
},
}
}
helper.reload_config()
assert helper._adaptive_enabled is False
assert helper._rate_limit_enabled is False
assert helper._penalty_enabled is False