Display a warning when concurrency is enabled but ssh connection caching is not enabled or won't work due to a crippled filesystem

A warning message is unsatisfying. But erroring out is too hard a failure,
especially since it may well work fine if the user has enabled passwordless
ssh.

I did think about falling back to one ssh connection at a time in this
case, but it would have needed a rework of every ssh call, which
seems far overboard for such a niche problem. There's no single place where
git-annex runs ssh, so no one place that it could block a concurrent call
on a semaphore. And, even if it did fall back to one ssh connection at a
time, it seems to me that doing so without warning the user about the
problem just invites bug reports like "git-annex is ignoring my -J2 and
only doing one download at a time". So a warning is needed, and I suppose
is good enough.
This commit is contained in:
Joey Hess 2020-01-23 12:35:46 -04:00
parent 81b06588a1
commit 5c3636037b
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
5 changed files with 66 additions and 7 deletions

View file

@ -63,3 +63,4 @@ get R042/R042-2013-08-16/R042-2013-08-16-CSC01a.ncs get R042/R042-2013-08-16/R04
[[!meta author=yoh]]
[[!tag projects/datalad]]
> warning added; [[done]] --[[Joey]]

View file

@ -0,0 +1,21 @@
[[!comment format=mdwn
username="joey"
subject="""comment 4"""
date="2020-01-23T15:51:46Z"
content="""
I notice that debug output has no BatchMode=true in any ssh call. But
the version of git-annex you show always runs ssh with that when
-J is used, unless sshcaching is disabled.
More evidence that sshcaching is disabled in your transcript is that when
it does run ssh, it does not pass -S.
I think the repository must be on a crippled filesystem, on which
git-annex can't do ssh connection caching, because the filesystem
does not support unix sockets. (Or it potentially could be crippled in some
other way.) So it ignores the annex.sshcaching setting.
You could work around this by setting the (undocumented)
GIT_ANNEX_TMP_DIR to some temporary directory on a non-crippled filesystem.
I'm going to add a warning message in this situation.
"""]]