aboutsummaryrefslogtreecommitdiff
path: root/guix/cache.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2023-07-11 00:27:31 +0200
committerLudovic Courtès <ludo@gnu.org>2023-07-11 15:47:56 +0200
commitfe3321f91ae331d3f1d4a389f28fdf02f74da7e8 (patch)
tree12cb0ed7d3b324a939049582a9c85bd5e2a8cd9e /guix/cache.scm
parente1c2c2f042e8741c0759e21e634cd2271e078177 (diff)
downloadguix-fe3321f91ae331d3f1d4a389f28fdf02f74da7e8.tar
guix-fe3321f91ae331d3f1d4a389f28fdf02f74da7e8.tar.gz
cache: 'file-expiration-time' uses 'lstat', not 'stat'.
Fixes a bug whereby 'cached-channel-instance' would potentially consider cache entries obsolete too early because they refer to items in the store, which is mounted as 'noatime' on Guix System. * guix/cache.scm (file-expiration-time): Use 'lstat' and 'false-if-exception' rather than 'stat'. This matches what (guix scripts shell) does.
Diffstat (limited to 'guix/cache.scm')
-rw-r--r--guix/cache.scm4
1 files changed, 2 insertions, 2 deletions
diff --git a/guix/cache.scm b/guix/cache.scm
index be0de90e67..6a91c7d3ef 100644
--- a/guix/cache.scm
+++ b/guix/cache.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013-2017, 2020-2021, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2022 Simon Tournier <zimon.toutoune@gmail.com>
;;;
;;; This file is part of GNU Guix.
@@ -55,7 +55,7 @@
time\" computed as its timestamp + TTL seconds. Call TIMESTAMP to obtain the
relevant timestamp from the result of 'stat'."
(lambda (file)
- (match (stat file #f)
+ (match (false-if-exception (lstat file))
(#f 0) ;FILE may have been deleted in the meantime
(st (+ (timestamp st) ttl)))))