diff --git a/guix-data-service/jobs/load-new-guix-revision.scm b/guix-data-service/jobs/load-new-guix-revision.scm index 1412392..ddfd364 100644 --- a/guix-data-service/jobs/load-new-guix-revision.scm +++ b/guix-data-service/jobs/load-new-guix-revision.scm @@ -50,7 +50,7 @@ #:use-module (guix serialization) #:use-module (guix build utils) #:use-module ((guix build syscalls) - #:select (set-thread-name)) + #:select (set-thread-name free-disk-space)) #:use-module (guix-data-service config) #:use-module (guix-data-service database) #:use-module (guix-data-service utils) @@ -1761,14 +1761,19 @@ SELECT 1 FROM derivation_source_file_nars WHERE derivation_source_file_id = $1" (define (call-with-inferior proc) (define (check-wal-size) - (define threshold (* 4096 (expt 2 20))) - (define (get-wal-bytes) (catch #t (lambda () (stat:size (stat "/var/guix/db/db.sqlite-wal"))) (lambda _ 0))) + (define threshold + (max + (* 4096 (expt 2 20)) + (* 0.8 + (- (free-disk-space "/var/guix/db/db.sqlite-wal") + (get-wal-bytes))))) + (if (< (get-wal-bytes) threshold) #t (let loop ((wal-bytes (get-wal-bytes)))