1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
|
### Please describe the problem.
If a git-annex client from Debian buster (currently 6.20180913-1) tries to talk with a server running Debian stretch (currently 6.20170101-1+deb9u2), it will fail mysteriously:
copy bar (fd:18: hClose: resource vanished (Broken pipe)) failed
### What steps will reproduce the problem?
On the stretch machine, setup a test git-annex repository.
On the buster machine, setup a test repository, add the stretch
machine as a remote, then add a file in git-annex, and
git-annex-sync-content to the stretch machine.
### What version of git-annex are you using? On what operating system?
Debian buster and stretch standard Debian packages.
### Please provide any additional information below.
On the buster machine:
[[!format sh """
# If you can, paste a complete transcript of the problem occurring here.
# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
(test) [1265]anarcat@curie:test130$ git init test
Dépôt Git vide initialisé dans /home/anarcat/test/test/.git/
(test) [1266]anarcat@curie:test$ cd test
(test) [1267]anarcat@curie:test$ git annex init
init ok
(recording state in git...)
(test) [1268]anarcat@curie:test$ echo foo > bar
(test) [1269]anarcat@curie:test$ git annex add bar
add bar ok
(recording state in git...)
(test) [1270]anarcat@curie:test$ git remote add sal sal:test
(test) [1271]anarcat@curie:test$ git annex sync sal
commit
[master (commit racine) 05b6d24] git-annex in anarcat@curie:~/test/test
1 file changed, 1 insertion(+)
create mode 120000 bar
ok
pull sal
warning: pas de commit commun
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Dépaquetage des objets: 100% (5/5), fait.
Depuis sal:test
* [nouvelle branche] git-annex -> sal/git-annex
ok
(merging sal/git-annex into git-annex...)
(recording state in git...)
push sal
Énumération des objets: 18, fait.
Décompte des objets: 100% (18/18), fait.
Compression par delta en utilisant jusqu'à 4 fils d'exécution
Compression des objets: 100% (12/12), fait.
Écriture des objets: 100% (16/16), 1.92 KiB | 654.00 KiB/s, fait.
Total 16 (delta 1), réutilisés 0 (delta 0)
To sal:test
* [new branch] git-annex -> synced/git-annex
* [new branch] master -> synced/master
ok
(test) [1272]anarcat@curie:test$ git annex sync --content sal
commit
Sur la branche master
rien à valider, la copie de travail est propre
ok
pull sal
ok
copy bar (fd:18: hClose: resource vanished (Broken pipe)) failed
git-annex: sync: 1 failed
# End of transcript or log.
"""]]
The stretch repo is just `git init test && git -C test annex
init`. SSH communication is setup with a passwordless SSH key in
both. Debugging shows us the problem is with the p2pstdio command:
[[!format sh """
$ git annex sync --content sal --debug
[2018-11-03 15:25:35.018955156] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","git-annex"]
[2018-11-03 15:25:35.022443588] process done ExitSuccess
[2018-11-03 15:25:35.022611687] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","--hash","refs/heads/git-annex"]
[2018-11-03 15:25:35.02578792] process done ExitSuccess
[2018-11-03 15:25:35.026234842] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","log","refs/heads/git-annex..24d62bcb5e253326bde98283338a855c9bfbe983","--pretty=%H","-n1"]
[2018-11-03 15:25:35.030089742] process done ExitSuccess
[2018-11-03 15:25:35.041384604] chat: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","cat-file","--batch"]
[2018-11-03 15:25:35.042220799] chat: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","cat-file","--batch-check=%(objectname) %(objecttype) %(objectsize)"]
commit
[2018-11-03 15:25:35.045907106] call: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","commit","-a","-m","git-annex in anarcat@curie:~/test/test"]
Sur la branche master
rien à valider, la copie de travail est propre
[2018-11-03 15:25:35.077421642] process done ExitFailure 1
ok
[2018-11-03 15:25:35.077523489] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","symbolic-ref","-q","HEAD"]
[2018-11-03 15:25:35.079008549] process done ExitSuccess
[2018-11-03 15:25:35.079088278] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","refs/heads/master"]
[2018-11-03 15:25:35.080639101] process done ExitSuccess
[2018-11-03 15:25:35.080766018] call: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","--verify","-q","refs/heads/synced/master"]
[2018-11-03 15:25:35.08225223] process done ExitSuccess
[2018-11-03 15:25:35.082343323] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","log","refs/heads/master..refs/heads/synced/master","--pretty=%H","-n1"]
[2018-11-03 15:25:35.084234147] process done ExitSuccess
pull sal
[2018-11-03 15:25:35.084663095] call: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","fetch","sal"]
[2018-11-03 15:25:37.678014829] process done ExitSuccess
[2018-11-03 15:25:37.678131075] call: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","branch","-f","synced/master","refs/heads/master"]
[2018-11-03 15:25:37.68042014] process done ExitSuccess
[2018-11-03 15:25:37.680521541] call: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","--verify","-q","refs/remotes/sal/master"]
[2018-11-03 15:25:37.682164837] process done ExitFailure 1
[2018-11-03 15:25:37.682259432] call: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","--verify","-q","refs/remotes/sal/synced/master"]
[2018-11-03 15:25:37.683835717] process done ExitSuccess
[2018-11-03 15:25:37.683934116] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","log","refs/heads/synced/master..refs/remotes/sal/synced/master","--pretty=%H","-n1"]
[2018-11-03 15:25:37.686212308] process done ExitSuccess
ok
[2018-11-03 15:25:37.686343742] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","git-annex"]
[2018-11-03 15:25:37.688215586] process done ExitSuccess
[2018-11-03 15:25:37.688305585] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","--hash","refs/heads/git-annex"]
[2018-11-03 15:25:37.6901916] process done ExitSuccess
[2018-11-03 15:25:37.690393283] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","log","refs/heads/git-annex..24d62bcb5e253326bde98283338a855c9bfbe983","--pretty=%H","-n1"]
[2018-11-03 15:25:37.692726875] process done ExitSuccess
[2018-11-03 15:25:37.692906438] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","ls-files","--cached","-z","--"]
copy bar [2018-11-03 15:25:37.696621566] chat: ssh ["sal","-S",".git/annex/ssh/sal","-o","ControlMaster=auto","-o","ControlPersist=yes","-T","git-annex-shell 'p2pstdio' '/~/test' '--debug' 'f73778b3-17a4-4fee-9890-402bedf02456' --uuid 02ef3aa6-34d9-42b9-814e-f9ebc47c59e1"]
[2018-11-03 15:25:37.96931512] P2P > ERROR auth failed
(fd:18: hClose: resource vanished (Broken pipe)) failed
[2018-11-03 15:25:37.96973331] chat: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","check-attr","-z","--stdin","annex.backend","annex.numcopies","annex.largefiles","--"]
[2018-11-03 15:25:37.970341712] read: git ["--version"]
[2018-11-03 15:25:37.97296492] process done ExitSuccess
[2018-11-03 15:25:37.974463782] call: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","branch","-f","synced/master","refs/heads/master"]
[2018-11-03 15:25:37.978567382] process done ExitSuccess
[2018-11-03 15:25:37.979111982] call: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","--verify","-q","refs/remotes/sal/synced/master"]
[2018-11-03 15:25:37.982068735] process done ExitSuccess
[2018-11-03 15:25:37.982213309] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","log","refs/remotes/sal/synced/master..refs/heads/synced/master","--pretty=%H","-n1"]
[2018-11-03 15:25:37.986086966] process done ExitSuccess
[2018-11-03 15:25:37.986239042] call: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","--verify","-q","refs/remotes/sal/git-annex"]
[2018-11-03 15:25:37.988954838] process done ExitSuccess
[2018-11-03 15:25:37.989110109] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","log","refs/remotes/sal/git-annex..git-annex","--pretty=%H","-n1"]
[2018-11-03 15:25:37.993956367] process done ExitSuccess
[2018-11-03 15:25:37.994340874] read: ssh ["-O","stop","-S","sal","-o","ControlMaster=auto","-o","ControlPersist=yes","localhost"]
[2018-11-03 15:25:38.00909442] process done ExitSuccess
[2018-11-03 15:25:38.009887194] process done ExitSuccess
[2018-11-03 15:25:38.010571056] process done ExitSuccess
[2018-11-03 15:25:38.011368991] process done ExitSuccess
git-annex: sync: 1 failed
"""]]
A manual invocation confirms the [[design/p2p_protocol]] not supported
by the remote, probably because it's too old:
[[!format sh """
$ ssh sal git-annex-shell p2pstdio
fatal: unrecognized command 'p2pstdio'
git-annex-shell: git-shell failed
"""]]
I understand the need for this command (which has no manpage, for what
that's worth ;), but we should be able to fallback gracefully here. In
the worst case, just treat this as a remote without git-annex-shell
and revert to rsync to transfer files...
The workaround is to install the (working) backport in stretch, of course.
I wonder if this could be related to
[[bugs/new_git-annex-shell_protocol_hides_remote_error_messages/]].
### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
Yes! I'm using git-annex like a maniac and I'm using it to archive
Brazil right now. -- [[anarcat]]
> presumed [[done]] --[[Joey]]
|