194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
|
(debug:print-info 12 *default-log-port* "rmt:send-receive, case 5")
(rmt:open-qry-close-locally cmd 0 params))
;;DOT CASE6 [label="init\nremote"];
;;DOT MUTEXLOCK -> CASE6 [label="on homehost,\nwrite query,\nhave server,\ncan't reach it"]; {rank=same "case 6" CASE6};
;;DOT CASE6 -> "rmt:send-receive";
;; on homehost and this is a write, we already have a server, but server has died
((and (cdr (remote-hh-dat runremote)) ;; on homehost
(not (member cmd api:read-only-queries)) ;; this is a write
(remote-server-url runremote) ;; have a server
(not (server:ping (remote-server-url runremote) (remote-server-id runremote)))) ;; server has died. NOTE: this is not a cheap call! Need better approach.
(debug:print 0 *default-log-port* "WARNING: server appears to have died, trying to reconnect, case 6")
(http-transport:close-connections area-dat: runremote) ;; make sure to clean up
(set! *runremote* (make-remote))
(let* ((server-info (remote-server-info *runremote*)))
|
>
>
>
|
|
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
|
(debug:print-info 12 *default-log-port* "rmt:send-receive, case 5")
(rmt:open-qry-close-locally cmd 0 params))
;;DOT CASE6 [label="init\nremote"];
;;DOT MUTEXLOCK -> CASE6 [label="on homehost,\nwrite query,\nhave server,\ncan't reach it"]; {rank=same "case 6" CASE6};
;;DOT CASE6 -> "rmt:send-receive";
;; on homehost and this is a write, we already have a server, but server has died
;; reinstate this keep-alive section but inject a time condition into the (add ...
#;((and (cdr (remote-hh-dat runremote)) ;; on homehost
(not (member cmd api:read-only-queries)) ;; this is a write
(remote-server-url runremote) ;; have a server
(not (server:ping (remote-server-url runremote) (remote-server-id runremote)))) ;; server has died. NOTE: this is not a cheap call! Need better approach.
(debug:print 0 *default-log-port* "WARNING: server appears to have died, trying to reconnect, case 6")
(http-transport:close-connections area-dat: runremote) ;; make sure to clean up
(set! *runremote* (make-remote))
(let* ((server-info (remote-server-info *runremote*)))
|