@@ -20,12 +20,13 @@ pub fn run_new_queue() -> bool {
20
20
}
21
21
22
22
/// Store the latest master commits or do nothing if all of them are
23
- /// already in the database
23
+ /// already in the database.
24
+ /// Returns `true` if at least one benchmark request was inserted.
24
25
async fn create_benchmark_request_master_commits (
25
26
ctxt : & SiteCtxt ,
26
27
conn : & dyn database:: pool:: Connection ,
27
28
index : & BenchmarkRequestIndex ,
28
- ) -> anyhow:: Result < ( ) > {
29
+ ) -> anyhow:: Result < bool > {
29
30
let now = Utc :: now ( ) ;
30
31
31
32
let master_commits = ctxt. get_master_commits ( ) ;
@@ -38,6 +39,7 @@ async fn create_benchmark_request_master_commits(
38
39
// TODO; delete at some point in the future
39
40
let cutoff: chrono:: DateTime < Utc > = chrono:: DateTime :: from_str ( "2025-08-27T00:00:00.000Z" ) ?;
40
41
42
+ let mut inserted = false ;
41
43
for master_commit in master_commits {
42
44
// We don't want to add masses of obsolete data
43
45
if master_commit. time >= cutoff && !index. contains_tag ( & master_commit. sha ) {
@@ -51,18 +53,21 @@ async fn create_benchmark_request_master_commits(
51
53
log:: info!( "Inserting master benchmark request {benchmark:?}" ) ;
52
54
if let Err ( error) = conn. insert_benchmark_request ( & benchmark) . await {
53
55
log:: error!( "Failed to insert master benchmark request: {error:?}" ) ;
56
+ } else {
57
+ inserted = true ;
54
58
}
55
59
}
56
60
}
57
- Ok ( ( ) )
61
+ Ok ( inserted )
58
62
}
59
63
60
64
/// Store the latest release commits or do nothing if all of them are
61
65
/// already in the database
66
+ /// Returns `true` if at least one benchmark request was inserted.
62
67
async fn create_benchmark_request_releases (
63
68
conn : & dyn database:: pool:: Connection ,
64
69
index : & BenchmarkRequestIndex ,
65
- ) -> anyhow:: Result < ( ) > {
70
+ ) -> anyhow:: Result < bool > {
66
71
let releases: String = reqwest:: get ( "https://static.rust-lang.org/manifests.txt" )
67
72
. await ?
68
73
. text ( )
@@ -76,16 +81,19 @@ async fn create_benchmark_request_releases(
76
81
. filter_map ( parse_release_string)
77
82
. take ( 20 ) ;
78
83
84
+ let mut inserted = false ;
79
85
for ( name, commit_date) in releases {
80
86
if commit_date >= cutoff && !index. contains_tag ( & name) {
81
87
let release_request = BenchmarkRequest :: create_release ( & name, commit_date) ;
82
88
log:: info!( "Inserting release benchmark request {release_request:?}" ) ;
83
89
if let Err ( error) = conn. insert_benchmark_request ( & release_request) . await {
84
90
log:: error!( "Failed to insert release benchmark request: {error}" ) ;
91
+ } else {
92
+ inserted = true ;
85
93
}
86
94
}
87
95
}
88
- Ok ( ( ) )
96
+ Ok ( inserted )
89
97
}
90
98
91
99
/// Sorts try and master requests that are in the `ArtifactsReady` status and return them in the
@@ -285,15 +293,23 @@ async fn process_benchmark_requests(
285
293
async fn cron_enqueue_jobs ( site_ctxt : & SiteCtxt ) -> anyhow:: Result < ( ) > {
286
294
let mut conn = site_ctxt. conn ( ) . await ;
287
295
288
- let index = conn . load_benchmark_request_index ( ) . await ? ;
296
+ let index = site_ctxt . known_benchmark_requests . load ( ) ;
289
297
298
+ let mut requests_inserted = false ;
290
299
// Put the master commits into the `benchmark_requests` queue
291
- create_benchmark_request_master_commits ( site_ctxt, & * conn, & index) . await ?;
300
+ requests_inserted |= create_benchmark_request_master_commits ( site_ctxt, & * conn, & index) . await ?;
292
301
// Put the releases into the `benchmark_requests` queue
293
- create_benchmark_request_releases ( & * conn, & index) . await ?;
302
+ requests_inserted |= create_benchmark_request_releases ( & * conn, & index) . await ?;
294
303
// Enqueue waiting requests and try to complete in-progress ones
295
304
process_benchmark_requests ( & mut * conn) . await ?;
296
305
306
+ // If some change happened, reload the benchmark request index
307
+ if requests_inserted {
308
+ site_ctxt
309
+ . known_benchmark_requests
310
+ . store ( Arc :: new ( conn. load_benchmark_request_index ( ) . await ?) ) ;
311
+ }
312
+
297
313
Ok ( ( ) )
298
314
}
299
315
0 commit comments