pytest-dev / pytest-dev/execnet

Improve handling of execnet.gateway_bootstrap.HostNotFound

Ouverte
#81 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Python
Étoiles
102
Forks
47
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par lire execnet/gateway_bootstrap.py, en particulier bootstrap_exec et bootstrap, en utilisant le chemin HostNotFound signalé comme point d’entrée. Reproduisez l’échec avec un node arrêté et confirmez que le résultat est un message d’erreur concis et approprié plutôt que le traceback INTERNALERROR détaillé.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
distributed-systems
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.