Handle config reload thread-safe

This commit is contained in:
2026-07-22 14:56:47 +02:00
parent d13aea8e7d
commit 25043be991
+14 -6
View File
@@ -27,7 +27,8 @@ class Application:
config: Configuration dictionary from TOML file.
config_path: Path to configuration file (for reload).
"""
self.config = config
self._config = config
self._config_lock = threading.RLock()
self.config_path = config_path
self.password_hasher = argon2.PasswordHasher()
self.shutdown_event = threading.Event()
@@ -38,6 +39,12 @@ class Application:
self.good_limiter = None
self.bad_limiter = None
@property
def config(self):
"""Thread-safe config access."""
with self._config_lock:
return self._config
def init_database(self):
"""Initialize database connection and run migrations."""
init_database(self.config)
@@ -68,12 +75,13 @@ class Application:
"""
new_config = load_config(self.config_path)
# Preserve DB and bind settings
new_config["database"] = self.config["database"]
new_config["daemon"]["host"] = self.config["daemon"]["host"]
new_config["daemon"]["port"] = self.config["daemon"]["port"]
with self._config_lock:
# Preserve DB and bind settings
new_config["database"] = self._config["database"]
new_config["daemon"]["host"] = self._config["daemon"]["host"]
new_config["daemon"]["port"] = self._config["daemon"]["port"]
self.config = new_config
self._config = new_config
# Reconfigure logging
setup_logging(