Index: db.scm ================================================================== --- db.scm +++ db.scm @@ -459,11 +459,13 @@ (print "Attempt to safely close sqlite3 db failed. Trying again. exn=" exn) (thread-sleep! 3) (sqlite3:interrupt! db) (db:safely-close-sqlite3-db db stmtcache try-num: (- try-num 1))) (if (sqlite3:database? db) - (let* ((stmts (and stmt-cache (hash-table-ref/default stmt-cache db #f)))) + (let* ((stmts (if (hash-table? stmt-cache) + (hash-table-ref/default stmt-cache db #f) + #f))) (if stmts (map sqlite3:finalize! (hash-table-values stmts))) (sqlite3:finalize! db) #t) #f)))) Index: server.scm ================================================================== --- server.scm +++ server.scm @@ -324,21 +324,22 @@ ;; (define (server:wait-for-server-start-last-flag areapath) (let* ((start-flag (conc areapath "/logs/server-start-last"))) (if (file-exists? start-flag) (let* ((fmodtime (file-modification-time start-flag)) - (reftime (+ 2 (random 3))) - (delta (- (current-seconds) fmodtime)) - (all-go (> delta reftime))) - (if all-go - #t ;; (system (conc "touch " start-flag)) ;; lazy but safe + (reftime (+ 3 (random 5))) + (delta (- (current-seconds) fmodtime))) + (if (> delta reftime) ;; good enough (begin - (debug:print-info 0 *default-log-port* "Gating server start, last start: " - fmodtime ", delta: " delta ", reftime: " reftime ", all-go=" all-go) + (debug:print-info 0 *default-log-port* "Ready to start server, last start: " + fmodtime ", delta: " delta ", reftime: " reftime) + (system (conc "touch " start-flag))) ;; lazy but safe + (begin (thread-sleep! 5) (server:wait-for-server-start-last-flag areapath)))) - #;(system (conc "touch " start-flag))))) + (system (conc "touch " start-flag))))) + ;; kind start up of servers, wait 40 seconds before allowing another server for a given ;; run-id to be launched ;; (define (server:kind-run areapath)