Bug #40600
afterjob de masse, failed to allocate SSL context
0%
Description
afterjob (suite à action de masse) qui contient une action de notification, exécutée quantité de fois donc, et parfois cette erreur :
type = '<class 'wcs.qommon.errors.ConnectionError'>', value = 'error in HTTP request to ... (HTTPSConnectionPool(host='....', port=443): Max retries exceeded with url: /api/notification/add/.... (Caused by SSLError(SSLError('failed to allocate SSL context',),)))'
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a environ 4 ans
- Fichier 0001-misc-add-connection-pooling-and-keep-alive-40600.patch 0001-misc-add-connection-pooling-and-keep-alive-40600.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
requests → urllib3 → ssl.py → _ssl.c → openssl → SSL_CTX_new mais différents cas d'erreurs dedans et on n'a pas l'information suffisamment détaillée, comme on n'a pas de soucis mémoire peut-être un soucis de thread/lock,
ret->lock = CRYPTO_THREAD_lock_new(); if (ret->lock == NULL) { SSLerr(SSL_F_SSL_CTX_NEW, ERR_R_MALLOC_FAILURE); OPENSSL_free(ret); return NULL; }
De là, patch qui s'éloigne du problème précis, qui ajoute connection pooling / keep alive. (la modif dans publisher.py n'est même pas vraiment utile je pense, je ne vois pas de problème particulier à partager le contexte SSL entre tenants, mais bon, c'est une ligne)
Mis à jour par Thomas Noël il y a environ 4 ans
Comme le init_publish est appelé à chaque nouvelle requête, en fait on ne partage plus le contexte entre deux requêtes d'un même tenant, n'est-ce pas ? (Ça me va d'être ainsi conservateur, mais je pose quand même la question)
Mis à jour par Frédéric Péters il y a environ 4 ans
on ne partage plus
On n'a jamais partagé, et on ne se met pas à le partager.
Mis à jour par Thomas Noël il y a environ 4 ans
Frédéric Péters a écrit :
on ne partage plus
On n'a jamais partagé, et on ne se met pas à le partager.
Oui je voulais écrire : « on ne partage pas le contexte entre deux requêtes »
Mis à jour par Frédéric Péters il y a environ 4 ans
Yep, on ne partage pas, on pourrait entre requêtes successives vers le même process, indépendamment du tenant, en ne mettant pas la ligne dans publisher.py, mais conservatisme etc.
Mis à jour par Thomas Noël il y a environ 4 ans
- Statut changé de Solution proposée à Solution validée
Et donc, ok pour ce patch "conservateur"
(en fait à un moment je me suis dit que c'était intéressant d'avoir ça pour les webservices d'auto-complétion ou de géocodage, mais c'est donc pas l'objet ici, afterjob, etc).
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit de68242a59c0c1ddb717808671186777dc3f5934 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Tue Mar 10 11:11:55 2020 +0100 misc: add connection pooling and keep-alive (#40600)
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: add connection pooling and keep-alive (#40600)