@@ -173,10 +173,12 @@ static sdk::common::ExportResult InternalDelegateAsyncExport(
173173 OTEL_INTERNAL_LOG_ERROR (" [OTLP GRPC Client] ERROR: Export "
174174 << export_data_count << " " << export_data_name
175175 << " failed, exporter queue is full" );
176- if (result_callback)
176+
177+ auto result_callback_fn = std::move (result_callback);
178+ if (result_callback_fn)
177179 {
178- result_callback (opentelemetry::sdk::common::ExportResult::kFailureFull , std::move (arena),
179- request, nullptr );
180+ result_callback_fn (opentelemetry::sdk::common::ExportResult::kFailureFull , std::move (arena),
181+ request, nullptr );
180182 }
181183 return opentelemetry::sdk::common::ExportResult::kFailureFull ;
182184 }
@@ -205,7 +207,8 @@ static sdk::common::ExportResult InternalDelegateAsyncExport(
205207
206208 return opentelemetry::sdk::common::ExportResult::kFailure ;
207209 }
208- call_data->grpc_context .swap (context);
210+ auto context_ptr = std::move (context);
211+ call_data->grpc_context .swap (context_ptr);
209212
210213 call_data->grpc_async_callback = [](OtlpGrpcAsyncCallDataBase *base_call_data) {
211214 OtlpGrpcAsyncCallData<RequestType, ResponseType> *real_call_data =
@@ -519,31 +522,40 @@ OtlpGrpcClient::MakeLogsServiceStub()
519522grpc::Status OtlpGrpcClient::DelegateExport (
520523 proto::collector::trace::v1::TraceService::StubInterface *stub,
521524 std::unique_ptr<grpc::ClientContext> &&context,
522- std::unique_ptr<google::protobuf::Arena> && /* arena*/ ,
525+ std::unique_ptr<google::protobuf::Arena> &&arena,
523526 proto::collector::trace::v1::ExportTraceServiceRequest &&request,
524527 proto::collector::trace::v1::ExportTraceServiceResponse *response)
525528{
526- return stub->Export (context.get (), request, response);
529+ auto context_ptr = std::move (context);
530+ auto arena_ptr = std::move (arena);
531+ auto request_ptr = std::move (request);
532+ return stub->Export (context_ptr.get (), request_ptr, response);
527533}
528534
529535grpc::Status OtlpGrpcClient::DelegateExport (
530536 proto::collector::metrics::v1::MetricsService::StubInterface *stub,
531537 std::unique_ptr<grpc::ClientContext> &&context,
532- std::unique_ptr<google::protobuf::Arena> && /* arena*/ ,
538+ std::unique_ptr<google::protobuf::Arena> &&arena,
533539 proto::collector::metrics::v1::ExportMetricsServiceRequest &&request,
534540 proto::collector::metrics::v1::ExportMetricsServiceResponse *response)
535541{
536- return stub->Export (context.get (), request, response);
542+ auto context_ptr = std::move (context);
543+ auto arena_ptr = std::move (arena);
544+ auto request_ptr = std::move (request);
545+ return stub->Export (context_ptr.get (), request_ptr, response);
537546}
538547
539548grpc::Status OtlpGrpcClient::DelegateExport (
540549 proto::collector::logs::v1::LogsService::StubInterface *stub,
541550 std::unique_ptr<grpc::ClientContext> &&context,
542- std::unique_ptr<google::protobuf::Arena> && /* arena*/ ,
551+ std::unique_ptr<google::protobuf::Arena> &&arena,
543552 proto::collector::logs::v1::ExportLogsServiceRequest &&request,
544553 proto::collector::logs::v1::ExportLogsServiceResponse *response)
545554{
546- return stub->Export (context.get (), request, response);
555+ auto context_ptr = std::move (context);
556+ auto arena_ptr = std::move (arena);
557+ auto request_ptr = std::move (request);
558+ return stub->Export (context_ptr.get (), request_ptr, response);
547559}
548560
549561void OtlpGrpcClient::AddReference (OtlpGrpcClientReferenceGuard &guard,
0 commit comments