AtlatestRepositoryfolio

folio / tree / testf3b-recover-driver.sgl

1;;; f3b-recover-driver.sgl -- run one transaction so the coordinator's
2;;; automatic recovery executes, and print every recovery action so the gate
3;;; can assert a self-heal was REPORTED. Used by gate-f3b.sh arm 4.
4(import (sigil core) (sigil io) (sigil fs) (sigil path)
5 (folio doc revision) (folio doc bounded) (folio doc service)
6 (folio doc coordinator) (folio doc transaction) (folio doc structural))
7(define root (or (getenv "F3B_ROOT") (begin (println "DRIVER ERROR no root") (exit 3))))
8(define lib-dir (or (getenv "F3B_LIB") "build/dev/lib"))
9(define src-dir (or (getenv "F3B_SRC") "src"))
10(define coord (make-coordinator root
11 (make-service (default-worker-argv lib-dir src-dir)
12 default-limits)))
13(define r (folio-insert-node! coord (path-join root "dest.sgd") "incoming" 'update
14 (revision-of-file (path-join root "dest.sgd"))
15 timestamp: "2026-08-25" id: "u-recdrv"
16 body-text: "Recovery driver entry."))
17(cond
18 ((txn-result? r)
19 (for-each (lambda (a) (println "~a" a)) (txn-result-recovery-actions r))
20 (println "DRIVER_OK"))
21 ((txn-refusal? r)
22 (for-each (lambda (a) (println "~a" a)) (txn-refusal-recovery-actions r))
23 (println "DRIVER_REFUSED ~a: ~a" (txn-refusal-reason r) (txn-refusal-message r))
24 (exit 1)))