diff --git a/src/overlord/minion/mod.rs b/src/overlord/minion/mod.rs index 1459728e..0027bf11 100644 --- a/src/overlord/minion/mod.rs +++ b/src/overlord/minion/mod.rs @@ -218,14 +218,13 @@ impl Minion { }, Err(e) => return Err(e.into()) }; + #[allow(clippy::collapsible_if)] if bus_message.target == self.url.0 { self.handle_bus_message(bus_message).await?; } else if &*bus_message.target == "all" { if &*bus_message.kind == "shutdown" { info!("{}: Websocket listener shutting down", &self.url); keepgoing = false; - } else if &*bus_message.kind == "settings_changed" { - // TBD: possibly redo filters based on overlap, feed_chunk, etc. } } }, @@ -269,14 +268,17 @@ impl Minion { let mut special_since: i64 = DbPersonRelay::fetch_oldest_last_fetched(&pubkeys, &self.url.0).await? as i64; - let settings = GLOBALS.settings.lock().await.clone(); + let (overlap, feed_chunk) = { + let settings = GLOBALS.settings.lock().await.clone(); + (settings.overlap, settings.feed_chunk) + }; // Subtract overlap to avoid gaps due to clock sync and event // propogation delay - special_since -= settings.overlap as i64; + special_since -= overlap as i64; // For feed related events, don't look back more than one feed_chunk ago - let one_feedchunk_ago = Unixtime::now().unwrap().0 - settings.feed_chunk as i64; + let one_feedchunk_ago = Unixtime::now().unwrap().0 - feed_chunk as i64; let feed_since = special_since.max(one_feedchunk_ago); (Unixtime(feed_since), Unixtime(special_since)) diff --git a/src/overlord/mod.rs b/src/overlord/mod.rs index f4dbd086..aa41174a 100644 --- a/src/overlord/mod.rs +++ b/src/overlord/mod.rs @@ -16,7 +16,6 @@ use tokio::{select, task}; use tracing::{debug, error, info, warn}; pub struct Overlord { - settings: Settings, to_minions: Sender, from_minions: UnboundedReceiver, @@ -37,7 +36,6 @@ impl Overlord { pub fn new(from_minions: UnboundedReceiver) -> Overlord { let to_minions = GLOBALS.to_minions.clone(); Overlord { - settings: Settings::default(), to_minions, from_minions, minions: task::JoinSet::new(), @@ -98,7 +96,9 @@ impl Overlord { // FIXME - if this needs doing, it should be done dynamically as // new people are encountered, not batch-style on startup. // Create a person record for every person seen, possibly autofollow - DbPerson::populate_new_people(self.settings.autofollow).await?; + + let autofollow = GLOBALS.settings.lock().await.autofollow; + DbPerson::populate_new_people(autofollow).await?; // FIXME - if this needs doing, it should be done dynamically as // new people are encountered, not batch-style on startup. @@ -147,7 +147,8 @@ impl Overlord { // Load feed-related events from database and process (TextNote, EventDeletion, Reaction) { let now = Unixtime::now().unwrap(); - let then = now.0 - self.settings.feed_chunk as i64; + let feed_chunk = GLOBALS.settings.lock().await.feed_chunk; + let then = now.0 - feed_chunk as i64; let db_events = DbEvent::fetch(Some(&format!( " (kind=1 OR kind=5 OR kind=7) AND created_at > {} ORDER BY created_at ASC", then @@ -321,15 +322,6 @@ impl Overlord { info!("Overlord shutting down"); return Ok(false); } - "settings_changed" => { - self.settings = serde_json::from_str(&bus_message.json_payload)?; - // We need to inform the minions - self.to_minions.send(BusMessage { - target: "all".to_string(), - kind: "settings_changed".to_string(), - json_payload: bus_message.json_payload.clone(), - })?; - } _ => {} }, "overlord" => match &*bus_message.kind {