Index: db.scm ================================================================== --- db.scm +++ db.scm @@ -2878,11 +2878,12 @@ (if (> tries 0) (begin (thread-sleep! 1) (db:keep-trying-until-true proc params (- tries 1))) (begin - (debug:print-info 0 *default-log-port* "proc never returned true, params="params) + ;; (debug:print-info 0 *default-log-port* "proc never returned true, params="params) + (print"db:keep-trying-until-true proc never returned true, proc = " proc " params =" params " tries = " tries) #f))))) (define (db:get-test-info dbstruct run-id test-name item-path) (db:with-db dbstruct Index: dbfile.scm ================================================================== --- dbfile.scm +++ dbfile.scm @@ -485,10 +485,11 @@ (define (db:no-sync-del! db var) (sqlite3:execute db "DELETE FROM no_sync_metadat WHERE var=?;" var)) (define (db:no-sync-get/default db var default) + (assert (sqlite3:database? db) "FATAL: db:no-sync-get/default called with a bad db handle:" db) (let ((res default)) (sqlite3:for-each-row (lambda (val) (set! res val)) db @@ -1346,11 +1347,21 @@ (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) - (assert #t "FATAL: simple file lock never got a lock.")))) + (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")) + ) + ) + ) +) + (define *get-cache-stmth-mutex* (make-mutex)) (define (db:get-cache-stmth dbdat db stmt) (mutex-lock! *get-cache-stmth-mutex*) Index: dbmod.scm ================================================================== --- dbmod.scm +++ dbmod.scm @@ -147,24 +147,22 @@ (dbpath (dbmod:get-dbdir dbstruct)) ;; directory where all the .db files are kept (dbfullname (conc dbpath"/"dbfname)) ;; (dbmod:run-id->full-dbfname dbstruct run-id)) (dbexists (file-exists? dbfullname)) (inmem (dbmod:open-inmem-db init-proc)) (write-access (file-write-access? dbpath)) - (open-the-db (lambda () - (dbfile:with-simple-file-lock + (db (dbfile:with-simple-file-lock (conc dbfullname".lock") (lambda () (let* ((db (sqlite3:open-database dbfullname)) (handler (sqlite3:make-busy-timeout 136000))) (sqlite3:set-busy-handler! db handler) (if write-access (init-proc db)) - db))))) - (db ;; (if (dbmod:need-on-disk-db-handle) - (open-the-db)) -;; #f)) + db)))) (tables (db:sync-all-tables-list keys))) + (assert (sqlite3:database? inmem) "FATAL: open-dbmoddb: inmem is not a db") + (assert (sqlite3:database? db) "FATAL: open-dbmoddb: db is not a db") (dbr:dbstruct-inmem-set! dbstruct inmem) (dbr:dbstruct-ondiskdb-set! dbstruct db) (dbr:dbstruct-dbfile-set! dbstruct dbfullname) (dbr:dbstruct-dbfname-set! dbstruct dbfname) (dbr:dbstruct-sync-proc-set! dbstruct @@ -183,10 +181,12 @@ ;; (dbmod:sync-tables tables last-update db inmem)))) ;; direction: 'fromdest 'todest ;; (define (dbmod:sync-gasket tables last-update inmem dbh dbfname direction) + (assert (sqlite3:database? inmem) "FATAL: sync-gasket: inmem is not a db") + (assert (sqlite3:database? inmem) "FATAL: sync-gasket: dbh is not a db") (case (dbfile:sync-method) ((none) #f) ((attach) (dbmod:attach-sync tables inmem dbfname direction)) ((newsync)