152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
(set! *time-to-exit* #t)
;;(if *dbstruct-db* (db:sync-touched *dbstruct-db* *run-id* force-sync: #t))
(server:remove-dotserver-file *toppath* "anyhost:anyport" force: #t)
(tasks:server-delete-record (db:delay-if-busy (tasks:open-db)) server-id " rpc-transport:keep-running complete")
;;(BB> "Before (exit) (from-on-exit="from-on-exit")")
;;(unless from-on-exit (exit)) ;; sometimes we hang (around) here with 100% cpu.
;;(BB> "After")
;; strace reveals endless:
;; getrusage(RUSAGE_SELF, {ru_utime={413, 917868}, ru_stime={0, 60003}, ...}) = 0
;; getrusage(RUSAGE_SELF, {ru_utime={414, 9874}, ru_stime={0, 60003}, ...}) = 0
;; getrusage(RUSAGE_SELF, {ru_utime={414, 13874}, ru_stime={0, 60003}, ...}) = 0
|
|
|
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
(set! *time-to-exit* #t)
;;(if *dbstruct-db* (db:sync-touched *dbstruct-db* *run-id* force-sync: #t))
(server:remove-dotserver-file *toppath* "anyhost:anyport" force: #t)
(tasks:server-delete-record (db:delay-if-busy (tasks:open-db)) server-id " rpc-transport:keep-running complete")
(rpc:close-all-connections!)
;;(BB> "Before (exit) (from-on-exit="from-on-exit")")
;;(unless from-on-exit (exit)) ;; sometimes we hang (around) here with 100% cpu.
;;(BB> "After")
;; strace reveals endless:
;; getrusage(RUSAGE_SELF, {ru_utime={413, 917868}, ru_stime={0, 60003}, ...}) = 0
;; getrusage(RUSAGE_SELF, {ru_utime={414, 9874}, ru_stime={0, 60003}, ...}) = 0
;; getrusage(RUSAGE_SELF, {ru_utime={414, 13874}, ru_stime={0, 60003}, ...}) = 0
|
274
275
276
277
278
279
280
281
282
283
284
285
286
287
|
;;
(define (rpc-transport:client-api-send-receive run-id serverdat cmd params #!key (numretries 3))
;;(BB> "entered rpc-transport:client-api-send-receive with run-id="run-id " serverdat="serverdat" cmd="cmd" params="params" numretries="numretries)
(if (not (vector? serverdat))
(begin
(BB> "WHAT?? for run-id="run-id", serverdat="serverdat)
(print-call-chain)
(exit 1)))
(let* ((iface (rpc-transport:server-dat-get-iface serverdat))
(port (rpc-transport:server-dat-get-port serverdat))
(res #f)
(api-exec (rpc-transport:get-api-exec iface port)) ;; chached by host/port. may need to clear...
(send-receive (lambda ()
(tcp-buffer-size 0)
|
>
|
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
|
;;
(define (rpc-transport:client-api-send-receive run-id serverdat cmd params #!key (numretries 3))
;;(BB> "entered rpc-transport:client-api-send-receive with run-id="run-id " serverdat="serverdat" cmd="cmd" params="params" numretries="numretries)
(if (not (vector? serverdat))
(begin
(BB> "WHAT?? for run-id="run-id", serverdat="serverdat)
(print-call-chain)
(rpc:close-all-connections!)
(exit 1)))
(let* ((iface (rpc-transport:server-dat-get-iface serverdat))
(port (rpc-transport:server-dat-get-port serverdat))
(res #f)
(api-exec (rpc-transport:get-api-exec iface port)) ;; chached by host/port. may need to clear...
(send-receive (lambda ()
(tcp-buffer-size 0)
|
305
306
307
308
309
310
311
312
313
314
315
316
317
318
|
))
(th1 (make-thread send-receive "send-receive"))
(time-out-reached #f)
(time-out (lambda ()
(thread-sleep! 45)
(set! time-out-reached #t)
(thread-terminate! th1)
#f))
(th2 (make-thread time-out "time out")))
(thread-start! th1)
(thread-start! th2)
(thread-join! th1)
(thread-terminate! th2)
|
>
|
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
|
))
(th1 (make-thread send-receive "send-receive"))
(time-out-reached #f)
(time-out (lambda ()
(thread-sleep! 45)
(set! time-out-reached #t)
(thread-terminate! th1)
#f))
(th2 (make-thread time-out "time out")))
(thread-start! th1)
(thread-start! th2)
(thread-join! th1)
(thread-terminate! th2)
|