[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[no subject]
From: |
Ludovic Courtès |
Date: |
Thu, 8 Feb 2018 08:25:54 -0500 (EST) |
branch: master
commit 2887b1dfa914f804607535d80f57bca34d4888fa
Author: Ludovic Courtès <address@hidden>
Date: Thu Feb 8 11:59:42 2018 +0100
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!'.
---
src/cuirass/database.scm | 13 +++++++++----
tests/database.scm | 5 +++++
2 files changed, 14 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."
diff --git a/tests/database.scm b/tests/database.scm
index 65a10a8..2382292 100644
--- a/tests/database.scm
+++ b/tests/database.scm
@@ -168,6 +168,11 @@ INSERT INTO Evaluations (specification, revision) VALUES
(3, 3);")
(let ((status1 (get-status)))
(db-update-build-status! db "/foo.drv" (build-status succeeded)
#:log-file "/foo.drv.log")
+
+ ;; Second call shouldn't make any difference.
+ (db-update-build-status! db "/foo.drv" (build-status succeeded)
+ #:log-file "/foo.drv.log")
+
(let ((status2 (get-status))
(start (get-status #:starttime))
(end (get-status #:stoptime))
- master updated (e656f42 -> 5425639), Ludovic Courtès, 2018/02/08
- [no subject], Ludovic Courtès, 2018/02/08
- [no subject], Ludovic Courtès, 2018/02/08
- [no subject], Ludovic Courtès, 2018/02/08
- [no subject],
Ludovic Courtès <=
- [no subject], Ludovic Courtès, 2018/02/08
- [no subject], Ludovic Courtès, 2018/02/08
- [no subject], Ludovic Courtès, 2018/02/08
- [no subject], Ludovic Courtès, 2018/02/08