Index: runsmod.scm ================================================================== --- runsmod.scm +++ runsmod.scm @@ -253,11 +253,11 @@ (define (runs:too-soon-delay key dseconds wseconds) (let* ((last-time (hash-table-ref/default *too-soon-delays* key #f))) (if (and last-time (< (- (current-seconds) last-time) dseconds)) (begin - (debug:print-info 0 *default-log-port* "Whoa, slow down there ... "key" has been too recently seen.") + (debug:print-info 4 *default-log-port* "Whoa, slow down there ... "key" has been too recently seen.") (thread-sleep! wseconds))) (hash-table-set! *too-soon-delays* key (current-seconds)))) (define (runs:can-run-more-tests runsdat run-id jobgroup max-concurrent-jobs) Index: ulex-simple/ulex.scm ================================================================== --- ulex-simple/ulex.scm +++ ulex-simple/ulex.scm @@ -147,21 +147,22 @@ (else obj))) ;; rpc (define (string->obj msg #!key (transport 'http)) (case (serializing-method) ((complex) - (if (string? msg) - (with-input-from-string - (z3:decode-buffer - (base64:base64-decode - (string-substitute - (regexp "_") "=" msg #t))) - (lambda ()(deserialize))) - (begin - (print "ULEX ERROR: cannot translate received data \""msg"\"") - (print-call-chain (current-error-port)) - msg))) ;; crude reply for when things go awry + (handle-exceptions + exn + (begin + (print "ULEX ERROR: cannot translate received data \""msg"\"") + (print-call-chain (current-error-port)) + msg) + (with-input-from-string + (z3:decode-buffer + (base64:base64-decode + (string-substitute + (regexp "_") "=" msg #t))) + (lambda ()(deserialize))))) ((write)(with-input-from-string msg (lambda ()(read)))) ((s11n)(with-input-from-string msg (lambda ()(deserialize)))) (else msg))) ;; rpc @@ -256,16 +257,16 @@ ;; dat is a self-contained work block that can be sent or handled locally (dat (list my-host-port 'qrykey cmd params #;(cons (current-seconds)(current-milliseconds))))) (cond (isme (do-work udata dat)) ;; no transmission needed (else - ;; (handle-exceptions ;; TODO - MAKE THIS EXCEPTION CMD SPECIFIC? - ;; exn - ;; (begin - ;; (print "ULEX send-receive: exn="exn) - ;; (message exn)) - ;; (begin + (handle-exceptions ;; TODO - MAKE THIS EXCEPTION CMD SPECIFIC? + exn + (begin + (print "ULEX send-receive: "cmd", "params", exn="exn) + (message exn)) + (begin ;; (mutex-lock! *send-mutex*) ;; DOESN'T SEEM TO HELP (let-values (((inp oup)(tcp-connect host port))) (let ((res (if (and inp oup) (begin (write (obj->string dat) oup) @@ -280,11 +281,11 @@ (print "ERROR: send called but no receiver has been setup. Please call setup first!") #f)))) ;; (close-output-port oup) (close-input-port inp) ;; (mutex-unlock! *send-mutex*) ;; DOESN'T SEEM TO HELP - res))))));; )) ;; res will always be 'ack unless return-method is direct + res)))))))) ;; res will always be 'ack unless return-method is direct ;;====================================================================== ;; work queues - this is all happening on the listener side ;;======================================================================