Megatest

Check-in [a66741d98b]
Login
Overview
Comment:deadlock msg
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | rpc-transport
Files: files | file ages | folders
SHA1: a66741d98be9471be07dd739e56a9ab7a6bd6605
User & Date: bjbarcla on 2016-11-16 14:45:45
Other Links: branch diff | manifest | tags
Context
2016-11-16
16:06
did some cleanup check-in: acd56658eb user: bjbarcla tags: rpc-transport
14:45
deadlock msg check-in: a66741d98b user: bjbarcla tags: rpc-transport
2016-11-15
18:14
fixed bug where client stopped working when server needed restart (cached rpc stub was not refreshing when port changed) check-in: cf3341f204 user: bjbarcla tags: rpc-transport
Changes

Modified rmt.scm from [d69ae51ab1] to [8fafeb1080].

121
122
123
124
125
126
127
128

129
130
131
132
133
134
135
121
122
123
124
125
126
127

128
129
130
131
132
133
134
135







-
+







(define (rmt:send-receive cmd rid params #!key (attemptnum 1)) ;; start attemptnum at 1 so the modulo below works as expected
  ;; side-effect: clean out old connections

  (when (eq? (modulo attemptnum 5) 0)
    (debug:print-error 0 *default-log-port* "rmt:send-receive did not succeed after "(sub1 attemptnum)" tries.  Aborting. (cmd="cmd" rid="rid" param="params)
    (exit 1))

  (mutex-lock! *rmt:srmutex*)
  (mutex-lock! *rmt:srmutex*) ;; deadlock is here!

  ;; expire connections
  (let ((expire-time (- (current-seconds) (server:get-timeout) 10))) ;; don't forget the 10 second margin
    (for-each 
     (lambda (run-id)
       (let ((connection (rmt:get-cinfo run-id)))
         (if (and (vector? connection)