Overview
Comment: | Turn off inmem and fix run-id which should have been dbfile |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | v1.6584-nanomsg |
Files: | files | file ages | folders |
SHA1: |
89e269ed331371b83976d3c7fcd720bc |
User & Date: | matt on 2021-06-23 08:58:31 |
Other Links: | branch diff | manifest | tags |
Context
2021-08-06
| ||
04:14 | Added localmode support check-in: 860e483c35 user: matt tags: v1.6584-nanomsg | |
2021-06-23
| ||
08:58 | Turn off inmem and fix run-id which should have been dbfile check-in: 89e269ed33 user: matt tags: v1.6584-nanomsg | |
2021-06-20
| ||
23:42 | wip check-in: 2342b6dbe3 user: matt tags: v1.6584-nanomsg | |
Changes
Modified dbmod.scm from [7a67cc9d95] to [b670c82b28].
︙ | ︙ | |||
178 179 180 181 182 183 184 | ;; open or create the disk db file ;; create and fill the inmemory db ;; assemble into dbr:dbdat struct and return ;; (define (db:open-dbdat apath dbfile dbinit-proc) (let* (;; (dbfile (db:run-id->path apath run-id)) (db (db:open-run-db dbfile dbinit-proc)) | | | | | > > > > > > > > > > > > > | 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 | ;; open or create the disk db file ;; create and fill the inmemory db ;; assemble into dbr:dbdat struct and return ;; (define (db:open-dbdat apath dbfile dbinit-proc) (let* (;; (dbfile (db:run-id->path apath run-id)) (db (db:open-run-db dbfile dbinit-proc)) ;; (inmem (db:open-inmem-db dbinit-proc)) (dbdat (make-dbr:dbdat db: #f ;; db inmem: db ;; inmem ;; run-id: run-id ;; no can do, there are many run-id values that point to single db fname: dbfile))) ;; now sync the disk file data into the inmemory db ;; (db:sync-tables (db:sync-all-tables-list) '("last_update" . 0) db inmem) ;; (sqlite3:finalize! db) ;; open and close every sync dbdat)) ;; (define (db:open-dbdat apath dbfile dbinit-proc) ;; (let* (;; (dbfile (db:run-id->path apath run-id)) ;; (db (db:open-run-db dbfile dbinit-proc)) ;; (inmem (db:open-inmem-db dbinit-proc)) ;; (dbdat (make-dbr:dbdat ;; db: #f ;; db ;; inmem: inmem ;; ;; run-id: run-id ;; no can do, there are many run-id values that point to single db ;; fname: dbfile))) ;; ;; now sync the disk file data into the inmemory db ;; (db:sync-tables (db:sync-all-tables-list) '("last_update" . 0) db inmem) ;; (sqlite3:finalize! db) ;; open and close every sync ;; dbdat)) ;; open the disk database file ;; NOTE: May need to add locking to file create process here ;; returns an sqlite3 database handle ;; (define (db:open-run-db dbfile dbinit-proc) (let* ((parent-dir (pathname-directory dbfile))) |
︙ | ︙ | |||
225 226 227 228 229 230 231 | ;; - uses db:initialize-db to create the schema ;; ;; Make the dbstruct, call for main db at least once ;; sync disk db to inmem ;; ;; called in http-transport and replicated in rmt.scm for *local* access. ;; | | | | 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 | ;; - uses db:initialize-db to create the schema ;; ;; Make the dbstruct, call for main db at least once ;; sync disk db to inmem ;; ;; called in http-transport and replicated in rmt.scm for *local* access. ;; (define (db:setup db-file) ;; run-id) (assert *toppath* "FATAL: db:setup called before toppath is available.") (let* ((dbstruct (or *dbstruct-db* (make-dbr:dbstruct))) #;(db-file (db:run-id->path *toppath* run-id))) (db:get-dbdat dbstruct *toppath* db-file) (if (not *dbstruct-db*)(set! *dbstruct-db* dbstruct)) dbstruct)) ;;====================================================================== ;; setting/getting a lock on the db for only one server per db ;; |
︙ | ︙ | |||
414 415 416 417 418 419 420 | ;; ;; (mutex-unlock! *db-multi-sync-mutex*) ;; ;; (stack-push! (dbr:dbstruct-dbstack dbstruct) tmpdb))) ;; NOTE: touched logic is disabled/not done ;; sync run to disk if touched ;; (define (db:sync-inmem->disk dbstruct apath dbfile #!key (force-sync #f)) | > | | | | | | | | | | | | | | | | | | | 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 | ;; ;; (mutex-unlock! *db-multi-sync-mutex*) ;; ;; (stack-push! (dbr:dbstruct-dbstack dbstruct) tmpdb))) ;; NOTE: touched logic is disabled/not done ;; sync run to disk if touched ;; (define (db:sync-inmem->disk dbstruct apath dbfile #!key (force-sync #f)) #f) ;; disabled ;; (let* ((dbdat (db:get-dbdat dbstruct apath dbfile)) ;; (dbfullname (conc apath "/" dbfile)) ;; (db (db:open-run-db dbfullname db:initialize-db)) ;; (dbr:dbdat-db dbdat)) ;; (inmem (dbr:dbdat-inmem dbdat)) ;; (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 "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)) ;; (debug:print 0 *default-log-port* "Skipping sync as nothing touched."))) ;; (sqlite3:finalize! db) ;; (mutex-unlock! *db-multi-sync-mutex*))) ;; TODO: Add final sync to this ;; #;(define (db:safely-close-sqlite3-db db stmt-cache #!key (try-num 3)) (if (<= try-num 0) #f (handle-exceptions |
︙ | ︙ | |||
744 745 746 747 748 749 750 751 752 753 754 755 756 757 | (not (equal? (vector-ref fromrow i)(vector-ref curr i)))) (set! same #f)) (if (and same (< i (- num-fields 1))) (loop (+ i 1)))) (if (not same) (begin (apply sqlite3:execute stmth (vector->list fromrow)) (hash-table-set! numrecs tablename (+ 1 (hash-table-ref/default numrecs tablename 0))))))) fromdat-lst)))) fromdats) (sqlite3:finalize! stmth) (if (member "last_update" field-names) (db:create-trigger db tablename))))) | > | 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 | (not (equal? (vector-ref fromrow i)(vector-ref curr i)))) (set! same #f)) (if (and same (< i (- num-fields 1))) (loop (+ i 1)))) (if (not same) (begin (debug:print 0 *default-log-port* "applying data "fromrow"to table "tablename", numrecs="numrecs) (apply sqlite3:execute stmth (vector->list fromrow)) (hash-table-set! numrecs tablename (+ 1 (hash-table-ref/default numrecs tablename 0))))))) fromdat-lst)))) fromdats) (sqlite3:finalize! stmth) (if (member "last_update" field-names) (db:create-trigger db tablename))))) |
︙ | ︙ |
Modified tests/unittests/basicserver.scm from [1303cd104d] to [928bc7546a].
︙ | ︙ | |||
61 62 63 64 65 66 67 | ;; (for-each (lambda (tdat) ;; (test #f tdat (loop-test (rmt:conn-ipaddr *main*) ;; (rmt:conn-port *main*) tdat))) ;; (list 'a ;; '(a "b" 123 1.23 ))) (test #f #t (rmt:send-receive 'ping #f 'hello)) | | | 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | ;; (for-each (lambda (tdat) ;; (test #f tdat (loop-test (rmt:conn-ipaddr *main*) ;; (rmt:conn-port *main*) tdat))) ;; (list 'a ;; '(a "b" 123 1.23 ))) (test #f #t (rmt:send-receive 'ping #f 'hello)) (define *db* (db:setup ".db/main.db")) ;; these let me cut and paste from source easily (define apath *toppath*) (define dbname ".db/2.db") (define remote *rmt:remote*) (define keyvals '(("SYSTEM" "a")("RELEASE" "b"))) |
︙ | ︙ |
Modified tests/unittests/server.scm from [998fe5c2f9] to [288618866d].
︙ | ︙ | |||
40 41 42 43 44 45 46 | ;; rmt:get-conn ;; common:watchdog ;; rmt:find-main-server ;; get-all-server-pkts ;; get-viable-servers ;; get-best-candidate ;; api:run-server-process | | | | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | ;; rmt:get-conn ;; common:watchdog ;; rmt:find-main-server ;; get-all-server-pkts ;; get-viable-servers ;; get-best-candidate ;; api:run-server-process ;; api:process-request ;; rmt:run ;; rmt:try-start-server ) (define *db* (db:setup ".db/main.db")) ;; these let me cut and paste from source easily (define apath *toppath*) (define dbname ".db/2.db") (define remote *rmt:remote*) (define keyvals '(("SYSTEM" "a")("RELEASE" "b"))) |
︙ | ︙ |