pytest-dev / pytest-dev/execnet
Improve handling of execnet.gateway_bootstrap.HostNotFound
Offen
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 102
- Forks
- 47
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
If a node is down the output is rather verbose:
gw0 Issh_exchange_identification: Connection closed by remote host
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR> File "…/Vcs/execnet/execnet/gateway_bootstrap.py", line 45, in bootstrap_exec
INTERNALERROR> s = io.read(1)
INTERNALERROR> File "…/Vcs/execnet/execnet/gateway_base.py", line 389, in read
INTERNALERROR> "expected %d bytes, got %d" % (numbytes, len(buf)))
INTERNALERROR> EOFError: expected 1 bytes, got 0
INTERNALERROR>
INTERNALERROR> During handling of the above exception, another exception occurred:
INTERNALERROR>
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR> File "…/project/.venv/lib/python3.6/site-packages/_pytest/main.py", line 176, in wrap_session
INTERNALERROR> config.hook.pytest_sessionstart(session=session)
INTERNALERROR> File "…/project/.venv/lib/python3.6/site-packages/pluggy/hooks.py", line 258, in __call__
INTERNALERROR> return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
INTERNALERROR> File "…/project/.venv/lib/python3.6/site-packages/pluggy/manager.py", line 67, in _hookexec
INTERNALERROR> return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR> File "…/project/.venv/lib/python3.6/site-packages/pluggy/manager.py", line 61, in <lambda>
INTERNALERROR> firstresult=hook.spec_opts.get('firstresult'),
INTERNALERROR> File "…/project/.venv/lib/python3.6/site-packages/pluggy/callers.py", line 201, in _multicall
INTERNALERROR> return outcome.get_result()
INTERNALERROR> File "…/project/.venv/lib/python3.6/site-packages/pluggy/callers.py", line 76, in get_result
INTERNALERROR> raise ex[1].with_traceback(ex[2])
INTERNALERROR> File "…/project/.venv/lib/python3.6/site-packages/pluggy/callers.py", line 180, in _multicall
INTERNALERROR> res = hook_impl.function(*args)
INTERNALERROR> File "…/project/.venv/lib/python3.6/site-packages/xdist/dsession.py", line 81, in pytest_sessionstart
INTERNALERROR> nodes = self.nodemanager.setup_nodes(putevent=self.queue.put)
INTERNALERROR> File "…/project/.venv/lib/python3.6/site-packages/xdist/workermanage.py", line 67, in setup_nodes
INTERNALERROR> nodes.append(self.setup_node(spec, putevent))
INTERNALERROR> File "…/project/.venv/lib/python3.6/site-packages/xdist/workermanage.py", line 71, in setup_node
INTERNALERROR> gw = self.group.makegateway(spec)
INTERNALERROR> File "…/Vcs/execnet/execnet/multi.py", line 128, in makegateway
INTERNALERROR> gw = gateway_bootstrap.bootstrap(io, spec)
INTERNALERROR> File "…/Vcs/execnet/execnet/gateway_bootstrap.py", line 98, in bootstrap
INTERNALERROR> bootstrap_exec(io, spec)
INTERNALERROR> File "…/Vcs/execnet/execnet/gateway_bootstrap.py", line 50, in bootstrap_exec
INTERNALERROR> raise HostNotFound(io.remoteaddress)
INTERNALERROR> execnet.gateway_bootstrap.HostNotFound: xdistnode1
I think this should be caught and turned into a proper error message.
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 mit dem Lesen von execnet/gateway_bootstrap.py, insbesondere bootstrap_exec und bootstrap, und verwende dabei den gemeldeten HostNotFound-Pfad als Einstiegspunkt. Reproduziere den Fehler mit einem ausgefallenen Node und bestätige, dass das Ergebnis eine prägnante, ordnungsgemäße Fehlermeldung statt des ausführlichen INTERNALERROR-Tracebacks ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- distributed-systems
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100