git/list[1] front-page[2] threads[3] people[4] search[5] about
 

master: t5800-remote-helpers.sh hangs on test "pulling from remote remote"

From
Stefano Lattarini <stefano.lattarini@gmail.com>
Date
Apr 14, 2012, 09:01 UTC
Message-ID
<4F893CD8.5020700@gmail.com>

The test 't5800-remote-helpers.sh' hangs on my Linux desktop (where I have installed a custom simple-minded firewall based on iptables). This does not happen on remote systems I use for testing, so I guess the problem lies with my machine. Still, having the test to hang is unnecessarily harsh and user-unfriendly IMHO, and it would be better to detect the situation and SKIP or FAIL the affected test cases instead.

For reference, here is the output of the test 't5800-remote-helpers.sh' run with the '-v' option:

-*-*-
Initialized empty Git repository in /devel/stefano/src/git/t/trash directory.t5800-remote-helpers/.git/
expecting success:
        git init --bare server/.git &&
        git clone server public &&
        (cd public &&
         echo content >file &&
         git add file &&
         git commit -m one &&
         git push origin master)
Initialized empty Git repository in /devel/stefano/src/git/t/trash directory.t5800-remote-helpers/server/.git/
Cloning into 'public'...
warning: You appear to have cloned an empty repository.
done.
[master (root-commit) 9a7aa46] one
 Author: A U Thor <author@example.com>
 1 file changed, 1 insertion(+)
 create mode 100644 file
Counting objects: 3, done.
Unpacking objects: 100% (3/3), done.
Writing objects: 100% (3/3), 219 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To /devel/stefano/src/git/t/trash directory.t5800-remote-helpers/server
 * [new branch]      master -> master
ok 1 - setup repository
expecting success:
        git clone "testgit::${PWD}/server" localclone &&
        test_cmp public/file localclone/file

Cloning into 'localclone'... ok 2 - cloning from local repo

expecting success:
        git clone "testgit::file://${PWD}/server" clone &&
        test_cmp public/file clone/file

Cloning into 'clone'... ok 3 - cloning from remote repo

expecting success:
        (cd public &&
         echo content >>file &&
         git commit -a -m two &&
         git push)
[master 0eb255a] two
 Author: A U Thor <author@example.com>
 1 file changed, 1 insertion(+)
Counting objects: 5, done.
Unpacking objects: 100% (3/3), done.
Writing objects: 100% (3/3), 252 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To /devel/stefano/src/git/t/trash directory.t5800-remote-helpers/server
   9a7aa46..0eb255a  master -> master
ok 4 - create new commit on remote
expecting success:
        (cd localclone && git pull) &&
        test_cmp public/file localclone/file
>From testgit::/devel/stefano/src/git/t/trash directory.t5800-remote-helpers/server
   9a7aa46..0eb255a  master     -> origin/master
Updating 9a7aa46..0eb255a
Fast-forward
 file |    1 +
 1 file changed, 1 insertion(+)
ok 5 - pulling from local repo
expecting success:
        (cd clone && git pull) &&
        test_cmp public/file clone/file
>From testgit::file:///devel/stefano/src/git/t/trash directory.t5800-remote-helpers/server
   9a7aa46..0eb255a  master     -> origin/master
Updating 9a7aa46..0eb255a
Fast-forward
 file |    1 +
 1 file changed, 1 insertion(+)
ok 6 - pulling from remote remote
expecting success:
        (cd localclone &&
        echo content >>file &&
        git commit -a -m three &&
        git push) &&
        compare_refs localclone HEAD server HEAD
[master 30d4cae] three
 Author: A U Thor <author@example.com>
 1 file changed, 1 insertion(+)
-*-*-

At this point, the test hangs, and I have to manually kill it with a SIGINT, the result being:

-*-*-
Traceback (most recent call last):
  File "/devel/stefano/src/git/git-remote-testgit", line 265, in <module>
    sys.exit(main(sys.argv))
  File "/devel/stefano/src/git/git-remote-testgit", line 262, in main
    more = read_one_line(repo)
  File "/devel/stefano/src/git/git-remote-testgit", line 227, in read_one_line
    func(repo, cmdline)
  File "/devel/stefano/src/git/git-remote-testgit", line 175, in do_export
    changed = repo.importer.do_import(repo.gitdir)
  File "/home/stefano/src/git/t/../git_remote_helpers/build/lib/git_remote_helpers/git/importer.py", line 54, in do_import
    check_call(args)
  File "/home/stefano/src/git/t/../git_remote_helpers/build/lib/git_remote_helpers/util.py", line 169, in check_call
    retcode = call(*popenargs, **kwargs)
  File "/home/stefano/src/git/t/../git_remote_helpers/build/lib/git_remote_helpers/util.py", line 155, in call
    return subprocess.Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 1291, in wait
    pid, sts = _eintr_retry_call(os.waitpid, self.pid, 0)
  File "/usr/lib/python2.7/subprocess.py", line 478, in _eintr_retry_call
    return func(*args)
KeyboardInterrupt
FATAL: Unexpected exit with code 0
-*-*-

If I run ps(1) in another terminal before interrupting the hung test, the following command sticks out as a possible culprit:

git-fast-import --quiet --export-marks=/devel/stefano/src/git/t/trash \ directory.t5800-remote-helpers/localclone/.git/info/fast-import/\ c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/git.marks \ --import-marks=/devel/stefano/src/git/t/'trash directory.t5800-remote-helpers'/\ localclone/.git/info/fast-import/c6c0871f9a7f12cd3f51aa290fbed7c49f539a8c/\ git.marks

-*-*-
Other possibly relevant information:
  $ hg --version | head -1
  Mercurial Distributed SCM (version 1.8.3) $ python --version
  $ python --version
  Python 2.7.2+
  $ /bin/sh --version | head -1
  GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu)
  $ git describe
  v1.7.10-167-gf245c01
Next: Clemens Buchacher
Message 1 of 26 in “master: t5800-remote-helpers.sh hangs on test "pulling from remote remote"”
  1. Stefano LattariniApr 14, 2012
  2. Clemens BuchacherApr 14, 2012
  3. Stefano LattariniApr 15, 2012
  4. Clemens BuchacherApr 15, 2012
  5. Stefano LattariniApr 15, 2012
  6. Clemens BuchacherApr 15, 2012
  7. Stefano LattariniApr 15, 2012
  8. Clemens BuchacherApr 15, 2012
  9. Stefano LattariniApr 15, 2012
  10. Clemens BuchacherApr 15, 2012
  11. Stefano LattariniApr 15, 2012
  12. Clemens BuchacherApr 15, 2012
  13. Sverre RabbelierApr 17, 2012
  14. Pete WyckoffApr 19, 2012
  15. Stefano LattariniApr 15, 2012
  16. Pete WyckoffApr 21, 2012
  17. Clemens BuchacherApr 21, 2012
  18. Pete WyckoffApr 22, 2012
  19. git-remote-testgit: fix race when spawning fast-importPete Wyckoff, Apr 21, 2012
  20. Clemens BuchacherApr 21, 2012
  21. Pete WyckoffApr 22, 2012
  22. Clemens BuchacherApr 22, 2012
  23. Junio C HamanoApr 22, 2012
  24. [PATCHv2] git-remote-testgit: fix race when spawning fast-importPete Wyckoff, Apr 22, 2012
  25. Junio C HamanoApr 23, 2012
  26. Pete WyckoffApr 23, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.