aboutsummaryrefslogtreecommitdiff
path: root/nar-herder/storage.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2022-05-06 14:16:54 +0100
committerChristopher Baines <mail@cbaines.net>2022-05-06 14:16:54 +0100
commitad9452e63a0a60f79146efd714f081b6c898449e (patch)
treec83137fd077772270455e69ea335dc05922e1fd7 /nar-herder/storage.scm
parentc369d7292e82f85e6eb6157331267fa424703900 (diff)
downloadnar-herder-ad9452e63a0a60f79146efd714f081b6c898449e.tar
nar-herder-ad9452e63a0a60f79146efd714f081b6c898449e.tar.gz
Support removing nar files
Diffstat (limited to 'nar-herder/storage.scm')
-rw-r--r--nar-herder/storage.scm30
1 files changed, 30 insertions, 0 deletions
diff --git a/nar-herder/storage.scm b/nar-herder/storage.scm
index fab8966..386bacf 100644
--- a/nar-herder/storage.scm
+++ b/nar-herder/storage.scm
@@ -34,6 +34,7 @@
#:use-module (nar-herder utils)
#:use-module (nar-herder database)
#:export (store-item-in-local-storage?
+ remove-nar-files-by-hash
get-nar-files
@@ -51,6 +52,35 @@
(assq-ref file 'url)))))
narinfo-files)))
+(define (remove-nar-files-by-hash database storage-root metrics-registry
+ hash)
+ (define nar-files-metric
+ (or (metrics-registry-fetch-metric metrics-registry
+ "nar_files_total")
+ (make-gauge-metric metrics-registry
+ "nar_files_total"
+ #:labels '(stored))))
+
+ (let ((narinfo-files (database-select-narinfo-files database hash)))
+ (when (null? narinfo-files)
+ (error "no narinfo files"))
+ (for-each
+ (lambda (file)
+ (let* ((filename
+ (string-append storage-root
+ (uri-decode
+ (assq-ref file 'url))))
+ (exists?
+ (file-exists? filename)))
+ (when exists?
+ (remove-nar-from-storage storage-root
+ (assq-ref file 'url)))
+
+ (metric-decrement nar-files-metric
+ #:label-values
+ `((stored . ,(if exists? "true" "false"))))))
+ narinfo-files)))
+
(define (get-storage-size storage-root)
(define enter? (const #t))
(define (leaf name stat result)