From 4186eea1a13c460fb5fd0959240ccf21d2b41755 Mon Sep 17 00:00:00 2001 From: Denis Cornehl Date: Fri, 28 Feb 2025 05:38:24 +0100 Subject: [PATCH] don't limit the rustc version we rebuild up to After the first rebuild is finished I think we can do "continious rebuilds" now. --- ...d840aed032502efbc26ce53ea89512a5d8163.json | 41 ---------------- ...911074a74b38084b93dbe62c23d9348b8e609.json | 34 ++++++++++++++ src/build_queue.rs | 47 +------------------ src/config.rs | 3 -- src/utils/daemon.rs | 2 +- 5 files changed, 37 insertions(+), 90 deletions(-) delete mode 100644 .sqlx/query-91511cc8904f313fa308b164d79d840aed032502efbc26ce53ea89512a5d8163.json create mode 100644 .sqlx/query-aee84ef8b568045ef4928498578911074a74b38084b93dbe62c23d9348b8e609.json diff --git a/.sqlx/query-91511cc8904f313fa308b164d79d840aed032502efbc26ce53ea89512a5d8163.json b/.sqlx/query-91511cc8904f313fa308b164d79d840aed032502efbc26ce53ea89512a5d8163.json deleted file mode 100644 index b5adbb8c0..000000000 --- a/.sqlx/query-91511cc8904f313fa308b164d79d840aed032502efbc26ce53ea89512a5d8163.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "SELECT i.* FROM (\n SELECT\n c.name,\n r.version,\n (\n SELECT MAX(b.rustc_nightly_date)\n FROM builds AS b\n WHERE b.rid = r.id AND b.rustc_nightly_date IS NOT NULL\n ) AS rustc_nightly_date,\n (\n SELECT MAX(COALESCE(b.build_finished, b.build_started))\n FROM builds AS b\n WHERE b.rid = r.id\n ) AS last_build_attempt\n FROM crates AS c\n INNER JOIN releases AS r ON c.latest_version_id = r.id\n\n WHERE\n r.rustdoc_status = TRUE\n ) as i\n WHERE i.rustc_nightly_date < $1\n ORDER BY i.last_build_attempt ASC\n LIMIT $2", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "name", - "type_info": "Text" - }, - { - "ordinal": 1, - "name": "version", - "type_info": "Text" - }, - { - "ordinal": 2, - "name": "rustc_nightly_date", - "type_info": "Date" - }, - { - "ordinal": 3, - "name": "last_build_attempt", - "type_info": "Timestamptz" - } - ], - "parameters": { - "Left": [ - "Date", - "Int8" - ] - }, - "nullable": [ - false, - false, - null, - null - ] - }, - "hash": "91511cc8904f313fa308b164d79d840aed032502efbc26ce53ea89512a5d8163" -} diff --git a/.sqlx/query-aee84ef8b568045ef4928498578911074a74b38084b93dbe62c23d9348b8e609.json b/.sqlx/query-aee84ef8b568045ef4928498578911074a74b38084b93dbe62c23d9348b8e609.json new file mode 100644 index 000000000..6f3b89e08 --- /dev/null +++ b/.sqlx/query-aee84ef8b568045ef4928498578911074a74b38084b93dbe62c23d9348b8e609.json @@ -0,0 +1,34 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT i.* FROM (\n SELECT\n c.name,\n r.version,\n (\n SELECT MAX(COALESCE(b.build_finished, b.build_started))\n FROM builds AS b\n WHERE b.rid = r.id\n ) AS last_build_attempt\n FROM crates AS c\n INNER JOIN releases AS r ON c.latest_version_id = r.id\n\n WHERE\n r.rustdoc_status = TRUE\n ) as i\n ORDER BY i.last_build_attempt ASC\n LIMIT $1", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "name", + "type_info": "Text" + }, + { + "ordinal": 1, + "name": "version", + "type_info": "Text" + }, + { + "ordinal": 2, + "name": "last_build_attempt", + "type_info": "Timestamptz" + } + ], + "parameters": { + "Left": [ + "Int8" + ] + }, + "nullable": [ + false, + false, + null + ] + }, + "hash": "aee84ef8b568045ef4928498578911074a74b38084b93dbe62c23d9348b8e609" +} diff --git a/src/build_queue.rs b/src/build_queue.rs index 9844183e4..b81ccd57e 100644 --- a/src/build_queue.rs +++ b/src/build_queue.rs @@ -693,11 +693,6 @@ pub async fn queue_rebuilds( SELECT c.name, r.version, - ( - SELECT MAX(b.rustc_nightly_date) - FROM builds AS b - WHERE b.rid = r.id AND b.rustc_nightly_date IS NOT NULL - ) AS rustc_nightly_date, ( SELECT MAX(COALESCE(b.build_finished, b.build_started)) FROM builds AS b @@ -709,12 +704,8 @@ pub async fn queue_rebuilds( WHERE r.rustdoc_status = TRUE ) as i - WHERE i.rustc_nightly_date < $1 ORDER BY i.last_build_attempt ASC - LIMIT $2", - config - .rebuild_up_to_date - .expect("config.rebuild_up_to_date not set"), + LIMIT $1", rebuilds_to_queue, ) .fetch(&mut *conn); @@ -741,46 +732,14 @@ mod tests { use crate::test::FakeBuild; use super::*; - use chrono::{NaiveDate, Utc}; + use chrono::Utc; use std::time::Duration; - #[test] - fn test_dont_rebuild_when_new() { - crate::test::async_wrapper(|env| async move { - env.override_config(|config| { - config.max_queued_rebuilds = Some(100); - config.rebuild_up_to_date = Some(NaiveDate::from_ymd_opt(2020, 1, 1).unwrap()); - }); - - env.fake_release() - .await - .name("foo") - .version("0.1.0") - .builds(vec![ - FakeBuild::default() - .rustc_version("rustc 1.84.0-nightly (e7c0d2750 2020-10-15)"), - ]) - .create() - .await?; - - let build_queue = env.async_build_queue().await; - assert!(build_queue.queued_crates().await?.is_empty()); - - let mut conn = env.async_db().await.async_conn().await; - queue_rebuilds(&mut conn, &env.config(), &build_queue).await?; - - assert!(build_queue.queued_crates().await?.is_empty()); - - Ok(()) - }) - } - #[test] fn test_rebuild_when_old() { crate::test::async_wrapper(|env| async move { env.override_config(|config| { config.max_queued_rebuilds = Some(100); - config.rebuild_up_to_date = Some(NaiveDate::from_ymd_opt(2024, 1, 1).unwrap()); }); env.fake_release() @@ -815,7 +774,6 @@ mod tests { crate::test::async_wrapper(|env| async move { env.override_config(|config| { config.max_queued_rebuilds = Some(1); - config.rebuild_up_to_date = Some(NaiveDate::from_ymd_opt(2024, 1, 1).unwrap()); }); let build_queue = env.async_build_queue().await; @@ -858,7 +816,6 @@ mod tests { crate::test::async_wrapper(|env| async move { env.override_config(|config| { config.max_queued_rebuilds = Some(1); - config.rebuild_up_to_date = Some(NaiveDate::from_ymd_opt(2024, 1, 1).unwrap()); }); let build_queue = env.async_build_queue().await; diff --git a/src/config.rs b/src/config.rs index 0692595fa..40c885521 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,6 +1,5 @@ use crate::{cdn::CdnKind, storage::StorageKind}; use anyhow::{Context, Result, anyhow, bail}; -use chrono::NaiveDate; use std::{env::VarError, error::Error, path::PathBuf, str::FromStr, time::Duration}; use tracing::trace; use url::Url; @@ -120,7 +119,6 @@ pub struct Config { // automatic rebuild configuration pub(crate) max_queued_rebuilds: Option, - pub(crate) rebuild_up_to_date: Option, } impl Config { @@ -243,7 +241,6 @@ impl Config { 86400, )?), max_queued_rebuilds: maybe_env("DOCSRS_MAX_QUEUED_REBUILDS")?, - rebuild_up_to_date: maybe_env("DOCSRS_REBUILD_UP_TO_DATE")?, }) } } diff --git a/src/utils/daemon.rs b/src/utils/daemon.rs index 8b0bca064..26ecb50bc 100644 --- a/src/utils/daemon.rs +++ b/src/utils/daemon.rs @@ -96,7 +96,7 @@ pub fn start_background_queue_rebuild(context: &C) -> Result<(), Err let config = context.config()?; let build_queue = runtime.block_on(context.async_build_queue())?; - if config.max_queued_rebuilds.is_none() || config.rebuild_up_to_date.is_none() { + if config.max_queued_rebuilds.is_none() { info!("rebuild config incomplete, skipping rebuild queueing"); return Ok(()); }