@@ -11,7 +11,7 @@ use database::{
1111 Target ,
1212} ;
1313use parking_lot:: RwLock ;
14- use std:: { str :: FromStr , sync:: Arc } ;
14+ use std:: sync:: Arc ;
1515use tokio:: time:: { self , Duration , MissedTickBehavior } ;
1616
1717pub fn is_job_queue_enabled ( ) -> bool {
@@ -21,6 +21,14 @@ pub fn is_job_queue_enabled() -> bool {
2121 . unwrap_or ( true )
2222}
2323
24+ /// Should master and release artifacts be automatically inserted into the job queue?
25+ pub fn is_job_queue_insertion_enabled ( ) -> bool {
26+ std:: env:: var ( "INSERT_REQUESTS_INTO_JOB_QUEUE" )
27+ . ok ( )
28+ . and_then ( |x| x. parse ( ) . ok ( ) )
29+ . unwrap_or ( false )
30+ }
31+
2432/// rust-lang/rust PR that will be used for testing the job queue.
2533const TEST_PR_FOR_JOB_QUEUE : u32 = 147039 ;
2634
@@ -33,7 +41,7 @@ pub fn should_use_job_queue(pr: u32) -> bool {
3341/// Returns `true` if at least one benchmark request was inserted.
3442async fn create_benchmark_request_master_commits (
3543 ctxt : & SiteCtxt ,
36- _conn : & dyn database:: pool:: Connection ,
44+ conn : & dyn database:: pool:: Connection ,
3745 index : & BenchmarkRequestIndex ,
3846) -> anyhow:: Result < bool > {
3947 let now = Utc :: now ( ) ;
@@ -45,29 +53,23 @@ async fn create_benchmark_request_master_commits(
4553 . iter ( )
4654 . filter ( |c| now. signed_duration_since ( c. time ) < chrono:: Duration :: days ( 29 ) ) ;
4755
48- // TODO; delete at some point in the future
49- let cutoff: chrono:: DateTime < Utc > = chrono:: DateTime :: from_str ( "2025-08-27T00:00:00.000Z" ) ?;
50-
51- let inserted = false ;
56+ let mut inserted = false ;
5257 for master_commit in master_commits {
53- // We don't want to add masses of obsolete data
54- if master_commit. time >= cutoff && !index. contains_tag ( & master_commit. sha ) {
55- // let pr = master_commit.pr.unwrap_or(0);
56- // let benchmark = BenchmarkRequest::create_master(
57- // &master_commit.sha,
58- // &master_commit.parent_sha,
59- // pr,
60- // master_commit.time,
61- // );
62- // log::info!("Inserting master benchmark request {benchmark:?}");
63-
64- // Do not create benchmark requests on production, to allow running in parallel with
65- // the old system.
66- // if let Err(error) = conn.insert_benchmark_request(&benchmark).await {
67- // log::error!("Failed to insert master benchmark request: {error:?}");
68- // } else {
69- // inserted = true;
70- // }
58+ if !index. contains_tag ( & master_commit. sha ) {
59+ let pr = master_commit. pr . unwrap_or ( 0 ) ;
60+ let benchmark = BenchmarkRequest :: create_master (
61+ & master_commit. sha ,
62+ & master_commit. parent_sha ,
63+ pr,
64+ master_commit. time ,
65+ ) ;
66+ log:: info!( "Inserting master benchmark request {benchmark:?}" ) ;
67+
68+ if let Err ( error) = conn. insert_benchmark_request ( & benchmark) . await {
69+ log:: error!( "Failed to insert master benchmark request: {error:?}" ) ;
70+ } else {
71+ inserted = true ;
72+ }
7173 }
7274 }
7375 Ok ( inserted)
@@ -77,35 +79,31 @@ async fn create_benchmark_request_master_commits(
7779/// already in the database
7880/// Returns `true` if at least one benchmark request was inserted.
7981async fn create_benchmark_request_releases (
80- _conn : & dyn database:: pool:: Connection ,
82+ conn : & dyn database:: pool:: Connection ,
8183 index : & BenchmarkRequestIndex ,
8284) -> anyhow:: Result < bool > {
8385 let releases: String = reqwest:: get ( "https://static.rust-lang.org/manifests.txt" )
8486 . await ?
8587 . text ( )
8688 . await ?;
87- // TODO; delete at some point in the future
88- let cutoff: chrono:: DateTime < Utc > = chrono:: DateTime :: from_str ( "2025-08-27T00:00:00.000Z" ) ?;
8989
9090 let releases = releases
9191 . lines ( )
9292 . rev ( )
9393 . filter_map ( parse_release_string)
9494 . take ( 20 ) ;
9595
96- let inserted = false ;
96+ let mut inserted = false ;
9797 for ( name, commit_date) in releases {
98- if commit_date >= cutoff && !index. contains_tag ( & name) {
99- // let release_request = BenchmarkRequest::create_release(&name, commit_date);
100- // log::info!("Inserting release benchmark request {release_request:?}");
101-
102- // Do not create benchmark requests on production, to allow running in parallel with
103- // the old system.
104- // if let Err(error) = conn.insert_benchmark_request(&release_request).await {
105- // log::error!("Failed to insert release benchmark request: {error}");
106- // } else {
107- // inserted = true;
108- // }
98+ if !index. contains_tag ( & name) {
99+ let release_request = BenchmarkRequest :: create_release ( & name, commit_date) ;
100+ log:: info!( "Inserting release benchmark request {release_request:?}" ) ;
101+
102+ if let Err ( error) = conn. insert_benchmark_request ( & release_request) . await {
103+ log:: error!( "Failed to insert release benchmark request: {error}" ) ;
104+ } else {
105+ inserted = true ;
106+ }
109107 }
110108 }
111109 Ok ( inserted)
@@ -388,11 +386,31 @@ async fn perform_queue_tick(ctxt: &SiteCtxt) -> anyhow::Result<()> {
388386
389387 let index = ctxt. known_benchmark_requests . load ( ) ;
390388
389+ let insertion_enabled = is_job_queue_insertion_enabled ( ) ;
390+
391391 let mut requests_inserted = false ;
392392 // Put the master commits into the `benchmark_requests` queue
393- requests_inserted |= create_benchmark_request_master_commits ( ctxt, & * conn, & index) . await ?;
393+ if insertion_enabled {
394+ match create_benchmark_request_master_commits ( ctxt, & * conn, & index) . await {
395+ Ok ( inserted) => requests_inserted |= inserted,
396+ Err ( error) => {
397+ log:: error!(
398+ "Could not insert master benchmark requests into the database: {error:?}"
399+ ) ;
400+ }
401+ }
402+ }
394403 // Put the releases into the `benchmark_requests` queue
395- requests_inserted |= create_benchmark_request_releases ( & * conn, & index) . await ?;
404+ if insertion_enabled {
405+ match create_benchmark_request_releases ( & * conn, & index) . await {
406+ Ok ( inserted) => requests_inserted |= inserted,
407+ Err ( error) => {
408+ log:: error!(
409+ "Could not insert release benchmark requests into the database: {error:?}"
410+ ) ;
411+ }
412+ }
413+ }
396414 // Enqueue waiting requests and try to complete in-progress ones
397415 let completed_reqs = process_benchmark_requests ( & mut * conn) . await ?;
398416
0 commit comments