From 2eea6e7f8ff823c47d611c6ceefea33f5bac67b5 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Wed, 27 Mar 2024 10:48:59 +0000 Subject: Track the number of cached nars scheduled for removal --- nar-herder/database.scm | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'nar-herder/database.scm') diff --git a/nar-herder/database.scm b/nar-herder/database.scm index 666c497..75cd049 100644 --- a/nar-herder/database.scm +++ b/nar-herder/database.scm @@ -72,6 +72,7 @@ database-select-scheduled-cached-narinfo-removal database-delete-scheduled-cached-narinfo-removal database-select-oldest-scheduled-cached-narinfo-removal + database-count-scheduled-cached-narinfo-removal database-insert-scheduled-cached-narinfo-removal)) (define-record-type @@ -1484,16 +1485,17 @@ WHERE cached_narinfo_file_id = :cached_narinfo_file_id" db " DELETE FROM scheduled_cached_narinfo_removal -WHERE cached_narinfo_file_id = :cached_narinfo_file_id" +WHERE cached_narinfo_file_id = :cached_narinfo_file_id +RETURNING 1" #:cache? #t))) (sqlite-bind-arguments statement #:cached_narinfo_file_id cached-narinfo-file-id) - (sqlite-step statement) - (sqlite-reset statement) + (let ((result (->bool (sqlite-step statement)))) + (sqlite-reset statement) - #t)))) + result))))) (define (database-select-oldest-scheduled-cached-narinfo-removal database) (call-with-worker-thread @@ -1535,6 +1537,24 @@ LIMIT 1" (sqlite-reset statement) result))))) +(define (database-count-scheduled-cached-narinfo-removal database) + (call-with-worker-thread + (database-reader-thread-channel database) + (lambda (db) + (let ((statement + (sqlite-prepare + db + " +SELECT COUNT(*) FROM scheduled_cached_narinfo_removal" + #:cache? #t))) + + (let ((result + (vector-ref (sqlite-step statement) + 0))) + (sqlite-reset statement) + + result))))) + (define (database-insert-scheduled-cached-narinfo-removal database cached-narinfo-file-id removal-datetime) -- cgit v1.2.3