Index: common.scm ================================================================== --- common.scm +++ common.scm @@ -52,10 +52,11 @@ ;; DATABASE (define *dbstruct-db* #f) (define *db-stats* (make-hash-table)) ;; hash of vectors < count duration-total > (define *db-stats-mutex* (make-mutex)) (define *db-sync-mutex* (make-mutex)) +(define *db-multi-sync-mutex* (make-mutex)) (define *db-local-sync* (make-hash-table)) ;; used to record last touch of db (define *megatest-db* #f) (define *last-db-access* (current-seconds)) ;; update when db is accessed via server (define *db-write-access* #t) (define *inmemdb* #f) Index: rmt.scm ================================================================== --- rmt.scm +++ rmt.scm @@ -150,18 +150,18 @@ (duration (- (current-milliseconds) start))) (rmt:update-db-stats cmd params duration) ;; mark this run as dirty if this was a write (if (not (member cmd api:read-only-queries)) (let ((start-time (current-seconds))) - (mutex-lock! *db-sync-mutex*) + (mutex-lock! *db-multi-sync-mutex*) (let ((last-sync (hash-table-ref/default *db-local-sync* run-id 0))) (if (> (- start-time last-sync) 5) ;; every five seconds (begin (db:multi-db-sync (list run-id) 'new2old) (debug:print-info 0 "Sync of newdb to olddb for run-id " run-id " completed in " (- (current-seconds) start-time) " seconds") (hash-table-set! *db-local-sync* run-id start-time)))) - (mutex-unlock! *db-sync-mutex*))) + (mutex-unlock! *db-multi-sync-mutex*))) res))) (define (rmt:send-receive-no-auto-client-setup connection-info cmd run-id params) (let* ((run-id (if run-id run-id 0)) (jparams (db:obj->string params)) ;; (rmt:dat->json-str params))