deadtrickster / prometheus.erl

Prometheus.io client in Erlang
MIT License
341 stars 117 forks source link

Format fails for quantile summary when run before the 1st observe #145

Open Scott2e opened 2 years ago

Scott2e commented 2 years ago

It seems when declaring a new quantile_summary metric without labels, and reading from it (using prometheus_text_format.format) before any values are observed, an error occurs.

iex(1)> :prometheus_quantile_summary.declare([name: :test_blah, help: "help test"])
true
iex(2)> :prometheus_text_format.format(:default)
** (FunctionClauseError) no function clause matching in :quantile_estimator.quantile/6    

    The following arguments were given to :quantile_estimator.quantile/6:

        # 1
        0.5

        # 2
        #Function<1.111378939/2 in :quantile_estimator.f_targeted/1>

        # 3
        []

        # 4
        0

        # 5
        0

        # 6
        :undefined

    (quantile_estimator 0.2.1) deps/quantile_estimator/src/quantile_estimator.erl:152: :quantile_estimator.quantile/6
    (prometheus 4.9.1) src/metrics/prometheus_quantile_summary.erl:476: :prometheus_quantile_summary."-quantile_values/2-lc$^0/1-0-"/2
    (prometheus 4.9.1) src/metrics/prometheus_quantile_summary.erl:358: anonymous fn/6 in :prometheus_quantile_summary.collect_metrics/2
    (prometheus 4.9.1) src/model/prometheus_model_helpers.erl:131: :prometheus_model_helpers.create_mf/5
    (prometheus 4.9.1) src/metrics/prometheus_quantile_summary.erl:336: :prometheus_quantile_summary."-collect_mf/2-lc$^0/1-0-"/3
    (prometheus 4.9.1) src/metrics/prometheus_quantile_summary.erl:337: :prometheus_quantile_summary.collect_mf/2
    (prometheus 4.9.1) src/prometheus_collector.erl:156: :prometheus_collector.collect_mf/3
    (prometheus 4.9.1) src/prometheus_registry.erl:86: :prometheus_registry."-collect/2-lc$^0/1-0-"/3
Scott2e commented 2 years ago

Looks like there's a PR to fix this https://github.com/deadtrickster/prometheus.erl/pull/132