242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
|
;;======================================================================
;; E X I T H A N D L I N G
;;======================================================================
(define (std-exit-procedure)
(set! *time-to-exit* #t)
(debug:print-info 0 "starting exit process, finalizing databases.")
(if (debug:debug-mode 18)
(rmt:print-db-stats))
(let ((th1 (make-thread (lambda () ;; thread for cleaning up, give it five seconds
(let ((run-ids (hash-table-keys *db-local-sync*)))
(if (and (not (null? run-ids))
(configf:lookup *configdat* "setup" "megatest-db"))
(db:multi-db-sync run-ids 'new2old)))
|
|
|
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
|
;;======================================================================
;; E X I T H A N D L I N G
;;======================================================================
(define (std-exit-procedure)
(set! *time-to-exit* #t)
(debug:print-info 4 "starting exit process, finalizing databases.")
(if (debug:debug-mode 18)
(rmt:print-db-stats))
(let ((th1 (make-thread (lambda () ;; thread for cleaning up, give it five seconds
(let ((run-ids (hash-table-keys *db-local-sync*)))
(if (and (not (null? run-ids))
(configf:lookup *configdat* "setup" "megatest-db"))
(db:multi-db-sync run-ids 'new2old)))
|
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
|
(if *task-db* (let ((db (cdr *task-db*)))
(if (sqlite3:database? db)
(begin
(sqlite3:interrupt! db)
(sqlite3:finalize! db #t)
(vector-set! *task-db* 0 #f)))))) "Cleanup db exit thread"))
(th2 (make-thread (lambda ()
(debug:print 0 "ERROR: Received ^C, attempting clean exit. Please be patient and wait a few seconds before hitting ^C again.")
(thread-sleep! 5) ;; give the clean up few seconds to do it's stuff
(debug:print 0 " Done.")
(exit 4))
"exit on ^C timer")))
(thread-start! th2)
(thread-start! th1)
(thread-join! th2)))
(define (std-signal-handler signum)
;; (signal-mask! signum)
(debug:print 0 "ERROR: Received signal " signum " exiting promptly")
|
|
|
|
|
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
|
(if *task-db* (let ((db (cdr *task-db*)))
(if (sqlite3:database? db)
(begin
(sqlite3:interrupt! db)
(sqlite3:finalize! db #t)
(vector-set! *task-db* 0 #f)))))) "Cleanup db exit thread"))
(th2 (make-thread (lambda ()
(debug:print 4 "Attempting clean exit. Please be patient and wait a few seconds...")
(thread-sleep! 5) ;; give the clean up few seconds to do it's stuff
(debug:print 0 " Done.")
(exit))
"clean exit")))
(thread-start! th2)
(thread-start! th1)
(thread-join! th2)))
(define (std-signal-handler signum)
;; (signal-mask! signum)
(debug:print 0 "ERROR: Received signal " signum " exiting promptly")
|