[PATCH v2 0/2] commit-graph.c: no lazy fetch in lookup_commit_in_graph()
From: Han Xin <hidden>
Date: 2022-06-24 05:28:49
This patch fixes the following issue:
When we found the commit in the graph in lookup_commit_in_graph(), but
the commit is missing from the repository, we will try
promisor_remote_get_direct() and then enter another loop.
Then we will go into an endless loop:
git fetch -> deref_without_lazy_fetch() ->
lookup_commit_in_graph() -> repo_has_object_file() ->
promisor_remote_get_direct() -> fetch_objects() ->
git fetch (a new loop round)
Changes since v1:
* add run_with_limited_processses() to test-lib so that we can use it to
limit forking subprocesses. As we didn't check the return value of
promise_remote_get_direct(), "git fetch" would finally succeed due to:
error: cannot fork() for -c: Resource temporarily unavailable
fatal: promisor-remote: unable to fork off fetch subprocess
* Rename test repositories, reference name and use GIT_TRACE to observe
the fetch process.
Han Xin (2):
test-lib.sh: add limited processes to test-lib
commit-graph.c: no lazy fetch in lookup_commit_in_graph()
commit-graph.c | 2 +-
t/t5329-no-lazy-fetch-with-commit-graph.sh | 47 ++++++++++++++++++++++
t/test-lib.sh | 9 +++++
3 files changed, 57 insertions(+), 1 deletion(-)
create mode 100755 t/t5329-no-lazy-fetch-with-commit-graph.sh
Range-diff against v1:
1: ebc14bfd5e < -: ---------- commit-graph.c: no lazy fetch in lookup_commit_in_graph()
-: ---------- > 1: 442a4c351d test-lib.sh: add limited processes to test-lib
-: ---------- > 2: d3a99a5c5a commit-graph.c: no lazy fetch in lookup_commit_in_graph()
--
2.36.1