src/Pure/Admin/isabelle_cronjob.scala
changeset 78869 f464f6bc5809
parent 78861 5c91bd51fc37
child 78870 674362fd8c96
equal deleted inserted replaced
78868:78fcd5bf6b2a 78869:f464f6bc5809
   559     /* structured tasks */
   559     /* structured tasks */
   560 
   560 
   561     def SEQ(tasks: List[Logger_Task]): Logger_Task = Logger_Task(body = _ =>
   561     def SEQ(tasks: List[Logger_Task]): Logger_Task = Logger_Task(body = _ =>
   562       for (task <- tasks.iterator if !exclude_task(task.name) || task.name == "") run_now(task))
   562       for (task <- tasks.iterator if !exclude_task(task.name) || task.name == "") run_now(task))
   563 
   563 
       
   564     def SEQUENTIAL(tasks: Logger_Task*): Logger_Task =
       
   565       SEQ(tasks.toList)
       
   566 
   564     def PAR(tasks: List[Logger_Task]): Logger_Task =
   567     def PAR(tasks: List[Logger_Task]): Logger_Task =
   565       Logger_Task(body =
   568       Logger_Task(body =
   566         { _ =>
   569         { _ =>
   567           @tailrec def join(running: List[Task]): Unit = {
   570           @tailrec def join(running: List[Task]): Unit = {
   568             running.partition(_.is_finished) match {
   571             running.partition(_.is_finished) match {
   597     File.write(main_state_file, main_start_date.toString + " " + log_service.hostname)
   600     File.write(main_state_file, main_start_date.toString + " " + log_service.hostname)
   598 
   601 
   599     run(main_start_date,
   602     run(main_start_date,
   600       Logger_Task("isabelle_cronjob", logger =>
   603       Logger_Task("isabelle_cronjob", logger =>
   601         run_now(
   604         run_now(
   602           SEQ(List(
   605           SEQUENTIAL(
   603             init,
   606             init,
   604             PAR(
   607             PAR(
   605               List(
   608               List(
   606                 mailman_archives,
   609                 mailman_archives,
   607                 build_release,
   610                 build_release,
   610                     Build_Log.build_log_database(logger.options, build_log_dirs,
   613                     Build_Log.build_log_database(logger.options, build_log_dirs,
   611                       vacuum = true, ml_statistics = true,
   614                       vacuum = true, ml_statistics = true,
   612                       snapshot = Some(Isabelle_Devel.build_log_snapshot))))),
   615                       snapshot = Some(Isabelle_Devel.build_log_snapshot))))),
   613             PAR(
   616             PAR(
   614               List(remote_builds1, remote_builds2).map(remote_builds =>
   617               List(remote_builds1, remote_builds2).map(remote_builds =>
   615               SEQ(List(
   618               SEQUENTIAL(
   616                 PAR(remote_builds.map(_.filter(_.active())).map(seq =>
   619                 PAR(remote_builds.map(_.filter(_.active())).map(seq =>
   617                   SEQ(
   620                   SEQ(
   618                     for {
   621                     for {
   619                       (r, i) <- (if (seq.length <= 1) seq.map((_, -1)) else seq.zipWithIndex)
   622                       (r, i) <- (if (seq.length <= 1) seq.map((_, -1)) else seq.zipWithIndex)
   620                       (rev, afp_rev) <- r.pick(logger.options, hg.id(), history_base_filter(r))
   623                       (rev, afp_rev) <- r.pick(logger.options, hg.id(), history_base_filter(r))
   621                     } yield remote_build_history(rev, afp_rev, i, r)))),
   624                     } yield remote_build_history(rev, afp_rev, i, r)))),
   622                 Logger_Task("build_status",
   625                 Logger_Task("build_status",
   623                   logger => Isabelle_Devel.build_status(logger.options)))))),
   626                   logger => Isabelle_Devel.build_status(logger.options))))),
   624             exit)))))
   627             exit))))
   625 
   628 
   626     log_service.shutdown()
   629     log_service.shutdown()
   627 
   630 
   628     main_state_file.file.delete
   631     main_state_file.file.delete
   629   }
   632   }