Hi Bassem,
I work with Luciano, and I'm aware of the problem as well. Let me try to describe the problem
Consider the following scenario:
- machine1: End user machine, where 'repo sync' runs.
- machine2: Another end user machine
- mirror1: Linux server that hosts the git repos.
- Consider a manifest file with 1000 projects (all of them points to mirror1), which 3 of them being equal and pointing to different path and revisions. Something like this
<project name="project1" path="path1" revision="rev1"/>
<project name="project1" path="path2" revision="rev2"/>
<project name="project1" path="path3" revision="rev3"/>
1 - On machine1, user runs:
repo sync -c -j4
2 - On machine2, user runs:
repo sync -c -j4
On machine1, 4 threads should open. But what happens is that 7 threads are running, trying to download information from mirror1 (ssh connection)
On machine2, 7 threads are running as well.
On mirror1 we have 14 threads!
If we have 30 equal projects on manifest instead of 3, we will have 34 threads per user! In this scenario, the mirror1 will need to handle 68 requests instead of 8!
Regards,
Marcelo