Skip to content

Commit 8652972

Browse files
authored
cleanup(otel): respect noexcept in GCM exporter (#13984)
1 parent ac5899a commit 8652972

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

google/cloud/opentelemetry/monitoring_exporter.cc

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "google/cloud/opentelemetry/monitoring_exporter.h"
1616
#include "google/cloud/monitoring/v3/metric_client.h"
1717
#include "google/cloud/opentelemetry/internal/time_series.h"
18+
#include "google/cloud/internal/noexcept_action.h"
1819
#include "google/cloud/log.h"
1920
#include "google/cloud/project.h"
2021
#include <memory>
@@ -41,7 +42,21 @@ class MonitoringExporter final
4142
opentelemetry::sdk::common::ExportResult Export(
4243
opentelemetry::sdk::metrics::ResourceMetrics const& data) noexcept
4344
override {
44-
// TODO(#13869) - Respect `noexcept` qualifier
45+
auto result =
46+
internal::NoExceptAction<opentelemetry::sdk::common::ExportResult>(
47+
[&] { return ExportImpl(data); });
48+
if (result) return *std::move(result);
49+
GCP_LOG(WARNING) << "Exception thrown while exporting metrics.";
50+
return opentelemetry::sdk::common::ExportResult::kFailure;
51+
}
52+
53+
bool ForceFlush(std::chrono::microseconds) noexcept override { return false; }
54+
55+
bool Shutdown(std::chrono::microseconds) noexcept override { return true; }
56+
57+
private:
58+
opentelemetry::sdk::common::ExportResult ExportImpl(
59+
opentelemetry::sdk::metrics::ResourceMetrics const& data) {
4560
auto request = ToRequest(data);
4661
request.set_name(project_.FullName());
4762
if (request.time_series().empty()) {
@@ -62,11 +77,6 @@ class MonitoringExporter final
6277
return opentelemetry::sdk::common::ExportResult::kFailure;
6378
}
6479

65-
bool ForceFlush(std::chrono::microseconds) noexcept override { return false; }
66-
67-
bool Shutdown(std::chrono::microseconds) noexcept override { return true; }
68-
69-
private:
7080
Project project_;
7181
monitoring_v3::MetricServiceClient client_;
7282
};

0 commit comments

Comments
 (0)