drop raw settings cache from app state

This commit is contained in:
Bryan Helmkamp 2026-04-23 16:13:06 -04:00
parent a05dc101f2
commit 45a4802c65
No known key found for this signature in database
2 changed files with 9 additions and 18 deletions

View file

@ -730,6 +730,7 @@ where
// Spawn config polling task
let state_for_poll = Arc::clone(&state);
let shared_settings_for_poll = Arc::clone(&shared_settings);
let config_path_for_poll = config_path.clone();
let args_for_poll = args.clone();
let data_dir_for_poll = data_dir.clone();
@ -746,15 +747,19 @@ where
&data_dir_for_poll,
);
let changed = {
let cfg = state_for_poll
.settings
let cfg = shared_settings_for_poll
.read()
.expect("config lock poisoned");
*cfg != effective
};
if changed {
match state_for_poll.replace_settings(effective) {
Ok(()) => info!("Server config reloaded"),
match state_for_poll.replace_settings(effective.clone()) {
Ok(()) => {
*shared_settings_for_poll
.write()
.expect("config lock poisoned") = effective;
info!("Server config reloaded");
}
Err(err) => {
warn!(error = %err, "Rejected reloaded server config, keeping previous");
}

View file

@ -575,7 +575,6 @@ pub struct AppState {
pub(crate) vault: Arc<AsyncRwLock<Vault>>,
pub(super) server_secrets: ServerSecrets,
pub(crate) provider_credentials: ProviderCredentials,
pub(crate) settings: Arc<RwLock<SettingsLayer>>,
manifest_defaults: RwLock<Arc<SettingsLayer>>,
pub(crate) server_settings: RwLock<Arc<ServerSettings>>,
pub(crate) env_lookup: EnvLookup,
@ -797,7 +796,6 @@ impl AppState {
let manifest_defaults = Arc::new(run_manifest::manifest_defaults_layer(&settings));
resolve_canonical_origin(&resolved.server, &self.env_lookup).map_err(anyhow::Error::msg)?;
*self.settings.write().expect("settings lock poisoned") = settings;
*self
.manifest_defaults
.write()
@ -2646,7 +2644,6 @@ pub(crate) fn build_app_state(config: AppStateConfig) -> anyhow::Result<Arc<AppS
vault,
server_secrets,
provider_credentials,
settings,
manifest_defaults: RwLock::new(current_manifest_defaults),
server_settings: RwLock::new(current_server_settings),
env_lookup: Arc::clone(&env_lookup),
@ -7530,17 +7527,6 @@ root = "/srv/new"
Some(RunMode::DryRun)
);
assert!(manifest_defaults.server.is_none());
let layer_root = state
.settings
.read()
.expect("settings lock poisoned")
.server
.as_ref()
.and_then(|server| server.storage.as_ref())
.and_then(|storage| storage.root.as_ref())
.map(InterpString::as_source);
assert_eq!(layer_root.as_deref(), Some("/srv/new"));
}
#[test]