pytest-dev / pytest-dev/execnet
Group.__init() should be parallelised
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 102
- Fork
- 47
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
- 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.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia in multi.py da Group.init e ispeziona gateway_base.py intorno alla riga 360, dove la patch segnalata causa un deadlock. Riproduci l'inizializzazione con molti gateway SSH e confronta il comportamento con la patch allegata. Il lavoro è completato quando l'inizializzazione di Group si connette agli host in parallelo senza causare deadlock e Group.remote_exec() continua a funzionare.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- distributed-systems
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100