Overview
Comment: | Remove some exception handlers that were not fully specified |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | v1.80 |
Files: | files | file ages | folders |
SHA1: |
2f04a0e3c68acef221b366fb5e88fb24 |
User & Date: | matt on 2023-05-22 10:32:29 |
Other Links: | branch diff | manifest | tags |
Context
2023-05-22
| ||
11:47 | Added exception handlers back - within threads they have to be dealth with. Added handling of busy exception and it seems to be working better (buy not enough testing yet to be sure). check-in: 6c641b6f76 user: matt tags: v1.80 | |
10:32 | Remove some exception handlers that were not fully specified check-in: 2f04a0e3c6 user: matt tags: v1.80 | |
08:37 | Few tweaks to be a bit more resiliant on database blockages. Root cause of blockages are not known yet. check-in: b55a88229c user: matt tags: v1.80 | |
Changes
Modified db.scm from [0e4a030db5] to [6611a78f7e].
︙ | ︙ | |||
1692 1693 1694 1695 1696 1697 1698 | "SELECT state,status,count(id) AS count FROM tests WHERE run_id=? AND NOT(uname='n/a' AND item_path='') GROUP BY state,status;" run-id)))) ;; Update run_stats for given run_id ;; input data is a list (state status count) ;; (define (db:update-run-stats dbstruct run-id stats) | | | | 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 | "SELECT state,status,count(id) AS count FROM tests WHERE run_id=? AND NOT(uname='n/a' AND item_path='') GROUP BY state,status;" run-id)))) ;; Update run_stats for given run_id ;; input data is a list (state status count) ;; (define (db:update-run-stats dbstruct run-id stats) (mutex-lock! *db-transaction-mutex*) (db:with-db dbstruct #f #t (lambda (dbdat db) ;; remove previous data (let* ((stmt1 (sqlite3:prepare db "DELETE FROM run_stats WHERE run_id=? AND state=? AND status=?;")) (stmt2 (sqlite3:prepare db "INSERT INTO run_stats (run_id,state,status,count) VALUES (?,?,?,?);")) (res (sqlite3:with-transaction db (lambda () (for-each (lambda (dat) (sqlite3:execute stmt1 run-id (car dat)(cadr dat)) (apply sqlite3:execute stmt2 run-id dat)) stats))))) (sqlite3:finalize! stmt1) (sqlite3:finalize! stmt2) (mutex-unlock! *db-transaction-mutex*) res)))) (define (db:get-main-run-stats dbstruct run-id) (db:with-db dbstruct #f ;; this data comes from main #f |
︙ | ︙ |
Modified tcp-transportmod.scm from [6c61845b3c] to [9720e8582c].
︙ | ︙ | |||
786 787 788 789 790 791 792 | (handler (tt-handler ttdat)) ;; the handler comes from our client setting a handler function (handler-proc (lambda () (let* ((indat (deserialize)) (result #f) (exn-result #f) (stdout-result (with-output-to-string (lambda () | | | | | | | | | | | | | | | | | | < > > | | 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 | (handler (tt-handler ttdat)) ;; the handler comes from our client setting a handler function (handler-proc (lambda () (let* ((indat (deserialize)) (result #f) (exn-result #f) (stdout-result (with-output-to-string (lambda () (let ((res ;; ndle-exceptions ;; exn ;; let* ((errdat (condition->list exn))) ;; (set! exn-result errdat) ;; (debug:print 0 *default-log-port* "ERROR: handler exception, these are bad, will exit in five seconds.") ;; (pp errdat *default-log-port*) ;; ;; these are always bad, set up an exit thread ;; (thread-start! (make-thread (lambda () ;; (thread-sleep! 5) ;; (exit)))) ;; #f) (handler indat) ;; this is the proc being called by the remote client )) ;; ) (set! result res))))) (full-result (list result exn-result (if (equal? stdout-result "") #f stdout-result)))) ;; (handle-exceptions ;; exn ;; (begin ;; (debug:print 0 *default-log-port* "Serialization failure. full-result="full-result) ;; ;; (serialize '(#f #f #f)) ;; doesn't work - the first call to serialize caused failure ;; ;; ) (serialize full-result))))) ;; ) ((make-tcp-server socket handler-proc) #f ;; yes, send error messages to std-err ))) ;; create a tcp listener and return a populated udat struct with ;; my port, address, hostname, pid etc. ;; return #f if fail to find a port to allocate. |
︙ | ︙ |