Subject: Re: bug#34030: Offloading sets mtime relative to current timezone

From: Ludovic Courtès <[email-masked]>
Date: Thu, 10 Jan 2019 16:59:09 +0100

Ludovic Courtès <[email-masked]> skribis:

> The ‘reset-timestamps’ procedure in (guix store database) apparently
> sets the time relative to the current timezone, leading to
> discrepancies:

It may not be the right diagnostic.  We have this:

--8<---------------cut here---------------start------------->8---
ludo@berlin ~$ stat -c '%Y %h %n' /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/*.go | sort -k1 -n
-3599 112 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/sets.go
-3599 306 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/licenses.go
-3599 32 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/svn-download.go
-3599 36 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/hg-download.go
-3599 39 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/graph.go
-3599 403 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/serialization.go
-3599 414 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/http-client.go
-3599 435 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/ftp-client.go
-3599 437 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/combinators.go
-3599 43 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/upstream.go
-3599 441 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/monad-repl.go
-3599 445 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/cve.go
-3599 445 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/describe.go
-3599 445 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/gnupg.go
-3599 453 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/discovery.go
-3599 457 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/pki.go
-3599 461 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/workers.go
-3599 462 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/base32.go
-3599 462 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/base64.go
-3599 462 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/i18n.go
-3599 466 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/cache.go
-3599 480 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/profiling.go
-3599 485 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/glob.go
-3599 50 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/modules.go
-3599 518 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/base16.go
-3599 554 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/records.go
0 52 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/memoization.go
0 8 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/cvs-download.go
1 105 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/ssh.go
1 117 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/inferior.go
1 156 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/download.go
1 235 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/grafts.go
1 274 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/docker.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/build-system.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/ci.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/cpio.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/derivations.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/elf.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/gexp.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/gnu-maintenance.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/monads.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/packages.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/profiles.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/progress.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/search-paths.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/self.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/store.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/swh.go
1 2 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/zlib.go
1 363 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/nar.go
1 363 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/tests.go
1 3 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/git-download.go
1 419 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/scripts.go
1 4 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/status.go
1 5 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/channels.go
1 5 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/git.go
1 6 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/config.go
1 82 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/utils.go
1 88 /gnu/store/c1ndi2hbg1fcs06gwmbwp297ky2pkw7h-guix-0.16.0-8.7ba2b27/lib/guile/2.2/site-ccache/guix/ui.go
--8<---------------cut here---------------end--------------->8---

(First column is mtime, second column is nlinks.)

Many files are OK.  Those with mtime=0 date back to before commit
e4752118691e41ae8307649d1abfd4739b3e4bfa.

Those with mtime=-3599 typically have a lot of hard links (for
deduplication) and correspond to source files that rarely change, which
suggests they might have been created long ago and we’re just seeing now
the symptoms of old problems.

Actually, the wrong mtime may come from the synchronization of the store
on the new storage device on berlin a couple of months ago.  That sounds
very likely.

I was not able to reproduce on my machine using ‘guix copy --from’
(which uses the same code path as offloading) so I’ll just close it
assuming it’s a problem specific to berlin.

Ludo’.