--- a/src/Pure/Admin/isabelle_cronjob.scala Fri May 12 16:24:29 2017 +0200
+++ b/src/Pure/Admin/isabelle_cronjob.scala Fri May 12 16:32:53 2017 +0200
@@ -124,23 +124,29 @@
val store = Build_Log.store(options)
using(store.open_database())(db =>
{
- val days = options.int("build_log_history") max history
- val items = recent_items(db, days = days, rev = rev, sql = sql)
- def runs = unknown_runs(items)
+ def pick_days(days: Int): Option[String] =
+ {
+ val items = recent_items(db, days = days, rev = rev, sql = sql)
+ def runs = unknown_runs(items)
- val known_rev =
- rev != "" && items.exists(item => item.known && item.isabelle_version == rev)
+ val known_rev =
+ rev != "" && items.exists(item => item.known && item.isabelle_version == rev)
- if (historic || known_rev) {
- val longest_run =
- (List.empty[Item] /: runs)({ case (item1, item2) =>
- if (item1.length >= item2.length) item1 else item2
- })
- if (longest_run.isEmpty) None
- else Some(longest_run(longest_run.length / 2).isabelle_version)
+ if (historic || known_rev) {
+ val longest_run =
+ (List.empty[Item] /: runs)({ case (item1, item2) =>
+ if (item1.length >= item2.length) item1 else item2
+ })
+ if (longest_run.isEmpty) None
+ else Some(longest_run(longest_run.length / 2).isabelle_version)
+ }
+ else if (rev != "") Some(rev)
+ else runs.flatten.headOption.map(_.isabelle_version)
}
- else if (rev != "") Some(rev)
- else runs.flatten.headOption.map(_.isabelle_version)
+
+ pick_days(options.int("build_log_history") max history) orElse
+ pick_days(100) orElse
+ pick_days(1000)
})
}
}