Projet

Général

Profil

Bug #15572

check_operational: SSLError (the read operation timed out)

Ajouté par Jean-Baptiste Jaillet il y a environ 7 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Jean-Baptiste Jaillet
Catégorie:
-
Version cible:
-
Début:
23 mars 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Lié à Hobo - Development #14935: Création d'une app ozwillo dans hobo/contribFermé09 février 2017

Actions

Révisions associées

Révision 1875f739 (diff)
Ajouté par Jean-Baptiste Jaillet il y a environ 7 ans

environment: ignore SSLError timeout in check_operational (#15572)

Historique

#1

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

#2

Mis à jour par Jean-Baptiste Jaillet il y a environ 7 ans

  • Description mis à jour (diff)
#3

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 ?

#4

Mis à jour par Jean-Baptiste Jaillet il y a environ 7 ans

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)

#5

Mis à jour par Jean-Baptiste Jaillet il y a environ 7 ans

#6

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.

#7

Mis à jour par Jean-Baptiste Jaillet il y a environ 7 ans

La trace complète:

Voir le commentaire de Fred plus bas

#8

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ù ?

#9

Mis à jour par Jean-Baptiste Jaillet il y a environ 7 ans

c'est le log que j'ai par les mails.

#10

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)

#11

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',)
#12

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).

#13

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).

#14

Mis à jour par Jean-Baptiste Jaillet il y a environ 7 ans

  • Statut changé de En cours à Résolu (à déployer)

Poussé

#15

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

Formats disponibles : Atom PDF