Skip to content

Deadlock in exposition.py #375

@ochedru

Description

@ochedru

We are using prometheus-client 0.5.0.

Our server application regularly stops reporting prometheus metrics. A bunch of threads are stuck with the same stack:

Thread 0x00007fe2a3aba700 (most recent call first):
  File "/usr/lib/python3.6/site-packages/prometheus_client/values.py", line 27 in get
  File "/usr/lib/python3.6/site-packages/prometheus_client/metrics.py", line 546 in _child_samples
  File "/usr/lib/python3.6/site-packages/prometheus_client/metrics.py", line 175 in _samples
  File "/usr/lib/python3.6/site-packages/prometheus_client/metrics.py", line 182 in _multi_samples
  File "/usr/lib/python3.6/site-packages/prometheus_client/metrics.py", line 68 in collect
  File "/usr/lib/python3.6/site-packages/prometheus_client/registry.py", line 75 in collect
  File "/usr/lib/python3.6/site-packages/prometheus_client/exposition.py", line 89 in generate_latest
  File "/usr/lib/python3.6/site-packages/prometheus_client/exposition.py", line 146 in do_GET
  File "/usr/lib/python3.6/http/server.py", line 406 in handle_one_request
  File "/usr/lib/python3.6/http/server.py", line 418 in handle
  File "/usr/lib/python3.6/socketserver.py", line 724 in __init__
  File "/usr/lib/python3.6/socketserver.py", line 364 in finish_request
  File "/usr/lib/python3.6/socketserver.py", line 654 in process_request_thread
  File "/usr/lib/python3.6/threading.py", line 864 in run
  File "/usr/lib/python3.6/threading.py", line 916 in _bootstrap_inner
  File "/usr/lib/python3.6/threading.py", line 884 in _bootstrap

(We are exposing prometheus metrics with start_http_server()).
This looks like a thread died with the lock acquired.
I searched for something related to GC (#371), but there is no thread GCing at that time.
Any idea? Thank you.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions