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 {