Projet

Général

Profil

Development #47122

clean_nonces() n'est jamais exécuté

Ajouté par Christophe Siraut il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
29 septembre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

et les fichiers s'accumulent.


Fichiers


Demandes liées

Lié à w.c.s. - Development #47127: remplacer fnctl.flock() par locket dans clean_session()Fermé29 septembre 2020

Actions

Révisions associées

Révision b8ba687a (diff)
Ajouté par Benjamin Dauvergne il y a plus de 3 ans

misc: fix locking in clean_nonces (#47122)

Historique

#1

Mis à jour par Christophe Siraut il y a plus de 3 ans

le delta était comparé en secondes.

#3

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

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

delta c'est bien des secondes, now aussi et os.stat()[8] aussi; is_url_signed() crée le fichier nonce avec un ctime 30 secondes dans le futur, sachant que le timestamp d'une signature a une durée de vie de 30 secondes et clean_nonces() se donne 60 secondes en plus pour faire le ménage, dans l'idée qu'on a le droit a jusqu'à 60 secondes de décalage dans les timestamps.

J'aimerai bien voir un test qui foire parce que pour l'instant j'ai cherché tout seul je n'ai toujours pas compris pourquoi ça ne s'exécute pas (je ne me remet pas ça en cause, ça ne s'exécute pas c'est certain), quelqu'un a tenté de débugger à base de print en prod pour voir pourquoi ça ne supprime rien ?

Je note ici que le champ accédé est 8, ST_MTIME, alors que ça devrait être 9, ST_CTIME (mais pour un fichier créé et jamais touché ça ne devrait pas poser de souci).,

#4

Mis à jour par Frédéric Péters il y a plus de 3 ans

  • Patch proposed changé de Oui à Non

Bon, clean_nonces s'exécute, c'est sûr. Et ça doit être des secondes, c'est sûr aussi.

Maintenant, ce patch a-t-il été testé avec succès sur le SaaS ?

Parce que perso mon idée du problème c'est qu'il était peut-être lié au NFS parce que regarder ailleurs donne bien des nonces vidés, mais je n'ai pas creusé (j'ai juste commencé à me donner un outil avec #47055).

#5

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

En fait c'est l'appel flock() qui foire à chaque fois, visiblement il faut ouvrir le fichier avec O_RDWR.

PS: manpage de fnctl :

EBADF
    fs n'est pas un descripteur de fichier ouvert, ou la commande était F_SETLK ou F_SETLKW et le mode d'ouverture du descripteur de fichier ne correspond pas à celui du type de verrou demandé. 

debug sur wcs.node1.dev.saas.entrouvert.org:
/var/lib/wcs/demo.dev.au-quotidien.com/cleaning_nonces.lock
30
[Errno 9] Bad file descriptor

#6

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

#7

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

Remplacé le lock maison par locket comme ailleurs dans le code.

#8

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

Je suppose que clean_sessions ne marche pas non plus, ça utilise la même primitive (qui marche dans les tests mais donc peut-être pas sur NFS, ou peut-être pas dans le process qui n'a pas créé le fichier initialement, on peut chercher ou juste remplacer par locket qui marche).

#9

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

  • Lié à Development #47127: remplacer fnctl.flock() par locket dans clean_session() ajouté
#10

Mis à jour par Christophe Siraut il y a plus de 3 ans

  • Statut changé de Solution proposée à Solution validée
  • Assigné à changé de Christophe Siraut à Benjamin Dauvergne

ok pour moi d'utiliser locket.

#11

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

  • Statut changé de Solution validée à Résolu (à déployer)
commit b8ba687a2eeb495ed81683d0eb93ff232d17618d
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Tue Sep 29 14:38:48 2020 +0200

    misc: fix locking in clean_nonces (#47122)
#12

Mis à jour par Frédéric Péters il y a plus de 3 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF