Megatest

Check-in [ffc3c2a09d]
Login
Overview
Comment:Hack to turn off multi-db-handles
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | v1.70
Files: files | file ages | folders
SHA1: ffc3c2a09db9bab809ee8e0fbfb271f78a531305
User & Date: matt on 2022-10-23 19:40:02
Other Links: branch diff | manifest | tags
Context
2022-10-25
17:36
Changed version to v1.7008 check-in: e82a5949b2 user: mmgraham tags: v1.70, v1.7008
2022-10-23
19:40
Hack to turn off multi-db-handles check-in: ffc3c2a09d user: matt tags: v1.70
10:57
Improved db stats collection and switch to using WAL in /tmp check-in: 2180fd1986 user: matt tags: v1.70
Changes

Modified dbfile.scm from [162c384c6c] to [2d10dcee17].

274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293








294
295
296
297
298
299
300
274
275
276
277
278
279
280

281
282
283
284
285
286
287
288
289



290
291
292
293
294
295
296
297
298
299
300
301
302
303
304







-









-
-
-
+
+
+
+
+
+
+
+







;;     it to the stack).
;;
(define (dbfile:open-db dbstruct run-id init-proc)
  (if (> *dbfile:num-handles-in-use* 10)
      (let* ((wait-delay (- *dbfile:num-handles-in-use* 9)))
	(dbfile:print-err "INFO: over ten dbfile handle threads in use ("*dbfile:num-handles-in-use*") delaying "wait-delay" second")
	(thread-sleep! wait-delay)))
  
  (let* ((subdb (dbfile:get-subdb dbstruct run-id)))
    (if (not subdb) ;; not yet defined
	(begin
	  (dbfile:init-subdb dbstruct run-id init-proc)
	  (dbfile:open-db dbstruct run-id init-proc))
	(let* ((dbdat (dbfile:get-dbdat dbstruct run-id)))
	  (if dbdat
	      dbdat
	      (let* ((tmppath   (dbr:dbstruct-tmppath  dbstruct))
		     (tmpdbpath (dbfile:run-id->path tmppath run-id)))
		(dbfile:open-sqlite3-db tmpdbpath init-proc sync-mode: 0 journal-mode: "WAL")))))))

		     (tmpdbpath (dbfile:run-id->path tmppath run-id))
		     (dbdat     (dbfile:open-sqlite3-db tmpdbpath init-proc sync-mode: 0 journal-mode: "WAL")))
		;; the following line short-circuits the "one db handle per thread" model
		;; 
		(dbfile:add-dbdat dbstruct run-id dbdat)
		;;
		dbdat))))))
    
;; COMBINE dbfile:open-sqlite-db and dbfile:lock-create-open
;;

;; this stuff is for initial debugging, please remove it when
;; this code stabilizes
(define *dbopens* (make-hash-table))
(define (dbfile:inc-db-open dbfile)