Megatest

Check-in [224048bd19]
Login
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: 224048bd1995aca9704c0bd8e3702b3da8d89b13
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
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
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))
         (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)