-
Notifications
You must be signed in to change notification settings - Fork 509
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Describe your environment
I am using v1.20.0#0 from vcpkg . When I use OtlpGrpcLogRecordExporter connecting to the Azure collector that is not currently running I got deadlocked on every log.
Steps to reproduce
otlp::OtlpGrpcLogRecordExporterOptions logger_opts;
logger_opts.endpoint = endpoint;
auto exporter = otlp::OtlpGrpcLogRecordExporterFactory::Create(logger_opts);
auto processor = std::make_unique<logs_sdk::SimpleLogRecordProcessor>(std::move(exporter));
m_Provider = std::make_shared<logs_sdk::LoggerProvider>(std::move(processor), std::move(resource));auto logger = m_Provider->GetLogger("firstlog", "library_name", OPENTELEMETRY_SDK_VERSION);
logger->EmitLogRecord(severity, msg, ...);Because OtlpGrpcLogRecordExporter::Export finds out the server is UNAVAILABLE it tries to log this situation:
grpc::Status status =
OtlpGrpcClient::DelegateExport(log_service_stub_.get(), std::move(context),
std::move(arena), std::move(*request), response);
if (!status.ok())
{
OTEL_INTERNAL_LOG_ERROR(
"[OTLP LOG GRPC Exporter] Export() failed: " << status.error_message());
return sdk::common::ExportResult::kFailure;
}This code goes through SimpleLogRecordProcessor::OnEmit again but this time the lock there is locked.
What is the actual behavior?
Deadlock on second entry to the SimpleLogRecordProcessor::OnEmit.
slavomirs
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working