With 88a7fb5cb (convert all applicable commands to new 2x faster annexed file seeking, 2020-07-10), the following script hangs on the last command.
cd "$(mktemp -d ${TMPDIR:-/tmp}/ga-metadata-XXXXXXX)"
git init
git annex init
echo 0 >f0
echo 1 >f1
git annex add f0 f1
git commit -mc0
git annex metadata --debug --remove a .
Here's the output, where the git-ls-files call is the spot of the hang:
[... 13 lines ...]
[2020-07-10 21:04:33.030754298] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","symbolic-ref","-q","HEAD"]
[2020-07-10 21:04:33.032022677] process done ExitSuccess
[2020-07-10 21:04:33.032205649] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","refs/heads/master"]
[2020-07-10 21:04:33.033970479] process done ExitSuccess
[2020-07-10 21:04:33.034308573] chat: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","cat-file","--batch=%(objectname) %(objecttype) %(objectsize)","--buffer"]
[2020-07-10 21:04:33.035040652] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","git-annex"]
[2020-07-10 21:04:33.037070231] process done ExitSuccess
[2020-07-10 21:04:33.037281793] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","--hash","refs/heads/git-annex"]
[2020-07-10 21:04:33.038995286] process done ExitSuccess
[2020-07-10 21:04:33.03938464] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","log","refs/heads/git-annex..d39f6bdff82a20be7edf466ba572877de0db0daf","--pretty=%H","-n1"]
[2020-07-10 21:04:33.041697801] process done ExitSuccess
[2020-07-10 21:04:33.042060234] chat: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","cat-file","--batch"]
[2020-07-10 21:04:33.047868787] chat: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","cat-file","--batch-check=%(objectname) %(objecttype) %(objectsize)"]
[2020-07-10 21:04:33.049298291] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","ls-files","--stage","-z","--","."]
[2020-07-10 21:04:42.432722123] process done ExitFailure (-2)
On the parent of the commit, this completes fine, with the expected "use --force" failure.
[... 13 lines ...]
[2020-07-10 21:02:36.753459763] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","symbolic-ref","-q","HEAD"]
[2020-07-10 21:02:36.756144724] process done ExitSuccess
[2020-07-10 21:02:36.756300697] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","refs/heads/master"]
[2020-07-10 21:02:36.758083727] process done ExitSuccess
[2020-07-10 21:02:36.758319366] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","ls-files","-z","--cached","--","."]
git-annex: Not recursively setting metadata. Use --force to do that.
Aha, seekFilteredKeys is not prepared for the file list action that's passed to it to throw an exception, but in this one case at least, it can.
Thanks for reporting, I've fixed it.
Also the test case was not testing the metadata command at all, added some tests.