Overview
Comment: | Taper the sleeps depending on how many times through the send-receive procedure. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | v1.65 |
Files: | files | file ages | folders |
SHA1: |
224048bd1995aca9704c0bd8e3702b3d |
User & Date: | mrwellan on 2020-01-28 13:57:39 |
Other Links: | branch diff | manifest | tags |
Context
2020-01-28
| ||
14:59 | Tweak heuristics on attemptnum sleeps check-in: 844ff4c128 user: mrwellan tags: v1.65 | |
13:57 | Taper the sleeps depending on how many times through the send-receive procedure. check-in: 224048bd19 user: mrwellan tags: v1.65 | |
10:54 | Attempt to fix the 'infinite read-only checking' bug'. Not working fully check-in: 578c1ae242 user: jmoon18 tags: v1.65 | |
Changes
Modified rmt.scm from [da7473fc64] to [46ee8b9727].
︙ | ︙ | |||
78 79 80 81 82 83 84 | ;; 2. check the age of the connections. refresh the connection if it is older than timeout-20 seconds. ;; 3. do the query, if on homehost use local access ;; (let* ((start-time (current-seconds)) ;; snapshot time so all use cases get same value (areapath *toppath*);; TODO - resolve from dbstruct to be compatible with multiple areas (runremote (or area-dat *runremote*)) | | > > > > > > > | 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | ;; 2. check the age of the connections. refresh the connection if it is older than timeout-20 seconds. ;; 3. do the query, if on homehost use local access ;; (let* ((start-time (current-seconds)) ;; snapshot time so all use cases get same value (areapath *toppath*);; TODO - resolve from dbstruct to be compatible with multiple areas (runremote (or area-dat *runremote*)) (attemptnum (+ 1 attemptnum)) (readonly-mode (rmtmod:calc-ro-mode runremote *toppath*))) ;; DOT INIT_RUNREMOTE; // leaving off - doesn't really add to the clarity ;; DOT MUTEXLOCK -> INIT_RUNREMOTE [label="no remote?"]; ;; DOT INIT_RUNREMOTE -> MUTEXLOCK; ;; 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*))) ;; new runremote will come from this on next iteration ;; DOT SET_HOMEHOST; // leaving off - doesn't really add to the clarity ;; DOT MUTEXLOCK -> SET_HOMEHOST [label="no homehost?"]; ;; DOT SET_HOMEHOST -> MUTEXLOCK; ;; ensure we have a homehost record (if (not (pair? (remote-hh-dat runremote))) ;; not on homehost (thread-sleep! 0.1) ;; since we shouldn't get here, delay a little (remote-hh-dat-set! runremote (common:get-homehost))) (cond ((> attemptnum 1) (thread-sleep! 0.1)) ((> attemptnum 5) (thread-sleep! 0.5)) ((> attemptnum 10) (debug:print 1 "INFO: attemptnum in rmt:send-receive is " attemptnum) (thread-sleep! (/ attemptnum 5)))) ;;(print "BB> readonly-mode is "readonly-mode" dbfile is "dbfile) (cond ;;DOT EXIT; ;;DOT MUTEXLOCK -> EXIT [label="> 15 attempts"]; {rank=same "case 1" "EXIT" } ;; give up if more than 15 attempts ((> attemptnum 15) |
︙ | ︙ |