From e8a9add943ffd7cd22117d3244554270676ee21d Mon Sep 17 00:00:00 2001 From: "Neil E. Pearson" Date: Thu, 27 Jan 2022 13:02:09 +1100 Subject: [PATCH] FIX: stop raising NoMethodError when processing unregistered types --- lib/prometheus_exporter/server/collector.rb | 6 ++---- test/server/collector_test.rb | 8 ++++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/prometheus_exporter/server/collector.rb b/lib/prometheus_exporter/server/collector.rb index a26263a8..704d67b3 100644 --- a/lib/prometheus_exporter/server/collector.rb +++ b/lib/prometheus_exporter/server/collector.rb @@ -38,10 +38,8 @@ def process_hash(obj) if collector = @collectors[obj["type"]] collector.collect(obj) else - metric = @metrics[obj["name"]] - if !metric - metric = register_metric_unsafe(obj) - end + metric = @metrics[obj["name"]] || register_metric_unsafe(obj) or + return keys = obj["keys"] || {} if obj["custom_labels"] diff --git a/test/server/collector_test.rb b/test/server/collector_test.rb index 8cd223f1..abc35cc3 100644 --- a/test/server/collector_test.rb +++ b/test/server/collector_test.rb @@ -242,6 +242,14 @@ def test_it_can_pass_options_to_histogram assert_equal(text, collector.prometheus_metrics_text) end + def test_it_does_not_raise_on_fail_to_register + collector = PrometheusExporter::Server::Collector.new + json = { + type: :something_with_no_registered_collector + }.to_json + collector.process(json) # Should not raise an exception; previously raised NoMethodError + end + def test_it_can_collect_sidekiq_metrics collector = PrometheusExporter::Server::Collector.new client = PipedClient.new(collector)