Bug #15572
check_operational: SSLError (the read operation timed out)
0%
Description
J'ai cette erreur de manière très aléatoire lors du déploiement des instances (les appels urllib2 dans check_operational()).
En relançant le cook, sur tous les essais que j'ai fait, ça fonctionne.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Jean-Baptiste Jaillet il y a environ 7 ans
Comme l'erreur est aléatoire (je la rencontre dans quelques cas, et relancer le cook suffit à contourner le problème => c'est évidemment impossible de faire ça avec ozwillo par ex), je me demandais s'il était possible de catcher l'erreur dans la section de check_opérational :
except (urllib2.URLError, urllib2.HTTPError), e: pass
Mis à jour par Thomas Noël il y a environ 7 ans
Yep, propose un patch. Au cas où, tu as la traceback de l'erreur ?
Mis à jour par Jean-Baptiste Jaillet il y a environ 7 ans
- Fichier 0001-environment-ignore-SSLError-timeout-in-check_operati.patch 0001-environment-ignore-SSLError-timeout-in-check_operati.patch ajouté
- Statut changé de Nouveau à En cours
- Assigné à mis à Jean-Baptiste Jaillet
- Patch proposed changé de Non à Oui
Alors pour la traceback j'ai un long truc :
SSLError ('The read operation timed out',) Django Version: 1.8.16 Exception Type: SSLError Exception Value: ('The read operation timed out',) Exception Location: /usr/lib/python2.7/ssl.py in read, line 608
Généré par l'appel des urllib2:
v = self._sslobj.read(len or 1024)
Mis à jour par Jean-Baptiste Jaillet il y a environ 7 ans
- Lié à Development #14935: Création d'une app ozwillo dans hobo/contrib ajouté
Mis à jour par Thomas Noël il y a environ 7 ans
Jean-Baptiste Jaillet a écrit :
Alors pour la traceback j'ai un long truc :
Je trouve ça pas long du tout... tu es sûr il n'y a pas plus de détail ? Le traceback permet de comprendre le chemin qui amène à l'erreur, ici on ne voit rien.
Mis à jour par Jean-Baptiste Jaillet il y a environ 7 ans
La trace complète:
Voir le commentaire de Fred plus bas
Mis à jour par Thomas Noël il y a environ 7 ans
Jean-Baptiste Jaillet a écrit :
La trace complète:
J'ai jamais vu une trace Python dans ce format... elle vient d'où ?
Mis à jour par Thomas Noël il y a environ 7 ans
Bon, tant pis, trace difficile à lire, mais y'a clairement un soucis sur la connexion ; qu'il faudrait bien comprendre. Je ne vois pas d'où ça pourrait venir, j'ai rien vu dans les logs nginx. En même temps c'est sur notre infra sictiam.dev qui passe par un proxy sur mesclun, c'est un peu particulier.
Anyway, le patch me semble ok.
(mais à ne pas pousser avant lundi, release en cours.... tu peux le poser en local sur sictiam.dev pour jouer)
Mis à jour par Frédéric Péters il y a environ 7 ans
Pour la forme, une trace toute propre :
Internal Server Error: /sites/check_operational/fargo/porte-doc Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 132, in get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/lib/python2.7/dist-packages/django/contrib/auth/decorators.py", line 22, in _wrapped_view return view_func(request, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/hobo/environment/views.py", line 183, in operational_check_view object.check_operational() File "/usr/lib/python2.7/dist-packages/hobo/environment/models.py", line 79, in check_operational fd = urllib2.urlopen(zone.href, timeout=10) File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen return opener.open(url, data, timeout) File "/usr/lib/python2.7/urllib2.py", line 437, in open response = meth(req, response) File "/usr/lib/python2.7/urllib2.py", line 550, in http_response 'http', request, response, code, msg, hdrs) File "/usr/lib/python2.7/urllib2.py", line 469, in error result = self._call_chain(*args) File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain result = func(*args) File "/usr/lib/python2.7/urllib2.py", line 656, in http_error_302 return self.parent.open(new, timeout=req.timeout) File "/usr/lib/python2.7/urllib2.py", line 431, in open response = self._open(req, data) File "/usr/lib/python2.7/urllib2.py", line 449, in _open '_open', req) File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain result = func(*args) File "/usr/lib/python2.7/urllib2.py", line 1240, in https_open context=self._context) File "/usr/lib/python2.7/urllib2.py", line 1200, in do_open r = h.getresponse(buffering=True) File "/usr/lib/python2.7/httplib.py", line 1111, in getresponse response.begin() File "/usr/lib/python2.7/httplib.py", line 444, in begin version, status, reason = self._read_status() File "/usr/lib/python2.7/httplib.py", line 400, in _read_status line = self.fp.readline(_MAXLINE + 1) File "/usr/lib/python2.7/socket.py", line 476, in readline data = self._sock.recv(self._rbufsize) File "/usr/lib/python2.7/ssl.py", line 714, in recv return self.read(buflen) File "/usr/lib/python2.7/ssl.py", line 608, in read v = self._sslobj.read(len or 1024) SSLError: ('The read operation timed out',)
Mis à jour par Benjamin Dauvergne il y a environ 7 ans
Il me semble que c'est une timeout TCP tout bête ça n'a rien à voir de
particulier avec SSL (simplement je pense qu'avec requests c'est caché derrière
la même exception).
Mis à jour par Frédéric Péters il y a environ 7 ans
Je dirais ack (même si peut-être on pourrait être plus large et attraper socket.error).
Mis à jour par Jean-Baptiste Jaillet il y a environ 7 ans
- Statut changé de En cours à Résolu (à déployer)
Poussé
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
environment: ignore SSLError timeout in check_operational (#15572)