prometheus / prometheus/client_python
Metrics without labels missing breaks some codepath
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 4.4k
- Forks
- 876
- Merge moyen
- 8 j 4 h
- PR mergées (30 j)
- 1
Description
When initialized without labels, it seems that the resulting metrics objects will lack some instance variables.
Minimal example:
from prometheus_client import Gauge, generate_latest
cc = Gauge("dummy_count", "POC")
if __name__ == '__main__':
cc.set(42)
print(generate_latest().decode()) # OK
cc.clear() # raises
"""
Traceback (most recent call last):
File "prom_example.py", line 10, in <module>
cc.clear() # raises
^^^^^^^^^^
File …/site-packages/prometheus_client/metrics.py", line 213, in clear
with self._lock:
^^^^^^^^^^
AttributeError: 'Gauge' object has no attribute '_lock'
"""
The same code with declared labels will properly clear the metrics data
I came up upon this when adding a new metric and forgetting to add the labels.
(I'm using .clear() to reset the metrics during tests)
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Reproduisez l’exemple minimal de l’issue, puis examinez la méthode clear dans metrics.py à la ligne 213 ainsi que le chemin d’initialisation d’un Gauge sans labels. Confirmez que l’appel de clear() sur une métrique sans labels déclarés ne lève plus l’AttributeError signalée et que le cas avec labels continue de fonctionner.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- observability
- Type d'issue
- Bug
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100