zestedesavoir / zds-site

Cœur du projet technique de Zeste de Savoir
https://zestedesavoir.com
Other
268 stars 161 forks source link

ValueError: No JSON object could be decoded #1639

Closed gustavi closed 9 years ago

gustavi commented 9 years ago

C'est ce qui produit le plus d'erreurs 500 sur le site (plus de 6600 et rien que 595 hier soir).

C'est un bug qui sévit de temps à autre à une période donnée (cf http://i.imgur.com/bkrmFUR.png ).

Ping @SpaceFox : est-ce que c'est lié au serveur de prod ?

C'est cette ligne qui fait tout planter : https://github.com/zestedesavoir/zds-site/blob/dev/zds/tutorial/models.py#L250. Il semblerait que les fichiers ne soient pas disponibles. Plus inquiétant encore : c'est sur la page d’accueil.

Il faut voir d'où le problème vient exactement et si c'est du au serveur de prod et que cela arrive de temps à autre, afficher un message d'erreur du genre « cette information est temporairement indisponible » et balance une info à Sentry au lieu d'une 500.

Les logs :

json.decoder in raw_decode
ValueError: No JSON object could be decoded

Stacktrace (most recent call last):
  File "django/core/handlers/base.py", line 112, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "zds/pages/views.py", line 30, in home
    data = tuto.load_json_for_public()
  File "zds/tutorial/models.py", line 250, in load_json_for_public
    data = json_reader.loads(mantuto)
  File "json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "json/decoder.py", line 365, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "json/decoder.py", line 383, in raw_decode
    raise ValueError("No JSON object could be decoded")

PS : ce n'est PAS la même erreur que https://github.com/zestedesavoir/zds-site/issues/1343#issuecomment-56656909

gustavi commented 9 years ago

En fait ça touche pas que la page d'accueil et on est à beaucoup plus que 6600.

SpaceFox commented 9 years ago

C'est pas un doublon de https://github.com/zestedesavoir/zds-site/issues/1544 ?

gustavi commented 9 years ago

Non non, aucun rapport. Là on parle d'une grosse partie des .JSON qui sont inaccessibles pendant une certaine période. Regarde les logs vers hier 19h et tu vas vite voir qu'il y avait un problème.

PS : @SpaceFox le Sentry de prod et preprod semble confondus alors qu'il faudrait les séparer !

GerardPaligot commented 9 years ago

A première vue, nous pourrions avoir des informations plus précises si nous utilisons simplejson plutôt que json : http://stackoverflow.com/a/14956465/3006692

Eskimon commented 9 years ago

C'est deja le cas non ? https://github.com/zestedesavoir/zds-site/blob/dev/zds/tutorial/models.py#L6

GerardPaligot commented 9 years ago

Avec cet import, je n'ai juste aucune idée de l'import qui est utilisé et très sincèrement, ça semble bien dégueulasse comme solution.

Alex-D commented 9 years ago

@GerardPaligot c'est pour la compatibilité multi OS. En prod c'est ujson qui est pris si je me souviens bien.

firm1 commented 9 years ago

J'avoue que là comme ça les titres des issues ne sont pas très parlant pour quelqu'un qui souhaite les corriger.

Il faudrait (quand l'origine du problème sera trouvé) noter le titre adéquat.

Et pour @GerardPaligot, @Alex-D a bien répondu, on a une lib (usjon) qui est utilisée pour la lecture sur la prod car elle est plus rapide, cependant, elle n'est pas compatible multi-os, raison pour laquelle par défaut on utilise json de base. Et simplejson ne donnera pas plus d'infos que ce qu'on a aujourd'hui.

gustavi commented 9 years ago

Ça c'est reproduit entre 17h50 et 18h00 aujourd'hui. Quelqu'un peut investiguer les logs ?

GerardPaligot commented 9 years ago

Tu dois parler des erreurs 500 survenues après la publication du tutoriel Le droit d'auteur, Creative Commons et les licences sur Zeste de Savoir que j'ai validé.

Il y a eu une première publication foireuse à cause d'images SVG dans le tutoriel. Les images ont été retirées puis il y a eu une nouvelle publication qui a fonctionné mais qui a mené à des erreurs 500. Cela doit être lié je suppose.

firm1 commented 9 years ago

Bon visiblement cette erreur n'est qu'une conséquence d'autre chose (publication échouée) et ne se reproduit plus depuis un moment.

Je ferme donc, et on ré-ouvrira en cas de soucis.

gustavi commented 9 years ago

Je réouvre car on en mange encore suite à la tentative de publication du tuto arduino en preprod.

Eskimon commented 9 years ago

On a toujours besoin de ce ticket ?

firm1 commented 9 years ago

Je ne pense pas. On peut le fermer

2015-04-16 14:32 GMT+02:00 Eskimon notifications@github.com:

On a toujours besoin de ce ticket ?

— Reply to this email directly or view it on GitHub https://github.com/zestedesavoir/zds-site/issues/1639#issuecomment-93722658 .

pierre-24 commented 9 years ago

Bon, ben l'article sur l'AG a fait réaparaitre toussa ... (voir Sentry)