followup
This commit is contained in:
parent
9b2c88cdaf
commit
0dc203b7c5
1 changed files with 73 additions and 0 deletions
|
@ -0,0 +1,73 @@
|
|||
[[!comment format=mdwn
|
||||
username="joey"
|
||||
subject="""comment 1"""
|
||||
date="2021-09-06T18:52:21Z"
|
||||
content="""
|
||||
I tried to reproduce this on Linux, and cannot:
|
||||
|
||||
joey@darkstar:~/tmp/r>/usr/bin/time git-annex get bigfile
|
||||
get bigfile (from origin...)
|
||||
ok
|
||||
(recording state in git...)
|
||||
11.66user 2.08system 0:13.76elapsed 99%CPU (0avgtext+0avgdata 99012maxresident)k
|
||||
206440inputs+2048856outputs (46major+21865minor)pagefaults 0swaps
|
||||
joey@darkstar:~/tmp/r>git annex drop
|
||||
drop bigfile ok
|
||||
(recording state in git...)
|
||||
joey@darkstar:~/tmp/r>/usr/bin/time git annex sync --no-commit --no-push --no-pull --content-of bigfile
|
||||
get bigfile (from origin...)
|
||||
ok
|
||||
(recording state in git...)
|
||||
11.43user 1.91system 0:13.43elapsed 99%CPU (0avgtext+0avgdata 97132maxresident)k
|
||||
60016inputs+2048312outputs (25major+11680minor)pagefaults 0swaps
|
||||
|
||||
One reason it may do an extra checksum is if for some reason the inode
|
||||
cache is stale. Since [[!commit 3b5a3e168d8decd196509ad582ad4b8795d979a6]]
|
||||
it will check that and checksum before starting to send the content.
|
||||
|
||||
In this case, it will display "(checksum...)" before the progress display
|
||||
has started.
|
||||
|
||||
One way I can reproduce that, on Linux, is to touch the annex object file
|
||||
in the remote git repository before running git-annex. This is the result:
|
||||
|
||||
joey@darkstar:~/tmp/r>/usr/bin/time git-annex get bigfile
|
||||
get bigfile (from origin...) (checksum...)
|
||||
ok
|
||||
(recording state in git...)
|
||||
22.06user 2.22system 0:24.85elapsed 97%CPU (0avgtext+0avgdata 97192maxresident)k
|
||||
704inputs+2048432outputs (33major+10701minor)pagefaults 0swaps
|
||||
|
||||
But that shows that git-annex get also behaves that way, which does not
|
||||
explain why only git-annex sync would have the problem for you.
|
||||
(And the two run the same code; sync literally runs code from get.) Also
|
||||
I don't know why the inode cache would be getting stale on windows.
|
||||
|
||||
If it does not display "(checksum...)" before the progress display,
|
||||
it's certianly not that. And if it does not display "(checksum...)"
|
||||
at any point at all, that would be good to know, because normally
|
||||
git-annex does display that when checksumming.
|
||||
Your transcript seems to show no such output.
|
||||
|
||||
At the "2021-08-27 00:15:36.6868986" timestamp in your log, it's just
|
||||
completed updating the location log, and you identify the pause after that
|
||||
as where it's checksumming. So that seems to suggest it's already
|
||||
transferred the content there, and updated the location log, before
|
||||
checksumming. But it doesn't do anything normally
|
||||
after updating the location log, and it won't update the location log
|
||||
before it's satisfied it transferred the right content, so after any
|
||||
checksumming.
|
||||
|
||||
Possibly `git annex sync` is trying to drop the content from some
|
||||
remote due to its preferred content setting no longer wanting the content
|
||||
to be there. Do you have preferred content expressions configured?
|
||||
(I'm doubtful about this theaory because I don't think it ever hashes the
|
||||
content during a drop, but one difference between `get` and `sync`
|
||||
is that sync drops..)
|
||||
|
||||
Only other thing I can think that it could be is perhaps git is running
|
||||
the smudge/clean filter on the content, after the transfer, and git-annex
|
||||
hashes it again when run that way. Hard for me to tell from the filespray
|
||||
log if that might be the case. Setting `GIT_TRACE=1` would show if this
|
||||
happens.
|
||||
"""]]
|
Loading…
Add table
Reference in a new issue