Index: db.scm ================================================================== --- db.scm +++ db.scm @@ -1409,11 +1409,14 @@ (debug:print-info 7 "Received " response " from wrapped write") (server:reply return-address qry-sig response response)) ;; otherwise if appropriate flush the queue (this is a read or complex query) (begin (case *transport-type* - ((http)(db:process-cached-writes db))) + ((http) + (mutex-lock! *db:process-queue-mutex*) + (db:process-cached-writes db) + (mutex-unlock! *db:process-queue-mutex*))) (cond ((member stmt-key db:special-queries) (debug:print-info 11 "Handling special statement " stmt-key) (case stmt-key ((immediate) Index: server.scm ================================================================== --- server.scm +++ server.scm @@ -66,11 +66,13 @@ ;; has already been done? (define (server:write-queue-handler) (if (setup-for-run) (let ((db (open-db))) (let loop () + (mutex-lock! *db:process-queue-mutex*) (db:process-cached-writes db) + (mutex-unlock! *db:process-queue-mutex*) (thread-sleep! 0.3) (loop))) (begin (debug:print 0 "ERROR: failed to setup for Megatest in server:write-queue-handler") (exit 1))))