commit | 7f1ccfbb7bb29195e53fcc374a648379f5f53d3a | [log] [tgz] |
---|---|---|
author | Andrew Wheeler <andrew@igmo.org> | Fri Jun 17 16:51:07 2016 -0500 |
committer | Andrew Wheeler <andrew@igmo.org> | Tue Oct 11 14:10:34 2016 -0500 |
tree | 1bd13675e42ba771a5c26343508cfa62831edcfa | |
parent | eceeb1b1f5edb0f42e690bffdf81828abd8ea7fe [diff] |
sync: Fix semaphore release bug that causes thread 'leaks' When repo syncs a manifest that utilizes multiple branches in the same project, then the sync will use an extra thread for each "duplicate". For example, if the manifest includes the project "foo" and "bar" twice, then "repo sync -jN" will fetch with N+2 threads. This is caused by _FetchHelper() releasing the thread semaphore object each time it's called, even though _FetchProjectList() may call this function multiple times within the scope of a single thread. Fix by moving the thread semaphore release to _FetchProjectList(), which is only called once per thread instance. Change-Id: I1da78b145e09524d40457db5ca5c37d315432bd8
Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workflow. Repo is not meant to replace Git, only to make it easier to work with Git. The repo command is an executable Python script that you can put anywhere in your path.