1
- use crate :: cdn:: { self , CdnBackend } ;
1
+ use crate :: cdn;
2
2
use crate :: db:: { delete_crate, Pool } ;
3
3
use crate :: docbuilder:: PackageKind ;
4
4
use crate :: error:: Result ;
@@ -27,7 +27,6 @@ pub(crate) struct QueuedCrate {
27
27
#[ derive( Debug ) ]
28
28
pub struct BuildQueue {
29
29
config : Arc < Config > ,
30
- cdn : Arc < CdnBackend > ,
31
30
storage : Arc < Storage > ,
32
31
pub ( crate ) db : Pool ,
33
32
metrics : Arc < Metrics > ,
@@ -39,13 +38,11 @@ impl BuildQueue {
39
38
db : Pool ,
40
39
metrics : Arc < Metrics > ,
41
40
config : Arc < Config > ,
42
- cdn : Arc < CdnBackend > ,
43
41
storage : Arc < Storage > ,
44
42
) -> Self {
45
43
BuildQueue {
46
44
max_attempts : config. build_attempts . into ( ) ,
47
45
config,
48
- cdn,
49
46
db,
50
47
metrics,
51
48
storage,
@@ -191,7 +188,9 @@ impl BuildQueue {
191
188
)
192
189
} ) ;
193
190
self . metrics . total_builds . inc ( ) ;
194
- if let Err ( err) = cdn:: invalidate_crate ( & self . config , & self . cdn , & to_process. name ) {
191
+ if let Err ( err) =
192
+ cdn:: queue_crate_invalidation ( & mut transaction, & self . config , & to_process. name )
193
+ {
195
194
report_error ( & err) ;
196
195
}
197
196
@@ -321,7 +320,7 @@ impl BuildQueue {
321
320
) ,
322
321
Err ( err) => report_error ( & err) ,
323
322
}
324
- if let Err ( err) = cdn:: invalidate_crate ( & self . config , & self . cdn , krate) {
323
+ if let Err ( err) = cdn:: queue_crate_invalidation ( & mut * conn , & self . config , krate) {
325
324
report_error ( & err) ;
326
325
}
327
326
continue ;
@@ -366,7 +365,9 @@ impl BuildQueue {
366
365
yanked. is_some ( ) ,
367
366
) ;
368
367
369
- if let Err ( err) = cdn:: invalidate_crate ( & self . config , & self . cdn , & release. name ) {
368
+ if let Err ( err) =
369
+ cdn:: queue_crate_invalidation ( & mut * conn, & self . config , & release. name )
370
+ {
370
371
report_error ( & err) ;
371
372
}
372
373
}
@@ -570,11 +571,7 @@ mod tests {
570
571
assert_eq ! ( metrics. failed_builds. get( ) , 1 ) ;
571
572
572
573
// no invalidations were run since we don't have a distribution id configured
573
- assert ! ( matches!( * env. cdn( ) , CdnBackend :: Dummy ( _) ) ) ;
574
- if let CdnBackend :: Dummy ( ref invalidation_requests) = * env. cdn ( ) {
575
- let ir = invalidation_requests. lock ( ) . unwrap ( ) ;
576
- assert ! ( ir. is_empty( ) ) ;
577
- }
574
+ assert ! ( cdn:: queued_or_active_crate_invalidations( & mut * env. db( ) . conn( ) ) ?. is_empty( ) ) ;
578
575
579
576
Ok ( ( ) )
580
577
} )
@@ -593,55 +590,31 @@ mod tests {
593
590
queue. add_crate ( "will_succeed" , "1.0.0" , -1 , None ) ?;
594
591
queue. add_crate ( "will_fail" , "1.0.0" , 0 , None ) ?;
595
592
596
- assert ! ( matches!( * env. cdn( ) , CdnBackend :: Dummy ( _) ) ) ;
597
- if let CdnBackend :: Dummy ( ref invalidation_requests) = * env. cdn ( ) {
598
- let ir = invalidation_requests. lock ( ) . unwrap ( ) ;
599
- assert ! ( ir. is_empty( ) ) ;
600
- }
593
+ let mut conn = env. db ( ) . conn ( ) ;
594
+ cdn:: queued_or_active_crate_invalidations ( & mut * conn) ?. is_empty ( ) ;
601
595
602
596
queue. process_next_crate ( |krate| {
603
597
assert_eq ! ( "will_succeed" , krate. name) ;
604
598
Ok ( ( ) )
605
599
} ) ?;
606
- if let CdnBackend :: Dummy ( ref invalidation_requests) = * env. cdn ( ) {
607
- let ir = invalidation_requests. lock ( ) . unwrap ( ) ;
608
- assert_eq ! (
609
- * ir,
610
- [
611
- ( "distribution_id_web" . into( ) , "/will_succeed*" . into( ) ) ,
612
- ( "distribution_id_web" . into( ) , "/crate/will_succeed*" . into( ) ) ,
613
- (
614
- "distribution_id_static" . into( ) ,
615
- "/rustdoc/will_succeed*" . into( )
616
- ) ,
617
- ]
618
- ) ;
619
- }
600
+
601
+ let queued_invalidations = cdn:: queued_or_active_crate_invalidations ( & mut * conn) ?;
602
+ assert_eq ! ( queued_invalidations. len( ) , 3 ) ;
603
+ assert ! ( queued_invalidations
604
+ . iter( )
605
+ . all( |i| i. krate == "will_succeed" ) ) ;
620
606
621
607
queue. process_next_crate ( |krate| {
622
608
assert_eq ! ( "will_fail" , krate. name) ;
623
609
anyhow:: bail!( "simulate a failure" ) ;
624
610
} ) ?;
625
- if let CdnBackend :: Dummy ( ref invalidation_requests) = * env. cdn ( ) {
626
- let ir = invalidation_requests. lock ( ) . unwrap ( ) ;
627
- assert_eq ! (
628
- * ir,
629
- [
630
- ( "distribution_id_web" . into( ) , "/will_succeed*" . into( ) ) ,
631
- ( "distribution_id_web" . into( ) , "/crate/will_succeed*" . into( ) ) ,
632
- (
633
- "distribution_id_static" . into( ) ,
634
- "/rustdoc/will_succeed*" . into( )
635
- ) ,
636
- ( "distribution_id_web" . into( ) , "/will_fail*" . into( ) ) ,
637
- ( "distribution_id_web" . into( ) , "/crate/will_fail*" . into( ) ) ,
638
- (
639
- "distribution_id_static" . into( ) ,
640
- "/rustdoc/will_fail*" . into( )
641
- ) ,
642
- ]
643
- ) ;
644
- }
611
+
612
+ let queued_invalidations = cdn:: queued_or_active_crate_invalidations ( & mut * conn) ?;
613
+ assert_eq ! ( queued_invalidations. len( ) , 6 ) ;
614
+ assert ! ( queued_invalidations
615
+ . iter( )
616
+ . skip( 3 )
617
+ . all( |i| i. krate == "will_fail" ) ) ;
645
618
646
619
Ok ( ( ) )
647
620
} )
0 commit comments