Overview
Comment: | Streamlined port sequencing for per-run db servers |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | re-re-factor-server |
Files: | files | file ages | folders |
SHA1: |
c6b8e8a9d81ef8b3c246bcfd3c29c244 |
User & Date: | matt on 2014-02-15 22:41:59 |
Other Links: | branch diff | manifest | tags |
Context
2014-02-15
| ||
23:01 | Removed heartbeat check, fixed typo check-in: d21a137b36 user: matt tags: re-re-factor-server | |
22:41 | Streamlined port sequencing for per-run db servers check-in: c6b8e8a9d8 user: matt tags: re-re-factor-server | |
22:02 | Cleaned up server start sequence check-in: fb46b13dc5 user: matt tags: re-re-factor-server | |
Changes
Modified http-transport.scm from [043ad30c04] to [7f3beca95c].
︙ | ︙ | |||
58 59 60 61 62 63 64 | (string-intersperse (map number->string (u8vector->list (if res res (hostname->ip hostname)))) "."))) (define (http-transport:run hostn run-id server-id) (debug:print 2 "Attempting to start the server ...") | < < < < < < < < | | < < < < < < | | 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | (string-intersperse (map number->string (u8vector->list (if res res (hostname->ip hostname)))) "."))) (define (http-transport:run hostn run-id server-id) (debug:print 2 "Attempting to start the server ...") (let* ((db #f) ;; (open-db)) ;; we don't want the server to be opening and closing the db unnecesarily (hostname (get-host-name)) (ipaddrstr (let ((ipstr (if (string=? "-" hostn) ;; (string-intersperse (map number->string (u8vector->list (hostname->ip hostname))) ".") (server:get-best-guess-address hostname) #f))) (if ipstr ipstr hostn))) ;; hostname))) (start-port (open-run-close tasks:server-get-next-port tasks:open-db)) (link-tree-path (config-lookup *configdat* "setup" "linktree"))) (set! db *inmemdb*) (root-path (if link-tree-path link-tree-path (current-directory))) ;; WARNING: SECURITY HOLE. FIX ASAP! (handle-directory spiffy-directory-listing) ;; http-transport:handle-directory) ;; simple-directory-handler) ;; Setup the web server and a /ctrl interface |
︙ | ︙ |
Modified tasks.scm from [620093d5f8] to [4e3a51a8d8].
︙ | ︙ | |||
132 133 134 135 136 137 138 139 140 141 142 143 144 145 | (define (tasks:server-delete-records-for-this-pid mdb) (sqlite3:execute mdb "DELETE FROM servers WHERE hostname=? AND pid=?;" (get-host-name) (current-process-id))) (define (tasks:server-set-interface-port mdb server-id interface port) (sqlite3:execute mdb "UPDATE servers SET interface=?,port=? WHERE id=?;" interface port server-id)) (define (tasks:server-am-i-the-server? mdb run-id) (let* ((all (tasks:server-get-servers-vying-for-run-id mdb run-id)) (first (if (null? all) (begin (debug:print 0 "ERROR: no servers listed, should be at least one by now.") (sqlite3:finalize! mdb) (exit 1)) (car (db:get-rows all)))) | > > > > > > > > > > > > > > > > > > > > > > > | 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | (define (tasks:server-delete-records-for-this-pid mdb) (sqlite3:execute mdb "DELETE FROM servers WHERE hostname=? AND pid=?;" (get-host-name) (current-process-id))) (define (tasks:server-set-interface-port mdb server-id interface port) (sqlite3:execute mdb "UPDATE servers SET interface=?,port=? WHERE id=?;" interface port server-id)) (define (tasks:server-get-next-port mdb) (let ((res #f) (port-param (if (and (args:get-arg "-port") (string->number (args:get-arg "-port"))) (string->number (args:get-arg "-port")) #f)) (config-port (if (and (config-lookup *configdat* "server" "port") (string->number (config-lookup *configdat* "server" "port"))) (string->number (config-lookup *configdat* "server" "port")) #f))) (sqlite3:for-each-row (lambda (port) (set! res (+ port 1))) ;; set to next mdb "SELECT max(port) FROM servers;") (cond ((and port-param res) (if (> res port-param) res port-param)) (port-param port-param) ((and config-port res) (if (> res config-port) res config-port)) (config-port config-port) ((and res (> res 8080)) res) (else (+ 5000 (random 1001)))))) (define (tasks:server-am-i-the-server? mdb run-id) (let* ((all (tasks:server-get-servers-vying-for-run-id mdb run-id)) (first (if (null? all) (begin (debug:print 0 "ERROR: no servers listed, should be at least one by now.") (sqlite3:finalize! mdb) (exit 1)) (car (db:get-rows all)))) |
︙ | ︙ |