aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/utils.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-11-30 18:40:46 +0000
committerChristopher Baines <mail@cbaines.net>2020-11-30 18:40:46 +0000
commitb906bb74810d106f96a6975050773c47d8c4a5dc (patch)
treecdc7dbf32fae9c788d1489fb3fde0c3446c7954e /guix-build-coordinator/utils.scm
parent928a7aff4fbd6397738ff1cb09704c5ab33636d9 (diff)
downloadbuild-coordinator-b906bb74810d106f96a6975050773c47d8c4a5dc.tar
build-coordinator-b906bb74810d106f96a6975050773c47d8c4a5dc.tar.gz
Try to reduce errors when deleting substitute cache files
Diffstat (limited to 'guix-build-coordinator/utils.scm')
-rw-r--r--guix-build-coordinator/utils.scm23
1 files changed, 13 insertions, 10 deletions
diff --git a/guix-build-coordinator/utils.scm b/guix-build-coordinator/utils.scm
index 3767eef..259e293 100644
--- a/guix-build-coordinator/utils.scm
+++ b/guix-build-coordinator/utils.scm
@@ -301,16 +301,19 @@ upcoming chunk."
(string-append
%narinfo-cache-directory "/"
directory "/" hash-part)))
- (when (file-exists? cache-file)
- (with-exception-handler
- (lambda (exn)
- (simple-format
- (current-error-port)
- "error: when deleting substitute cache file: ~A\n"
- exn))
- (lambda ()
- (delete-file cache-file))
- #:unwind? #t))))
+ ;; Use monitor to avoid multiple threads trying to delete
+ ;; the same file at the same time
+ (monitor
+ (when (file-exists? cache-file)
+ (with-exception-handler
+ (lambda (exn)
+ (simple-format
+ (current-error-port)
+ "error: when deleting substitute cache file: ~A\n"
+ exn))
+ (lambda ()
+ (delete-file cache-file))
+ #:unwind? #t)))))
(or directories '())))
(let ((narinfos