From 5ccca493186f3746ccd3f33d7234b95b015ac159 Mon Sep 17 00:00:00 2001 From: Ehsan Saei <71217171+esigo@users.noreply.github.com> Date: Wed, 22 Jun 2022 16:33:35 +0200 Subject: [PATCH] fix prometheus exporter failure type (#1460) --- exporters/prometheus/src/exporter.cc | 9 +++++++-- exporters/prometheus/src/exporter_utils.cc | 14 +++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/exporters/prometheus/src/exporter.cc b/exporters/prometheus/src/exporter.cc index a0bd9e27ab..ee946b3d9e 100644 --- a/exporters/prometheus/src/exporter.cc +++ b/exporters/prometheus/src/exporter.cc @@ -30,7 +30,7 @@ PrometheusExporter::PrometheusExporter(const PrometheusExporterOptions &options) */ PrometheusExporter::PrometheusExporter() : is_shutdown_(false) { - collector_ = std::unique_ptr(new PrometheusCollector); + collector_ = std::unique_ptr(new PrometheusCollector(3)); } /** @@ -45,10 +45,15 @@ sdk::common::ExportResult PrometheusExporter::Export( { return sdk::common::ExportResult::kFailure; } - else if (collector_->GetCollection().size() + 1 > (size_t)collector_->GetMaxCollectionSize()) + else if (collector_->GetCollection().size() + data.instrumentation_info_metric_data_.size() > + (size_t)collector_->GetMaxCollectionSize()) { return sdk::common::ExportResult::kFailureFull; } + else if (data.instrumentation_info_metric_data_.empty()) + { + return sdk::common::ExportResult::kFailureInvalidArgument; + } else { collector_->AddMetricData(data); diff --git a/exporters/prometheus/src/exporter_utils.cc b/exporters/prometheus/src/exporter_utils.cc index 383925f988..8dec0f5de4 100644 --- a/exporters/prometheus/src/exporter_utils.cc +++ b/exporters/prometheus/src/exporter_utils.cc @@ -62,9 +62,17 @@ std::vector PrometheusExporterUtils::TranslateT nostd::get(point_data_attr.point_data); auto boundaries = histogram_point_data.boundaries_; auto counts = histogram_point_data.counts_; - SetData(std::vector{nostd::get(histogram_point_data.sum_), - (double)histogram_point_data.count_}, - boundaries, counts, point_data_attr.attributes, time, &metric_family); + double sum = 0.0; + if (nostd::holds_alternative(histogram_point_data.sum_)) + { + sum = nostd::get(histogram_point_data.sum_); + } + else + { + sum = nostd::get(histogram_point_data.sum_); + } + SetData(std::vector{sum, (double)histogram_point_data.count_}, boundaries, + counts, point_data_attr.attributes, time, &metric_family); } else // Counter, Untyped {