Index: newdashboard.scm ================================================================== --- newdashboard.scm +++ newdashboard.scm @@ -381,10 +381,13 @@ ;; the synchash calls modify the "data" hash (synchash:client-get 'db:get-runs "get-runs" (length keypatts) data runname #f #f keypatts) ;; Now can calculate the run-ids (let* ((run-hash (hash-table-ref/default data "get-runs" #f)) (run-ids (if run-hash (filter number? (hash-table-keys run-hash)) '()))) + ;; (debug:print-info 2 "run-hash-keys: " (hash-table-keys run-hash)) + ;; (debug:print-info 2 "run-hash: ")(pp (hash-table->alist run-hash)) + ;; (debug:print-info 2 "run-ids: " run-ids) (synchash:client-get 'db:get-tests-for-runs "get-tests-for-runs" 0 data run-ids testpatt states statuses)))) (define (newdashboard) (let* ((data (make-hash-table)) (keys (cdb:remote-run db:get-keys #f)) Index: synchash.scm ================================================================== --- synchash.scm +++ synchash.scm @@ -51,11 +51,13 @@ (if (not (member id found)) (begin (set! deleted (cons id deleted)) (hash-table-delete! synchash id)))) orig-keys) - (list changed deleted))) + (list changed deleted) + ;; (list indat '()) ;; just for debugging + )) ;; (cdb:remote-run db:get-keys #f) ;; (cdb:remote-run db:get-num-runs #f "%") ;; (cdb:remote-run db:get-runs #f runnamepatt numruns *start-run-offset* keypatts) ;; @@ -62,28 +64,34 @@ ;; keynum => the field to use as the unique key (usually 0 but can be other field) ;; (define (synchash:client-get proc synckey keynum synchash . params) (let* ((data (apply cdb:remote-run synchash:server-get #f proc synckey keynum params)) (newdat (car data)) - (removs (cadr data))) + (removs (cadr data)) + (myhash (hash-table-ref/default synchash synckey #f))) + (if (not myhash) + (begin + (set! myhash (make-hash-table)) + (hash-table-set! synchash synckey myhash))) (for-each (lambda (item) (let ((id (car item)) (dat (cadr item))) - (hash-table-set! synchash id dat))) + ;; (debug:print-info 2 "Processing item: " item) + (hash-table-set! myhash id dat))) newdat) (for-each (lambda (id) - (hash-table-delete! synchash id)) + (hash-table-delete! myhash id)) removs) synchash)) (define *synchashes* (make-hash-table)) (define (synchash:server-get db proc synckey keynum . params) - (debug:print 2 "synckey: " synckey ", keynum: " keynum ", params: " params) + ;; (debug:print-info 2 "synckey: " synckey ", keynum: " keynum ", params: " params) (let* ((synchash (hash-table-ref/default *synchashes* synckey #f)) (newdat (apply (case proc ((db:get-runs) db:get-runs) ((db:get-tests-for-runs) db:get-tests-for-runs) (else print)) @@ -92,19 +100,21 @@ (make-indexed (lambda (x) (list (vector-ref x keynum) x)))) ;; Now process newdat based on the query type (set! postdat (case proc ((db:get-runs) - (debug:print 2 "Get runs call") + ;; (debug:print-info 2 "Get runs call") (let ((header (vector-ref newdat 0)) (data (vector-ref newdat 1))) - (list (list "header" header) ;; add the header keyed by the word "header" + ;; (debug:print-info 2 "header: " header ", data: " data) + (cons (list "header" header) ;; add the header keyed by the word "header" (map make-indexed data)))) ;; add each element keyed by the keynum'th val (else - (debug:print 2 "Non-get runs call") + ;; (debug:print-info 2 "Non-get runs call") (map make-indexed newdat)))) + ;; (debug:print-info 2 "postdat: " postdat) (if (not synchash) (begin (set! synchash (make-hash-table)) (hash-table-set! *synchashes* synckey synchash))) (synchash:get-delta postdat synchash)))