explore older history;
authorwenzelm
Fri, 12 May 2017 16:32:53 +0200
changeset 65810 356c2b488cf3
parent 65809 8d5ac49388ea
child 65811 2653f1cd8775
explore older history;
src/Pure/Admin/isabelle_cronjob.scala
--- 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)
       })
     }
   }