fix fork bomb when projects share object dir
diff --git a/subcmds/sync.py b/subcmds/sync.py
index 7b44dbd..a750a23 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -249,7 +249,7 @@
dest='repo_upgraded', action='store_true',
help=SUPPRESS_HELP)
- def _FetchProjectList(self, opt, projects, *args, **kwargs):
+ def _FetchProjectList(self, opt, projects, lock, fetched, pm, sem, err_event):
"""Main function of the fetch threads when jobs are > 1.
Delegates most of the work to _FetchHelper.
@@ -260,10 +260,13 @@
*args, **kwargs: Remaining arguments to pass to _FetchHelper. See the
_FetchHelper docstring for details.
"""
- for project in projects:
- success = self._FetchHelper(opt, project, *args, **kwargs)
- if not success and not opt.force_broken:
- break
+ try:
+ for project in projects:
+ success = self._FetchHelper(opt, project, lock, fetched, pm, sem, err_event)
+ if not success and not opt.force_broken:
+ break
+ finally:
+ sem.release()
def _FetchHelper(self, opt, project, lock, fetched, pm, sem, err_event):
"""Fetch git objects for a single project.
@@ -332,7 +335,7 @@
finally:
if did_lock:
lock.release()
- sem.release()
+ #sem.release()
return success