Projet

Général

Profil

Development #26911

authentic: empêcher celery/kombu de manipuler le timeout par défaut des sockets

Ajouté par Benjamin Dauvergne il y a plus de 5 ans. Mis à jour il y a environ 2 ans.

Statut:
Rejeté
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
02 octobre 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Actuellement la notification se fait dans un thread qui partage malheureusement
ce timeout avec le reste d'authentic, le but ici est de remplacer cela par un
simple os.fork().


Fichiers


Demandes liées

Lié à Hobo - Bug #26351: Forcer le timeout des socket de mailFermé12 septembre 2018

Actions

Historique

#1

Mis à jour par Benjamin Dauvergne il y a plus de 5 ans

Le premire patch c'est kdo.

Le deuxième c'est assez moche et j'ai du pas mal me contorsionner pour arriver
à vérifier que notify_agents() était bien appelé dans le processus fils (et je
me dis que ça pourrait tout de même foirer si jamais les pickles posé dans la
queue dépasse la taille de buffer des pipes système, en effet il y a un
potentiel deadlock entre le waitpid() dans le parent et l'écriture dans le pipe
qui empêche l'appel à exit() si ça bloque, mais ça ne concerne que les tests).

En attendant ça semble marcher et les tests passent (reste à faire un test
grandeur nature).

#4

Mis à jour par Benjamin Dauvergne il y a plus de 5 ans

  • Statut changé de Solution proposée à Nouveau
#5

Mis à jour par Benjamin Dauvergne il y a plus de 5 ans

  • Tracker changé de Support à Development
  • Statut changé de Nouveau à Solution proposée
#7

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

  • Statut changé de Solution proposée à En cours

À refaire via un worker uwsgi quand a2 y sera passé.

#8

Mis à jour par Benjamin Dauvergne il y a environ 2 ans

  • Statut changé de En cours à Rejeté

Personne ne semble embêter par ce problème qui peut-être n'existe plus.

#9

Mis à jour par Frédéric Péters il y a environ 2 ans

Modulo les problèmes de timeout LDAP en pagaille qui pourraient être ça ? (#60277)

#10

Mis à jour par Emmanuel Cazenave il y a environ 2 ans

  • Lié à Bug #26351: Forcer le timeout des socket de mail ajouté
#11

Mis à jour par Benjamin Dauvergne il y a environ 2 ans

  • Statut changé de Rejeté à Nouveau

Pas impossible oui.

#13

Mis à jour par Benjamin Dauvergne il y a environ 2 ans

Voilà, très très simple, à tester en live.

#14

Mis à jour par Benjamin Dauvergne il y a environ 2 ans

  • Statut changé de Solution proposée à Rejeté

Mais c'est idiot en fait, on utilise plus le provisionning celery nul part vu que c'est à True par défaut partout, ce bug n'existe plus.

#16

Mis à jour par Emmanuel Cazenave il y a environ 2 ans

Mais l'agent a2 écoute reçǫit quand même les messages de déploiement via celery/kombu.

#17

Mis à jour par Benjamin Dauvergne il y a environ 2 ans

Emmanuel Cazenave a écrit :

Mais l'agent a2 écoute reçǫit quand même les messages de déploiement via celery/kombu.

Le souci c'est ce qui se passe dans les process authentic (là où sont faits les appels SMTP pour le problème précédent, et maintenant les appels LDAP), et la seule partie du provisionning dans a2 c'est l'émission des messages, et maintenant ça n'utilise qu'HTTP et plus Celery/AMQP. Il n'en reçoit pas et s'il en recevait ce serait via le process de l'agent de toute façon. L'agent il ne tourne pas dans a2, tout va bien.

#18

Mis à jour par Frédéric Péters il y a environ 2 ans

Je n'ai pas cherché où celery faisait sa modification de timeout, si c'est à l'import de fait la présence de hobo.agent.common dans INSTALLED_APPS suffirait à casser les choses.

#19

Mis à jour par Benjamin Dauvergne il y a environ 2 ans

Frédéric Péters a écrit :

Je n'ai pas cherché où celery faisait sa modification de timeout, si c'est à l'import de fait la présence de hobo.agent.common dans INSTALLED_APPS suffirait à casser les choses.

Un rapide import socket; def f(*args, **kwargs); raise Exception; socket.setdefaulttimeout = f en début des script manage.py puis un shell ne m'a pas permis de découvrir d'appel à cette fonction lors de l'initialisation de Django. Le plus simple ce serait de virer complètement hobo.agent.common.notify_agents et de voir ce que ça donne.

#20

Mis à jour par Emmanuel Cazenave il y a environ 2 ans

Frédéric Péters a écrit :

Je n'ai pas cherché où celery faisait sa modification de timeout, si c'est à l'import de fait la présence de hobo.agent.common dans INSTALLED_APPS suffirait à casser les choses.

Ce n'est pas à l'import (https://github.com/celery/kombu/blob/master/kombu/connection.py#L350), Benjamin doit avoir raison (j'oubliais que a2 et l'agent a2 sont dans des processus différents).

Formats disponibles : Atom PDF