summaryrefslogtreecommitdiff
path: root/src/cuirass/database.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-02-08 11:59:42 +0100
committerLudovic Courtès <ludo@gnu.org>2018-02-08 14:19:19 +0100
commit2887b1dfa914f804607535d80f57bca34d4888fa (patch)
tree7d02ea6be2edb8a1475380f04b647e51eeb77de6 /src/cuirass/database.scm
parent0ff3c232744582d6a5da81e38f6ed7a9b352e956 (diff)
downloadcuirass-2887b1dfa914f804607535d80f57bca34d4888fa.tar
cuirass-2887b1dfa914f804607535d80f57bca34d4888fa.tar.gz
database: 'db-update-build-status!' keeps stoptime unchanged when nothing new.
* src/cuirass/database.scm (db-update-build-status!): And "AND status != ?" in SQL queries. * tests/database.scm ("database")["db-update-build-status!"]: Add call to 'db-update-build-status!'.
Diffstat (limited to 'src/cuirass/database.scm')
-rw-r--r--src/cuirass/database.scm13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm
index 67a0d08..a40a2d8 100644
--- a/src/cuirass/database.scm
+++ b/src/cuirass/database.scm
@@ -262,13 +262,18 @@ log file for DRV."
(sqlite-exec db "UPDATE Builds SET starttime=?, status=? \
WHERE derivation=?;"
now status drv)
+
+ ;; Update only if we're switching to a different status; otherwise leave
+ ;; things unchanged. This ensures that 'stoptime' remains valid and
+ ;; doesn't change every time we mark DRV as 'succeeded' several times in
+ ;; a row, for instance.
(if log-file
(sqlite-exec db "UPDATE Builds SET stoptime=?, status=?, log=? \
-WHERE derivation=?;"
- now status log-file drv)
+WHERE derivation=? AND status != ?;"
+ now status log-file drv status)
(sqlite-exec db "UPDATE Builds SET stoptime=?, status=? \
-WHERE derivation=?;"
- now status drv))))
+WHERE derivation=? AND status != ?;"
+ now status drv status))))
(define (db-get-outputs db build-id)
"Retrieve the OUTPUTS of the build identified by BUILD-ID in DB database."