prometheus / prometheus/client_python
Metrics without labels missing breaks some codepath
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 4.4k
- Fork
- 876
- Merge medio
- 8g 4h
- PR unite (30g)
- 1
Descrizione
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)
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Riproduci l’esempio minimo dell’issue, quindi esamina il metodo clear in metrics.py alla riga 213 e il percorso di inizializzazione di un Gauge senza label. Conferma che chiamare clear() su una metrica senza label dichiarate non sollevi più l’AttributeError riportato e che il caso con label continui a funzionare.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- observability
- Tipo di issue
- Bug
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 45/100