Megatest

Check-in [33121e3cd8]
Login
Overview
Comment:Added accelerated back-off in server:kind-run
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | server-log-handshaking
Files: files | file ages | folders
SHA1: 33121e3cd8d83526fd69d869afe0a3017032616f
User & Date: mrwellan on 2017-02-01 09:48:33
Other Links: branch diff | manifest | tags
Context
2017-02-01
10:50
Fixed an issue with log-rotate that was causing some run-away scenarios. check-in: a05b1e5025 user: mrwellan tags: server-log-handshaking
09:48
Added accelerated back-off in server:kind-run check-in: 33121e3cd8 user: mrwellan tags: server-log-handshaking
2017-01-31
13:20
Don't fixate on first possible best server, if it isn't good keep on looking for a good candidate check-in: 8de206008d user: mrwellan tags: server-log-handshaking
Changes

Modified server.scm from [cac20c539c] to [5c1183db18].

249
250
251
252
253
254
255
256
257
258










259
260
261


262
263
264
265
266
267
268
249
250
251
252
253
254
255



256
257
258
259
260
261
262
263
264
265



266
267
268
269
270
271
272
273
274







-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+







      (let ((sig (server:mk-signature)))
        (set! *my-client-signature* sig)
        *my-client-signature*)))

;; 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)
  (let ((last-run-time (hash-table-ref/default *server-kind-run* areapath #f)))
    (if (or (not last-run-time)
	    (> (- (current-seconds) last-run-time) 30))
  (let* ((last-run-dat (hash-table-ref/default *server-kind-run* areapath '(0 0))) ;; callnum, whenrun
         (call-num     (car last-run-dat))
         (when-run     (cadr last-run-dat))
         (run-delay    (+ (case call-num
                            ((0)    0)
                            ((1)   20)
                            ((2)  300)
                            (else 600))
                          (random 5)))) ;; add a small random number just in case a lot of jobs hit the work hosts simultaneously
    (if	(> (- (current-seconds) when-run) run-delay)
	(begin
	  (server:run areapath)
	  (hash-table-set! *server-kind-run* areapath (current-seconds))))))
        (server:run areapath))
    (hash-table-set! *server-kind-run* areapath (list (+ call-num 1)(current-seconds)))))

(define (server:start-and-wait areapath #!key (timeout 60))
  (let ((give-up-time (+ (current-seconds) timeout)))
    (let loop ((server-url (server:check-if-running areapath)))
      (if (or server-url
	      (> (current-seconds) give-up-time))
	  server-url