Radish alpha
r
rad:zwTxygwuz5LDGBq255RA2CbNGrz8
Radicle CI broker
Radicle
Git
feat: always log thread start and result for page updating thread
Lars Wirzenius committed 1 year ago
commit 11bb07ddf7005ed369ac0798529ea15b2689704c
parent fb03457
2 files changed +32 -20
modified src/logger.rs
@@ -17,6 +17,7 @@ use crate::{
    filter::EventFilter,
    msg::Request,
    node_event_source::NodeEventSource,
+
    pages::PageError,
    queueadd::AdderError,
    queueproc::QueueError,
    run::Run,
@@ -570,10 +571,11 @@ pub fn pages_start() {
    );
}

-
pub fn pages_end() {
+
pub fn pages_end(result: &Result<(), PageError>) {
    debug!(
        msg_id = ?Id::PagesEnd,
        kind = %Kind::Debug,
+
        ?result,
        "end page updater thread"
    );
}
modified src/pages.rs
@@ -762,8 +762,6 @@ impl StatusPage {
        db: Db,
        once: bool,
    ) -> JoinHandle<Result<(), PageError>> {
-
        logger::pages_start();
-

        if self.dirname.is_none() {
            logger::pages_directory_unset();
        }
@@ -772,28 +770,40 @@ impl StatusPage {
        logger::pages_interval(UPDATE_INTERVAL);

        spawn(move || {
-
            'processing_loop: loop {
-
                self.update_and_write(&profile, &db)?;
-
                if once {
-
                    return Ok(());
-
                }
+
            logger::pages_start();
+
            let result = self.update_loop(run_rx, profile, db, once);
+
            logger::pages_end(&result);
+
            result
+
        })
+
    }

-
                match run_rx.wait_for_notification() {
-
                    Ok(_) => (),
-
                    Err(RecvTimeoutError::Timeout) => (),
-
                    Err(RecvTimeoutError::Disconnected) => {
-
                        logger::pages_disconnected();
-
                        break 'processing_loop;
-
                    }
+
    fn update_loop(
+
        mut self,
+
        run_rx: NotificationReceiver,
+
        profile: Profile,
+
        db: Db,
+
        once: bool,
+
    ) -> Result<(), PageError> {
+
        'processing_loop: loop {
+
            self.update_and_write(&profile, &db)?;
+
            if once {
+
                return Ok(());
+
            }
+

+
            match run_rx.wait_for_notification() {
+
                Ok(_) => (),
+
                Err(RecvTimeoutError::Timeout) => (),
+
                Err(RecvTimeoutError::Disconnected) => {
+
                    logger::pages_disconnected();
+
                    break 'processing_loop;
                }
            }
+
        }

-
            // Make sure we update reports and status JSON at least once.
-
            self.update_and_write(&profile, &db)?;
+
        // Make sure we update reports and status JSON at least once.
+
        self.update_and_write(&profile, &db)?;

-
            logger::pages_end();
-
            Ok(())
-
        })
+
        Ok(())
    }

    fn update_and_write(&mut self, profile: &Profile, db: &Db) -> Result<(), PageError> {