Skip to content

Commit 46ac333

Browse files
committed
Merge commit '0b712dd2f759d9591757e7f9d55cf44be42b8514'
2 parents 463ce2f + 0b712dd commit 46ac333

File tree

3 files changed

+62
-1
lines changed

3 files changed

+62
-1
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ Increment the:
2424
* [EXPORTER] Fix scope attributes missing from otlp traces metrics
2525
[#3185](https://github.com/open-telemetry/opentelemetry-cpp/pull/3185)
2626

27+
* [EXPORTER] Fix throw in OtlpGrpcMetricExporter with shared grpc client
28+
[#3243](https://github.com/open-telemetry/opentelemetry-cpp/pull/3243)
29+
2730
## [1.18 2024-11-25]
2831

2932
* [EXPORTER] Fix crash in ElasticsearchLogRecordExporter

exporters/otlp/src/otlp_grpc_metric_exporter.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ OtlpGrpcMetricExporter::OtlpGrpcMetricExporter(
5050
OtlpGrpcMetricExporter::OtlpGrpcMetricExporter(const OtlpGrpcMetricExporterOptions &options,
5151
const std::shared_ptr<OtlpGrpcClient> &client)
5252
: options_(options),
53+
aggregation_temporality_selector_{
54+
OtlpMetricUtils::ChooseTemporalitySelector(options_.aggregation_temporality)},
5355
client_(client),
5456
client_reference_guard_(OtlpGrpcClientFactory::CreateReferenceGuard())
5557
{
@@ -62,6 +64,8 @@ OtlpGrpcMetricExporter::OtlpGrpcMetricExporter(
6264
std::unique_ptr<proto::collector::metrics::v1::MetricsService::StubInterface> stub,
6365
const std::shared_ptr<OtlpGrpcClient> &client)
6466
: options_(OtlpGrpcMetricExporterOptions()),
67+
aggregation_temporality_selector_{
68+
OtlpMetricUtils::ChooseTemporalitySelector(options_.aggregation_temporality)},
6569
client_(client),
6670
client_reference_guard_(OtlpGrpcClientFactory::CreateReferenceGuard()),
6771
metrics_service_stub_(std::move(stub))

exporters/otlp/test/otlp_grpc_metric_exporter_test.cc

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@
2727

2828
# include "opentelemetry/exporters/otlp/protobuf_include_suffix.h"
2929

30+
# include "opentelemetry/exporters/otlp/otlp_grpc_client.h"
31+
# include "opentelemetry/exporters/otlp/otlp_grpc_client_factory.h"
32+
3033
# include "opentelemetry/sdk/trace/simple_processor.h"
3134
# include "opentelemetry/sdk/trace/tracer_provider.h"
3235
# include "opentelemetry/trace/provider.h"
@@ -52,12 +55,34 @@ class OtlpGrpcMetricExporterTestPeer : public ::testing::Test
5255
{
5356
public:
5457
std::unique_ptr<sdk::metrics::PushMetricExporter> GetExporter(
55-
std::unique_ptr<proto::collector::metrics::v1::MetricsService::StubInterface> &stub_interface)
58+
const OtlpGrpcMetricExporterOptions &options)
59+
{
60+
return std::unique_ptr<sdk::metrics::PushMetricExporter>(new OtlpGrpcMetricExporter(options));
61+
}
62+
63+
std::unique_ptr<sdk::metrics::PushMetricExporter> GetExporter(
64+
std::unique_ptr<proto::collector::metrics::v1::MetricsService::StubInterface> stub_interface)
5665
{
5766
return std::unique_ptr<sdk::metrics::PushMetricExporter>(
5867
new OtlpGrpcMetricExporter(std::move(stub_interface)));
5968
}
6069

70+
std::unique_ptr<sdk::metrics::PushMetricExporter> GetExporter(
71+
std::unique_ptr<proto::collector::metrics::v1::MetricsService::StubInterface> stub_interface,
72+
std::shared_ptr<OtlpGrpcClient> client)
73+
{
74+
return std::unique_ptr<sdk::metrics::PushMetricExporter>(
75+
new OtlpGrpcMetricExporter(std::move(stub_interface), std::move(client)));
76+
}
77+
78+
std::unique_ptr<sdk::metrics::PushMetricExporter> GetExporter(
79+
const OtlpGrpcMetricExporterOptions &options,
80+
std::shared_ptr<OtlpGrpcClient> client)
81+
{
82+
return std::unique_ptr<sdk::metrics::PushMetricExporter>(
83+
new OtlpGrpcMetricExporter(options, std::move(client)));
84+
}
85+
6186
// Get the options associated with the given exporter.
6287
const OtlpGrpcMetricExporterOptions &GetOptions(std::unique_ptr<OtlpGrpcMetricExporter> &exporter)
6388
{
@@ -206,6 +231,35 @@ TEST_F(OtlpGrpcMetricExporterTestPeer, ConfigUnknownInsecureFromEnv)
206231
}
207232
# endif
208233

234+
TEST_F(OtlpGrpcMetricExporterTestPeer, CheckGetAggregationTemporality)
235+
{
236+
auto options = OtlpGrpcMetricExporterOptions();
237+
options.aggregation_temporality = PreferredAggregationTemporality::kCumulative;
238+
239+
auto client = OtlpGrpcClientFactory::Create(options);
240+
241+
auto exporter0 = GetExporter(options);
242+
auto exporter1 = GetExporter(client->MakeMetricsServiceStub());
243+
auto exporter2 = GetExporter(options, client);
244+
auto exporter3 = GetExporter(client->MakeMetricsServiceStub(), client);
245+
246+
EXPECT_EQ(
247+
opentelemetry::sdk::metrics::AggregationTemporality::kCumulative,
248+
exporter0->GetAggregationTemporality(opentelemetry::sdk::metrics::InstrumentType::kCounter));
249+
250+
EXPECT_EQ(
251+
opentelemetry::sdk::metrics::AggregationTemporality::kCumulative,
252+
exporter1->GetAggregationTemporality(opentelemetry::sdk::metrics::InstrumentType::kCounter));
253+
254+
EXPECT_EQ(
255+
opentelemetry::sdk::metrics::AggregationTemporality::kCumulative,
256+
exporter2->GetAggregationTemporality(opentelemetry::sdk::metrics::InstrumentType::kCounter));
257+
258+
EXPECT_EQ(
259+
opentelemetry::sdk::metrics::AggregationTemporality::kCumulative,
260+
exporter3->GetAggregationTemporality(opentelemetry::sdk::metrics::InstrumentType::kCounter));
261+
}
262+
209263
} // namespace otlp
210264
} // namespace exporter
211265
OPENTELEMETRY_END_NAMESPACE

0 commit comments

Comments
 (0)