@@ -506,8 +506,6 @@ impl Crater {
506
506
) ;
507
507
workspace. purge_all_build_dirs ( ) ?;
508
508
res?;
509
-
510
- experiment. set_status ( & db, Status :: NeedsReport ) ?;
511
509
} else {
512
510
bail ! ( "missing experiment {}" , ex. 0 ) ;
513
511
}
@@ -522,18 +520,18 @@ impl Crater {
522
520
let db = Database :: open ( ) ?;
523
521
524
522
if let Some ( mut experiment) = Experiment :: get ( & db, & ex. 0 ) ? {
525
- // Update the status
526
- match ( experiment. status , force) {
527
- ( Status :: NeedsReport , _) | ( Status :: ReportFailed , _) | ( _, true ) => {
528
- experiment. set_status ( & db, Status :: GeneratingReport ) ?;
529
- }
530
- ( other, false ) => bail ! (
531
- "can't generate the report of an experiment with status {} \
523
+ let ( completed, all) = experiment. raw_progress ( & db) ?;
524
+ if !force && completed != all {
525
+ bail ! (
526
+ "can't generate the report of an incomplete experiment: {}/{} results \
532
527
(use --force to override)",
533
- other
534
- ) ,
528
+ completed,
529
+ all,
530
+ ) ;
535
531
}
536
532
533
+ experiment. set_status ( & db, Status :: GeneratingReport ) ?;
534
+
537
535
let result_db = DatabaseDB :: new ( & db) ;
538
536
let res = report:: gen (
539
537
& result_db,
@@ -564,18 +562,18 @@ impl Crater {
564
562
let db = Database :: open ( ) ?;
565
563
566
564
if let Some ( mut experiment) = Experiment :: get ( & db, & ex. 0 ) ? {
567
- // Update the status
568
- match ( experiment. status , force) {
569
- ( Status :: NeedsReport , _) | ( Status :: ReportFailed , _) | ( _, true ) => {
570
- experiment. set_status ( & db, Status :: GeneratingReport ) ?;
571
- }
572
- ( other, false ) => bail ! (
573
- "can't publish the report of an experiment with status {} \
565
+ let ( completed, all) = experiment. raw_progress ( & db) ?;
566
+ if !force && completed != all {
567
+ bail ! (
568
+ "can't publish the report of an incomplete experiment: {}/{} results \
574
569
(use --force to override)",
575
- other
576
- ) ,
570
+ completed,
571
+ all,
572
+ ) ;
577
573
}
578
574
575
+ experiment. set_status ( & db, Status :: GeneratingReport ) ?;
576
+
579
577
let result_db = DatabaseDB :: new ( & db) ;
580
578
let client = report:: get_client_for_bucket ( & s3_prefix. bucket ) ?;
581
579
0 commit comments