Overview
Comment: | Properly deal with roll up vs. setting to INCOMPLETE in old tests stuck in LAUNCHED |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | v1.55 |
Files: | files | file ages | folders |
SHA1: |
b54fa135583b357378ae5f9f3debe0de |
User & Date: | matt on 2014-05-20 23:54:11 |
Other Links: | branch diff | manifest | tags |
Context
2014-05-22
| ||
12:08 | Improved dashboard for working in readonly areas check-in: 402ee8e934 user: mrwellan tags: v1.55, v1.5519 | |
2014-05-20
| ||
23:54 | Properly deal with roll up vs. setting to INCOMPLETE in old tests stuck in LAUNCHED check-in: b54fa13558 user: matt tags: v1.55 | |
17:20 | Added back the improved db:find-and-mark-incomplete routine. check-in: d8f671770d user: mrwellan tags: v1.55, v1.5519 | |
Changes
Modified db.scm from [e4c046d5ff] to [f79f1b36ee].
︙ | ︙ | |||
482 483 484 485 486 487 488 489 490 491 492 493 494 495 | ;; select end_time-now from ;; (select testname,item_path,event_time+run_duration as ;; end_time,strftime('%s','now') as now from tests where state in ;; ('RUNNING','REMOTEHOSTSTART','LAUNCED')); (define (db:find-and-mark-incomplete db #!key (ovr-deadtime #f)) (let* ((incompleted '()) (toplevels '()) (deadtime-str (configf:lookup *configdat* "setup" "deadtime")) (deadtime (if (and deadtime-str (string->number deadtime-str)) (string->number deadtime-str) 7200)) ;; two hours (run-ids (db:get-run-ids db))) ;; iterate over runs to divy up the calls | > | 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 | ;; select end_time-now from ;; (select testname,item_path,event_time+run_duration as ;; end_time,strftime('%s','now') as now from tests where state in ;; ('RUNNING','REMOTEHOSTSTART','LAUNCED')); (define (db:find-and-mark-incomplete db #!key (ovr-deadtime #f)) (let* ((incompleted '()) (oldlaunched '()) (toplevels '()) (deadtime-str (configf:lookup *configdat* "setup" "deadtime")) (deadtime (if (and deadtime-str (string->number deadtime-str)) (string->number deadtime-str) 7200)) ;; two hours (run-ids (db:get-run-ids db))) ;; iterate over runs to divy up the calls |
︙ | ︙ | |||
521 522 523 524 525 526 527 | run-id) ;; in LAUNCHED for more than one day. Could be long due to job queues TODO/BUG: Need override for this in config ;; (db:delay-if-busy) (sqlite3:for-each-row (lambda (test-id run-dir uname testname item-path) | > > > | > | > | | | | 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 | run-id) ;; in LAUNCHED for more than one day. Could be long due to job queues TODO/BUG: Need override for this in config ;; (db:delay-if-busy) (sqlite3:for-each-row (lambda (test-id run-dir uname testname item-path) (if (and (equal? uname "n/a") (equal? item-path "")) ;; this is a toplevel test ;; what to do with toplevel? call rollup? (set! toplevels (cons (list test-id run-dir uname testname item-path run-id) toplevels)) (set! oldlaunched (cons (list test-id run-dir uname testname item-path run-id) oldlaunched)))) db "SELECT id,rundir,uname,testname,item_path FROM tests WHERE run_id=? AND (strftime('%s','now') - event_time) > 86400 AND state IN ('LAUNCHED');" run-id)) run-ids) ;; These are defunct tests, do not do all the overhead of set-state-status. Force them to INCOMPLETE. ;; (db:delay-if-busy) (let* ((min-incompleted (filter (lambda (x) (let* ((testpath (cadr x)) (tdatpath (conc testpath "/testdat.db")) (dbexists (file-exists? tdatpath))) (or (not dbexists) ;; if no file then something wrong - mark as incomplete (> (- (current-seconds)(file-modification-time tdatpath)) 600)))) ;; no change in 10 minutes to testdat.db - she's dead Jim incompleted)) (min-incompleted-ids (map car min-incompleted)) (all-ids (append min-incompleted-ids (map car oldlaunched)))) (if (> (length all-ids) 0) (begin (debug:print 0 "WARNING: Marking test(s); " (string-intersperse (map conc all-ids) ", ") " as INCOMPLETE") (sqlite3:execute db (conc "UPDATE tests SET state='INCOMPLETE' WHERE id IN (" (string-intersperse (map conc all-ids) ",") ");"))))) ;; Now do rollups for the toplevel tests ;; (for-each (lambda (toptest) (let ((test-name (list-ref toptest 3)) |
︙ | ︙ |