Megatest

Check-in [4125fe9193]
Login
Overview
Comment:Attempt to improve server recovery in bad situations
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | server-robustness
Files: files | file ages | folders
SHA1: 4125fe9193bad10abd260a1d69dbc32af03ccd32
User & Date: matt on 2015-03-09 05:18:56
Other Links: branch diff | manifest | tags
Context
2015-03-09
05:18
Attempt to improve server recovery in bad situations Closed-Leaf check-in: 4125fe9193 user: matt tags: server-robustness
2015-03-04
08:41
Moved delay in can-run-more-tests out of the main path check-in: a0d9704d2f user: mrwellan tags: v1.60
Changes

Modified http-transport.scm from [c3c2fc0fe7] to [45038c07c5].

270
271
272
273
274
275
276
277







278
279
280
281
282
283
284
270
271
272
273
274
275
276

277
278
279
280
281
282
283
284
285
286
287
288
289
290







-
+
+
+
+
+
+
+







					   exn
					   (begin
					     (set! success #f)
					     (debug:print 0 "WARNING: failure in with-input-from-request to " fullurl ".")
					     (debug:print 0 " message: " ((condition-property-accessor 'exn 'message) exn))
					     (hash-table-delete! *runremote* run-id)
					     ;; Killing associated server to allow clean retry.")
					     (tasks:kill-server-run-id run-id)  ;; better to kill the server in the logic that called this routine?
					     ;; (tasks:kill-server-run-id run-id)  ;; better to kill the server in the logic that called this routine?

					     ;; could try to start server here, if sucessful, retry the call to with-input-from-request
					     ;; otherwise - raise the error

					     ;; (rmt:start-server run-id)
					     
					     (mutex-unlock! *http-mutex*)
					     (signal (make-composite-condition
						      (make-property-condition 'commfail 'message "failed to connect to server")))
					     "communications failed")
					   (with-input-from-request ;; was dat
					    fullurl 
					    (list (cons 'key "thekey")

Modified rmt.scm from [fbb21771c9] to [96ad5c0ce1].

106
107
108
109
110
111
112








113

114
115
116
117
118
119
120
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120

121
122
123
124
125
126
127
128







+
+
+
+
+
+
+
+
-
+







	 (connection-info (rmt:get-connection-info run-id)))
    ;; the nmsg method does the encoding under the hood (the http method should be changed to do this also)
    (if connection-info
	;; use the server if have connection info
	(let* ((dat     (case *transport-type*
			  ((http)(condition-case
				  (http-transport:client-api-send-receive run-id connection-info cmd params)
				  ((commfail)
				   (if (< attemptnum 5)
				       (begin
					 (debug:print 0 "Trying again, try number " attemptnum)
					 (hash-table-delete! *runremote* run-id)
					 (rmt:send-receive cmd rid params attemptnum: (+ attemptnum 1)))
				       (begin
					 (debug:print 0 "Giving up, try number " attemptnum)
				  ((commfail)(vector #f "communications fail"))
					 (vector #f "communications fail"))))
				  ((exn)(vector #f "other fail"))))
			  ((nmsg)(condition-case
				  (nmsg-transport:client-api-send-receive run-id connection-info cmd params)
				  ((timeout)(vector #f "timeout talking to server"))))
			  (else  (exit))))
	       (success (if (vector? dat) (vector-ref dat 0) #f))
	       (res     (if (vector? dat) (vector-ref dat 1) #f)))
257
258
259
260
261
262
263


264

265
266
267
268
269
270
271
265
266
267
268
269
270
271
272
273

274
275
276
277
278
279
280
281







+
+
-
+







	  res))))

(define (rmt:send-receive-no-auto-client-setup connection-info cmd run-id params)
  (let* ((run-id   (if run-id run-id 0))
	 ;; (jparams  (db:obj->string params)) ;; (rmt:dat->json-str params))
	 (res  	   (handle-exceptions
		    exn
		    (begin
		      (debug:print 0 "Failed in rmt:send-receive-no-auto-client-setup, cmd=" cmd ", run-id=" run-id ", params=" params)
		    #f
		       #f)
		    (http-transport:client-api-send-receive run-id connection-info cmd params))))
;;		    ((commfail) (vector #f "communications fail")))))
    (if (and res (vector-ref res 0))
	(vector-ref res 1) ;;; YES!! THIS IS CORRECT!! CHANGE IT HERE, THEN CHANGE rmt:send-receive ALSO!!!
	#f)))
;; 	(db:string->obj (vector-ref dat 1))
;; 	(begin