prometheus / prometheus/client_python

write_to_textfile: tmp file is left behind if generator code fails

Ouverte
#607 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

enhancement
Langage dominant
Python
Étoiles
4.4k
Forks
876
Merge moyen
8 j 4 h
PR mergées (30 j)
1

Description

In the write_to_textfile function, the code to run the collector registry is in the temp file creation block: https://github.com/prometheus/client_python/blob/master/prometheus_client/exposition.py#L202-L203

In my case, I had an error in my collector code (run by generate_latest(registry)). This resulted in many tmp files left over from the errors.

I'm wondering if it would be preferable to run the code before the temp file block, e.g.:

    tmppath = '%s.%s.%s' % (path, os.getpid(), threading.current_thread().ident)
    out = generate_latest(registry)
    with open(tmppath, 'wb') as f:
        f.write(out)
    # rename(2) is atomic.
    os.rename(tmppath, path)

Unless leaving temp files behind is the desired/intended behavior.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez dans prometheus_client/exposition.py, au niveau de l’implémentation de write_to_textfile vers les lignes 202-203, où generate_latest(registry) s’exécute pendant la création du fichier temporaire. Suivez le chemin d’échec lorsqu’une exception est levée par le code du collector et vérifiez que le comportement obtenu ne laisse aucun fichier temporaire tout en préservant le flux de renommage atomique.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
backend
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.