Overview
Comment: | Trimmed use of some globals. Removed use of mutex - nb// bit risky, unsure if there are consequences |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | v1.65-wip |
Files: | files | file ages | folders |
SHA1: |
1d3928260aa5e7503ca7ccdf71236c98 |
User & Date: | mrwellan on 2019-10-09 23:15:54 |
Other Links: | branch diff | manifest | tags |
Context
2019-10-12
| ||
23:07 | More globals consolidation check-in: 78799c8e55 user: mrwellan tags: v1.65-wip | |
2019-10-09
| ||
23:15 | Trimmed use of some globals. Removed use of mutex - nb// bit risky, unsure if there are consequences check-in: 1d3928260a user: mrwellan tags: v1.65-wip | |
2019-10-04
| ||
00:50 | Closer - and further away than ever. check-in: f6d852ea54 user: matt tags: v1.65-wip | |
Changes
Modified common_records.scm from [8ea3eb84a5] to [5a3a3c2d75].
︙ | ︙ | |||
23 24 25 26 27 28 29 | ;; globals - modules that include this need these here (define *verbosity-cache* (make-hash-table)) (define *verbosity* 0) (define *default-log-port* (current-error-port)) (define *logging* #f) (define *functions* (make-hash-table)) ;; symbol => fn | | | | | | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | ;; globals - modules that include this need these here (define *verbosity-cache* (make-hash-table)) (define *verbosity* 0) (define *default-log-port* (current-error-port)) (define *logging* #f) (define *functions* (make-hash-table)) ;; symbol => fn ;; (define *toppath* #f) (define *transport-type* 'http) (define (exec-fn fn . params) (if (hash-table-exists? *functions* fn) (apply (hash-table-ref *functions* fn) params) #f)) (define (set-fn fn-name fn) (hash-table-set! *functions* fn-name fn)) (include "altdb.scm") (defstruct remote (hh-dat #f) ;; (exec-fn 'common:get-homehost)) ;; homehost record ( addr . hhflag ) (server-url #f) ;; (if *toppath* (exec-fn 'server:check-if-running *toppath*))) ;; (server:check-if-running *toppath*) #f)) (last-server-check 0) ;; last time we checked to see if the server was alive (conndat #f) (transport *transport-type*) (server-timeout #f) ;; (exec-fn 'server:expiration-timeout)) (force-server #f) (ro-mode #f) (ro-mode-checked #f) ;; flag that indicates we have checked for ro-mode (ulex:conn #f) ;; ulex db conn is not exactly a db connector, more like a network connector ) |
︙ | ︙ |
Modified rmt.scm from [c91853a277] to [caff9c5891].
︙ | ︙ | |||
67 68 69 70 71 72 73 | (let* ((areapath *toppath*);; TODO - resolve from dbstruct to be compatible with multiple areas (runremote (or area-dat *runremote*))) ;; ensure we have a record for our connection for given area (if (not runremote) ;; can remove this one. should never get here. (begin (set! *runremote* (make-remote)) | > > > | | | 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | (let* ((areapath *toppath*);; TODO - resolve from dbstruct to be compatible with multiple areas (runremote (or area-dat *runremote*))) ;; ensure we have a record for our connection for given area (if (not runremote) ;; can remove this one. should never get here. (begin (set! *runremote* (make-remote)) (set! runremote *runremote*) (remote-server-timeout-set! runremote (server:expiration-timeout)) (remote-hh-dat-set! runremote (common:get-homehost )) )) ;; new runremote will come from this on next iteration (if (member cmd '(blah)) (begin (mutex-lock! *send-receive-mutex*) (if (not *runremote*)(set! *runremote* (make-remote))) (let ((ulex:conn (remote-ulex:conn *runremote*))) (if (not ulex:conn)(remote-ulex:conn-set! *runremote* (rmtmod:setup-ulex areapath))) (rmtmod:send-receive-ulex ulex:conn cmd rid params attemptnum area-dat))) (rmt:send-receive-orig *default-log-port* runremote *rmt-mutex* areapath *db-multi-sync-mutex* cmd rid params attemptnum: attemptnum area-dat: area-dat ro-queries: api:read-only-queries)))) ;; RA => e.g. usage (rmt:send-receive 'get-var #f (list varname)) ;; ;; add multi-sync-mutex ;; |
︙ | ︙ | |||
102 103 104 105 106 107 108 | ;; (let* ((start-time (current-seconds)) ;; snapshot time so all use cases get same value (readonly-mode (rmtmod:calc-ro-mode runremote toppath))) ;; ensure we have a homehost record (if (not (pair? (remote-hh-dat runremote))) ;; not on homehost | < | 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | ;; (let* ((start-time (current-seconds)) ;; snapshot time so all use cases get same value (readonly-mode (rmtmod:calc-ro-mode runremote toppath))) ;; ensure we have a homehost record (if (not (pair? (remote-hh-dat runremote))) ;; not on homehost (remote-hh-dat-set! runremote (common:get-homehost))) ;;(print "BB> readonly-mode is "readonly-mode" dbfile is "dbfile) (cond ;; give up if more than 15 attempts ((> attemptnum 15) (debug:print 0 log-port "ERROR: 15 tries to start/connect to server. Giving up.") |
︙ | ︙ |
Modified rmtmod.scm from [5d21778e4d] to [f770615499].
︙ | ︙ | |||
120 121 122 123 124 125 126 | (define (extras-readonly-mode rmt-mutex log-port cmd params) ;;(mutex-unlock! rmt-mutex) (debug:print-info 12 log-port "rmt:send-receive, case 3") (debug:print 0 log-port "WARNING: write transaction requested on a readonly area. cmd="cmd" params="params) #f) | | | | | | | | | | > | | 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 | (define (extras-readonly-mode rmt-mutex log-port cmd params) ;;(mutex-unlock! rmt-mutex) (debug:print-info 12 log-port "rmt:send-receive, case 3") (debug:print 0 log-port "WARNING: write transaction requested on a readonly area. cmd="cmd" params="params) #f) (define (extras-transport-failed log-port rmt-mutex attemptnum runremote cmd rid params) (debug:print 0 log-port "WARNING: communication failed. Trying again, try num: " attemptnum) ;;(mutex-lock! rmt-mutex) (remote-conndat-set! runremote #f) (http-transport:close-connections area-dat: runremote) (remote-server-url-set! runremote #f) ;;(mutex-unlock! rmt-mutex) (debug:print-info 12 log-port "rmt:send-receive, case 9.1") (rmt:send-receive cmd rid params attemptnum: (+ attemptnum 1))) (define (extras-transport-succeded log-port rmt-mutex attemptnum runremote res params rid cmd) (if (and (vector? res) (eq? (vector-length res) 2) (eq? (vector-ref res 1) 'overloaded)) ;; since we are ;; looking at the ;; data to carry the ;; error we'll use a ;; fairly obtuse ;; combo to minimise ;; the chances of ;; some sort of ;; collision. this ;; is the case where ;; the returned data ;; is bad or the ;; server is ;; overloaded and we ;; want to ease off ;; the queries (let ((wait-delay (+ attemptnum (* attemptnum 10)))) (debug:print 0 log-port "WARNING: server is overloaded. Delaying " wait-delay " seconds and trying call again.") ;;(mutex-lock! rmt-mutex) (http-transport:close-connections area-dat: runremote) ;; (set! *runremote* #f) ;; force starting over (remote-server-url-set! runremote #f) ;; I am hoping this will force a redo on server connection. NOT TESTED ;;(mutex-unlock! rmt-mutex) (thread-sleep! wait-delay) (rmt:send-receive cmd rid params attemptnum: (+ attemptnum 1))) res)) ;; All good, return res ;;====================================================================== ;; ulex and steps stuff ;;====================================================================== |
︙ | ︙ |