Radish alpha
r
rad:zwTxygwuz5LDGBq255RA2CbNGrz8
Radicle CI broker
Radicle
Git
feat! drop Db::queued_events
Merged liw opened 1 year ago

For several releases already, cib has refused to start if the database has any “broker events”. Broker events were a predecessor for CI events, and they haven’t been supported by the CI broker since 0.7.0, from October 2024.

Drop the Db method to query the database for queued broker events. Also drop the creation of a table for that queue.

Signed-off-by: Lars Wirzenius liw@liw.fi

2 files changed +1 -41 da7971ad 3da72805
modified src/bin/cib.rs
@@ -84,12 +84,7 @@ impl Args {

    fn open_db(&self, config: &Config) -> Result<Db, CibError> {
        let db = Db::new(config.db()).map_err(CibError::db)?;
-
        let events = db.queued_events().map_err(CibError::Db)?;
-
        if events.is_empty() {
-
            Ok(db)
-
        } else {
-
            Err(CibError::UnprocessedBrokerEvents)
-
        }
+
        Ok(db)
    }

    fn minimum_log_level(&self) -> LogLevel {
@@ -312,9 +307,6 @@ enum CibError {
    #[error("failed to use SQLite database")]
    Db(#[source] DbError),

-
    #[error("database has unprocessed broker events")]
-
    UnprocessedBrokerEvents,
-

    #[error("failed create broker data type")]
    NewBroker(#[source] BrokerError),

modified src/db.rs
@@ -57,7 +57,6 @@ impl Db {
    fn create_tables(&self) -> Result<(), DbError> {
        const TABLES: &[&str] = &[
            "CREATE TABLE IF NOT EXISTS counter_test (counter INT)",
-
            "CREATE TABLE IF NOT EXISTS event_queue (id TEXT PRIMARY KEY, timestamp TEXT, event TEXT)",
            "CREATE TABLE IF NOT EXISTS ci_event_queue (id TEXT PRIMARY KEY, timestamp TEXT, event TEXT)",
            "CREATE TABLE IF NOT EXISTS ci_runs (broker_run_id TEXT PRIMARY KEY, json TEXT)",
        ];
@@ -170,37 +169,6 @@ impl Db {
        Ok(counter)
    }

-
    /// Return list of identifiers for broker events currently in the queue.
-
    ///
-
    /// Note that there is no longer any way to retrieve the broker
-
    /// events. This method is meant only for making sure there are no
-
    /// unprocessed broker events in the queue.
-
    pub fn queued_events(&self) -> Result<Vec<QueueId>, DbError> {
-
        let mut select = self.prepare("SELECT id FROM event_queue")?;
-

-
        let mut ids = vec![];
-

-
        loop {
-
            match select.stmt.next() {
-
                Ok(State::Row) => {
-
                    let id: String = select
-
                        .stmt
-
                        .read("id")
-
                        .map_err(|e| DbError::list_events(&select.sql, e))?;
-
                    ids.push(QueueId::from(&id));
-
                }
-
                Ok(State::Done) => {
-
                    break;
-
                }
-
                Err(e) => {
-
                    return Err(DbError::list_events(&select.sql, e));
-
                }
-
            }
-
        }
-

-
        Ok(ids)
-
    }
-

    /// Return list of identifiers for CI events currently in the queue.
    pub fn queued_ci_events(&self) -> Result<Vec<QueueId>, DbError> {
        let mut select = self.prepare("SELECT id FROM ci_event_queue")?;