Megatest

Check-in [532f050f93]
Login
Overview
Comment:Removed assert from simple lock. Removed use of statement cache which fixed bind issues
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | v1.80
Files: files | file ages | folders
SHA1: 532f050f9396ab3ae95dcece4f7a04bde782f69d
User & Date: matt on 2023-04-08 02:45:33
Other Links: branch diff | manifest | tags
Context
2023-04-08
11:48
Added better fallback on communication failure. check-in: 7dcbd017e3 user: matt tags: v1.80
02:45
Removed assert from simple lock. Removed use of statement cache which fixed bind issues check-in: 532f050f93 user: matt tags: v1.80
2023-04-07
08:25
Added switchable support for db on /tmp instead of inmem. Added couple asserts to help find why run-id and servers are not aligned in some cases. check-in: cfcc13973c user: matt tags: v1.80
Changes

Modified Makefile from [c999b5b258] to [9d72ba0941].

189
190
191
192
193
194
195
196
197
198



199
200
201
202
203
204
205
189
190
191
192
193
194
195



196
197
198
199
200
201
202
203
204
205







-
-
-
+
+
+







db.o ezsteps.o keys.o launch.o megatest.o monitor.o runs-for-ref.o runs.o tests.o : key_records.scm
db.o api.o : mofiles/dbmod.o mofiles/dbfile.o mofiles/debugprint.o mofiles/commonmod.o dbmod.import.o

tests.o tasks.o dashboard-tasks.o : task_records.scm

runs.o : test_records.scm

mofiles-made : $(MOFILES)
	make $(MOIMPFILES)
	touch mofiles-made
# mofiles-made : $(MOFILES)
# 	make $(MOIMPFILES)
# 	touch mofiles-made

megatest.o : megatest-fossil-hash.scm megatest-version.scm $(MOFILES) $(MOIMPFILES)

rmt.scm common.scm configf.scm dashboard-guimonitor.scm dashboard-tests.scm dashboard.scm db.scm dcommon.scm ezsteps.scm index-tree.scm items.scm keys.scm launch.scm megatest.scm monitor.scm mt.scm newdashboard.scm runconfig.scm runs.scm server.scm tdb.scm tests.scm tree.scm : common_records.scm megatest-version.scm

common_records.scm : altdb.scm

Modified db.scm from [29f5956670] to [a9fc779d25].

2773
2774
2775
2776
2777
2778
2779
2780
2781


2782
2783
2784
2785


2786
2787
2788
2789
2790
2791
2792
2773
2774
2775
2776
2777
2778
2779


2780
2781
2782
2783
2784

2785
2786
2787
2788
2789
2790
2791
2792
2793







-
-
+
+



-
+
+







;; 
(define (db:get-test-state-status-by-id dbstruct run-id test-id)
  (db:with-db
   dbstruct
   run-id
   #f
   (lambda (dbdat db)
     (let ((res   (cons #f #f))
	   (stmth (db:get-cache-stmth dbdat db "SELECT state,status FROM tests WHERE id=?;")))
     (let ((res   (cons #f #f)))
;;	   (stmth (db:get-cache-stmth dbdat db "SELECT state,status FROM tests WHERE id=?;")))
       (sqlite3:for-each-row ;; attemptnum added to hold pid of top process (not Megatest) controlling a test
	(lambda (state status)
	  (cons state status))
	stmth 
	db
	"SELECT state,status FROM tests WHERE id=?;" ;; stmth try not compiling this one - yes, this fixed the bind issue
	test-id)
       res))))

;; Use db:test-get* to access
;; Get test data using test_ids. NB// Only works within a single run!!
;;
(define (db:get-test-info-by-ids dbstruct run-id test-ids)

Modified dbfile.scm from [cf63c9cd5f] to [e15e8c336a].

1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368







1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1356
1357
1358
1359
1360
1361
1362






1363
1364
1365
1366
1367
1368
1369




1370
1371
1372
1373
1374
1375
1376







-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-







(define (dbfile:with-simple-file-lock fname proc #!key (expire-time 300))
  (let ((gotlock (dbfile:simple-file-lock-and-wait fname expire-time: expire-time)))
    (if gotlock
	(let ((res (proc)))
	  (dbfile:simple-file-release-lock fname)
	  res)
        (begin
          (dbfile:print-err "dbfile:with-simple-file-lock: " fname " is locked by " )
          (with-input-from-file fname
             (lambda ()
                (dbfile:print-err (read-line))))
	  (assert #f (conc "ERROR: simple file lock could not get a lock for " fname " in " expire-time " seconds"))
        )
          (dbfile:print-err "dbfile:with-simple-file-lock: " fname " is locked by "
			    (with-input-from-file fname
			      (lambda ()
				(dbfile:print-err (read-line)))))
	  #f)
	  #;(assert #f (conc "ERROR: simple file lock could not get a lock for " fname " in " expire-time " seconds"))
        )))
    )
  )
)


(define *get-cache-stmth-mutex* (make-mutex))

(define (db:get-cache-stmth dbdat db stmt)
  (mutex-lock! *get-cache-stmth-mutex*)
  (let* (;; (dbdat       (dbfile:get-dbdat dbstruct run-id))
	 (stmt-cache  (dbr:dbdat-stmt-cache dbdat))