Index: dbmod.scm ================================================================== --- dbmod.scm +++ dbmod.scm @@ -423,11 +423,11 @@ (start-t (current-seconds)) (last-update (dbr:dbdat-last-write dbdat)) (last-sync (dbr:dbdat-last-sync dbdat))) (debug:print-info 0 *default-log-port* "Syncing for dbfile: "dbfile", last-update: "last-update", last-sync: "last-sync) (mutex-lock! *db-multi-sync-mutex*) - (let* ((update_info (cons (if force-sync 0 last-update) "last_update")) + (let* ((update_info (cons "last_update" (if force-sync 0 last-update))) ;; "last_update")) (need-sync (or force-sync (>= last-update last-sync)))) (if need-sync (begin (db:sync-tables (db:sync-all-tables-list) update_info inmem db) (dbr:dbdat-last-sync-set! dbdat start-t)) @@ -650,17 +650,20 @@ (let* ((tablename (car tabledat)) (fields (cdr tabledat)) (has-last-update (member "last_update" fields)) (use-last-update (cond ((and has-last-update - (member "last_update" fields)) + (number? last-update)) #t) ;; if given a number, just use it for all fields - ((number? last-update) #f) ;; if not matched first entry then ignore last-update for this table ((and (pair? last-update) (member (car last-update) ;; last-update field name (map car fields))) #t) + ((pair? last-update) + (debug:print 0 *default-log-port* "ERROR: parameter last-update malformed. last-update="last-update) + #f) + ((number? last-update) #f) ;; if not matched first entry then ignore last-update for this table (last-update (debug:print 0 *default-log-port* "ERROR: parameter last-update for db:sync-tables must be a pair or a number, received: " last-update);; found in fields #f) (else #f)))