Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Serveur https://stylo.ecrituresnumeriques.ca actuellement down (502) #579

Closed
antoinentl opened this issue Mar 10, 2022 · 6 comments · Fixed by #600
Closed

Serveur https://stylo.ecrituresnumeriques.ca actuellement down (502) #579

antoinentl opened this issue Mar 10, 2022 · 6 comments · Fixed by #600

Comments

@antoinentl
Copy link
Member

Le (bout de) serveur https://stylo.ecrituresnumeriques.ca est actuellement indisponible (erreur 502), ce qui signifie que les preview de Stylo ne fonctionnent pas, c'est-à-dire que la prévisualisation ne s'affiche pas et renvoie une page indiquant une erreur 502.

@thom4parisot
Copy link
Member

thom4parisot commented Mar 10, 2022

Je suis connecté dessus à l'instant même.

image

Techniquement stylo.ecrituresnumeriques.ca est physiquement le même serveur que stylo.huma-num.fr.

Si ça ne fonctionne pas à cette heure-ci, et que tu as un VPN, tu peux tester depuis un autre pays ?

@antoinentl
Copy link
Member Author

Mon explication n'était pas claire, désolé, il s'agit plus spécifiquement de la preview, exemple : https://stylo.huma-num.fr/article/622a19220f5acb0012d1fa9f/preview

Et résultat :

Capture d’écran de 2022-03-10 10-31-10

@thom4parisot
Copy link
Member

thom4parisot commented Mar 10, 2022

Okay ! Effectivement le service est tombé. Je viens de le relancer — il va peut-être retomber à l'avenir, je ne sais pas encore dans quelles conditions.

@Mogztter l'erreur dans les logs :

export-stylo     | ClientError: Cannot return null for non-nullable field RootQuery.article.: {"response":{"errors":[{"message":"Cannot return null for non-nullable field RootQuery.article.","locations":[{"line":2,"column":5}],"path":["article"]}],"data":null,"status":500,"headers":{}},"request":{"query":"query ($articleId: ID!) {\n    article (article:$articleId) {\n      _id\n      title\n\n      workingVersion {\n        bib\n        yaml\n        md\n      }\n    }\n  }","variables":{"articleId":"620e6e345aeb010013e41d82"}}}

…

export-stylo     | node:events:498
export-stylo     |       throw er; // Unhandled 'error' event
export-stylo     |       ^
export-stylo     |
export-stylo     | Error [ERR_STREAM_WRITE_AFTER_END]: write after end
export-stylo     |     at new NodeError (node:internal/errors:371:5)
export-stylo     |     at write_ (node:_http_outgoing:748:11)
export-stylo     |     at ServerResponse.write (node:_http_outgoing:707:15)
export-stylo     |     at Archiver.ondata (/usr/src/app/node_modules/readable-stream/lib/_stream_readable.js:681:20)
export-stylo     |     at Archiver.emit (node:events:520:28)
export-stylo     |     at addChunk (/usr/src/app/node_modules/readable-stream/lib/_stream_readable.js:298:12)
export-stylo     |     at readableAddChunk (/usr/src/app/node_modules/readable-stream/lib/_stream_readable.js:280:11)
export-stylo     |     at Archiver.Readable.push (/usr/src/app/node_modules/readable-stream/lib/_stream_readable.js:241:10)
export-stylo     |     at Archiver.Transform.push (/usr/src/app/node_modules/readable-stream/lib/_stream_transform.js:139:32)
export-stylo     |     at Archiver.afterTransform (/usr/src/app/node_modules/readable-stream/lib/_stream_transform.js:88:10)
export-stylo     | Emitted 'error' event on ServerResponse instance at:
export-stylo     |     at emitErrorNt (node:_http_outgoing:726:9)
export-stylo     |     at processTicksAndRejections (node:internal/process/task_queues:84:21) {
export-stylo     |   code: 'ERR_STREAM_WRITE_AFTER_END'

C'est pas encore clair dans ma tête pourquoi on écrit 2 fois la réponse… (peut-être une condition qui retourne 2 tentatives de response.send() ?

@ggrossetie
Copy link
Collaborator

@thom4parisot Est-ce que tu fais référence à ce bout de code ?

stylo/export/src/export.js

Lines 245 to 256 in 455ca3b

try {
const articleExportContext = await getArticleExportContext(identifier)
exportZip({ ...articleExportContext, id: identifier }, res, req)
} catch (e) {
if (e instanceof FindByIdNotFoundError) {
// it might be a version!
const version = await getVersionById(identifier)
const { bib, yaml, md, _id: id } = version
exportZip({ bib, yaml, md, id, title: id }, res, req)
} else {
throw e
}

On avait mis ça en place car avec la notion de workingVersion on passe soit un identifiant de version, soit un identifiant d'article. De mémoire le service d'export "legacy" utilise cette route et pour éviter des changements côté Marcello on a mis en place cette verrue.

D'après l'erreur, je dirais que 620e6e345aeb010013e41d82 est un identifiant de version et non un identifiant d'article, c'est la raison pour laquelle on a l'erreur Cannot return null for non-nullable field RootQuery.article. car l'article n'est pas trouvé.
On passe donc dans le catch et l'exception est de type FindByIdNotFoundError. On récupère la version et on tente de renvoyer un zip dans la réponse. Apparemment la réponse (stream) est déjà fermée et on ne peut pas écrire dedans mais je ne sais pas l'expliquee...

@thom4parisot
Copy link
Member

Je crois que j'ai capté :

  • createZipArchive() doit surement générer une erreur, ce qui fait entrer dans ce bloc:

    stylo/export/src/export.js

    Lines 192 to 194 in 455ca3b

    archive.on('error', function (err) {
    res.status(500).send({ error: err.message })
    })
  • les fonctions exportXxxYYY() contiennent un try/catch, dont le catch() contient un errorHandler() qui tente d'écrire la réponse (à nouveau)

@VanessaClothildeB
Copy link

erreur502_stylo
Bonsoir,
j'ai eu une erreur 502 quand je cliquais sur Connect with Huma-Num au niveau de la page d'accueil _Welcome to Stylo _ (le login de Stylo en fait). Ça vient juste de se débloquer, vers 23h (après une heure de stress et de tragédie). Je suis au Canada, à Montréal. C'était juste pour le signaler.
En m'excusant du dérangement,
Bon courage!
Vanessa

ggrossetie added a commit that referenced this issue Mar 23, 2022
Do not send a response twice.
ggrossetie added a commit that referenced this issue Mar 23, 2022
Do not send a response twice.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants