pytest-dev / pytest-dev/execnet
Group.__init() should be parallelised
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 102
- Forks
- 47
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
- Bitbucket: https://bitbucket.org/hpk42/execnet/issue/28
- Originally reported by: @crusaderky
- Originally created at: 2014-01-22T16:51:21.959
Consider the following snippet:
hosts = [...list of hosts...]
group = execnet.Group(("ssh %s" % host for host in hosts))
group.remote_exec(something)
Imagine having a grid of 200 hosts.
While Group.remote_exec() will run on all the hosts in parallel, Group.__init__() will connect via ssh to each one of them, serially. On a typical LAN, this easily accounts to minutes.
I attach a patch for multi.py (on top of the latest hg commit) that is intended to fix the problem. However, with that patch the program deadlocks in gateway_base.py, line 360, and I can't figure out the reason.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne in multi.py bei Group.init und untersuche gateway_base.py ungefähr bei Zeile 360, wo der gemeldete Patch einen Deadlock verursacht. Reproduziere die Initialisierung mit vielen SSH-Gateways und vergleiche das Verhalten mit dem beigefügten Patch. Als erledigt gilt die Aufgabe, wenn die Group-Initialisierung Verbindungen zu Hosts parallel herstellt, ohne einen Deadlock zu verursachen, und Group.remote_exec() weiterhin funktioniert.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- distributed-systems
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100