pytest-dev / pytest-dev/execnet
pytest-xdist slave fail on Interrupted system call
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
- Bitbucket: https://bitbucket.org/hpk42/execnet/issue/6
- Originally reported by: @memedough
- Originally created at: 2012-04-14T03:00:30.080
Hi,
I get IOError Interrupted system call in pytest-xdist slave. Don't know why, can't see signal anywhere but fail
creating slavegateway on <__main__.Popen2IO instance at 0x20fa2d8>
RECEIVERTHREAD: starting to run
received <Message.CHANNEL_EXEC channelid=1 len=285>
received <Message.CHANNEL_DATA channelid=1 len=123>
execution starts[1]: "\nimport os\npath, nice, env = channel.receive()\
execution finished
sent <Message.CHANNEL_CLOSE channelid=1 >
1 sent channel close message
received <Message.CHANNEL_EXEC channelid=3 len=210>
1 channel.__del__
execution starts[3]: '\nimport sys, os\nchannel.send(dict(\n executa
sent <Message.CHANNEL_DATA channelid=3 len=295>
execution finished
sent <Message.CHANNEL_CLOSE channelid=3 >
3 sent channel close message
received <Message.CHANNEL_EXEC channelid=5 len=5308>
3 channel.__del__
execution starts[5]: '"""\n This module is executed in remote subpro
received <Message.CHANNEL_DATA channelid=5 len=1492>
RECEIVERTHREAD Traceback (most recent call last):
File "<string>", line 622, in _thread_receiver
File "<string>", line 802, in load
File "<string>", line 86, in read
IOError: [Errno 4] Interrupted system call
RECEIVERTHREAD entering finalization
RECEIVERTHREAD leaving finalization
sent <Message.CHANNEL_DATA channelid=5 len=451>
sent <Message.CHANNEL_DATA channelid=5 ('collectionstart', {})>
sent <Message.CHANNEL_DATA channelid=5 len=115>
sent <Message.CHANNEL_DATA channelid=5 len=163>
sent <Message.CHANNEL_DATA channelid=5 len=244>
sent <Message.CHANNEL_DATA channelid=5 len=53>
gateway_base.Unserializer.load(self) can be made work by retry if get IOError with errno == 4
while True:
opcode = self.stream.read(1) # Retry this if IOError raised here
if not opcode:
raise EOFError
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par gateway_base.Unserializer.load, en particulier par l’appel stream.read(1) identifié dans le rapport, et examinez la façon dont IOError y est géré. Reproduisez l’échec du slave de pytest-xdist si possible ; le travail est considéré comme terminé lorsqu’un Interrupted system call pendant la désérialisation n’interrompt plus le chemin du récepteur et que le traitement normal des messages continue.
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é
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100