Index: server.scm ================================================================== --- server.scm +++ server.scm @@ -171,11 +171,11 @@ (define (server:logf-get-start-info logf) (let ((rx (regexp "^SERVER STARTED: (\\S+):(\\d+) AT ([\\d\\.]+) server-id: (\\S+)"))) ;; SERVER STARTED: host:port AT timesecs server id (handle-exceptions exn (begin - (print "failed to get server info from " logf ", exn=" exn) + (debug:print-info 0 *default-log-port* "failed to get server info from " logf ", exn=" exn) (list #f #f #f #f)) ;; no idea what went wrong, call it a bad server (with-input-from-file logf (lambda () (let loop ((inl (read-line)) @@ -183,17 +183,21 @@ (if (not (eof-object? inl)) (let ((mlst (string-match rx inl))) (if (not mlst) (if (< lnum 500) ;; give up if more than 500 lines of server log read (loop (read-line)(+ lnum 1)) - (list #f #f #f #f)) + (begin + (debug:print-info 0 *default-log-port* "failed to get server info from first 500 lines of " logf ) + (list #f #f #f #f))) (let ((dat (cdr mlst))) (list (car dat) ;; host (string->number (cadr dat)) ;; port (string->number (caddr dat)) (cadr (cddr dat)))))) - (list #f #f #f #f)))))))) + (begin + (debug:print-info 0 *default-log-port* "failed to get server info from " logf " at " (current-seconds)) + (list #f #f #f #f))))))))) ;; get a list of servers with all relevant data ;; ( mod-time host port start-time pid ) ;; (define (server:get-list areapath #!key (limit #f)) @@ -245,17 +249,21 @@ (define (server:get-num-alive srvlst) (let ((num-alive 0)) (for-each (lambda (server) + (handle-exceptions + exn + (begin + (debug:print-info 0 *default-log-port* "failed to get server start-time and/or mod-time from " server ", exn=" exn)) (match-let (((mod-time host port start-time server-id pid) server)) (let* ((uptime (- (current-seconds) mod-time)) (runtime (if start-time (- mod-time start-time) 0))) - (if (< uptime 5)(set! num-alive (+ num-alive 1)))))) + (if (< uptime 5)(set! num-alive (+ num-alive 1))))))) srvlst) num-alive)) ;; given a list of servers get a list of valid servers, i.e. at least ;; 10 seconds old, has started and is less than 1 hour old and is @@ -309,22 +317,32 @@ (idx (random len))) (list-ref srvrs idx)) #f))) (define (server:record->id servr) + (handle-exceptions + exn + (begin + (debug:print-info 0 *default-log-port* "failed to get server id from " server ", exn=" exn) + #f) (match-let (((mod-time host port start-time server-id pid) servr)) (if server-id server-id - #f))) + #f)))) (define (server:record->url servr) + (handle-exceptions + exn + (begin + (debug:print-info 0 *default-log-port* "failed to get server url from " server ", exn=" exn) + #f) (match-let (((mod-time host port start-time server-id pid) servr)) (if (and host port) (conc host ":" port) - #f))) + #f)))) (define (server:get-client-signature) ;; BB> why is this proc named "get-"? it returns nothing -- set! has not return value. (if *my-client-signature* *my-client-signature* (let ((sig (server:mk-signature))) (set! *my-client-signature* sig) @@ -441,13 +459,18 @@ (if res server-url #f))) (define (server:kill servr) + (handle-exceptions + exn + (begin + (debug:print-info 0 *default-log-port* "failed to get host and/or port from " server ", exn=" exn) + #f) (match-let (((mod-time hostname port start-time pid) servr)) - (tasks:kill-server hostname pid))) + (tasks:kill-server hostname pid)))) ;; called in megatest.scm, host-port is string hostname:port ;; ;; NOTE: This is NOT called directly from clients as not all transports support a client running ;; in the same process as the server. Index: tasks.scm ================================================================== --- tasks.scm +++ tasks.scm @@ -1085,11 +1085,11 @@ (debug:print-info 0 *default-log-port* "syncing test steps") (tasks:sync-test-steps dbh cached-info test-step-ids smallest-last-update-time) (debug:print-info 0 *default-log-port* "syncing test data") (tasks:sync-test-gen-data dbh cached-info test-data-ids smallest-last-update-time) (print "----------done---------------"))) - (let* ((smallest-time (hash-table-ref/default smallest-last-update-time "smallest-time" #f))) + (let* ((smallest-time (hash-table-ref/default smallest-last-update-time "smallest-time" (current-seconds)))) (debug:print-info 0 "smallest-time :" smallest-time " last-sync-time " last-sync-time) (if (not (and target run-name)) (if (or (and smallest-time (> smallest-time last-sync-time)) (and smallest-time (eq? last-sync-time 0))) (pgdb:write-sync-time dbh area-info smallest-time))))) ;;this needs to be changed (if (tasks:set-area dbh configdat)