From 6f913025f210604a8811775b823d2b956839c39c Mon Sep 17 00:00:00 2001 From: Eugene Ostroukhov Date: Thu, 6 Jun 2024 16:45:35 -0700 Subject: [PATCH] [xds] Do not crash when XdsLocalityName is null (#36841) Closes #36841 COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/36841 from eugeneo:b/342178799/ref-counted-crash b889c958edaabe39bab26646424d6b418a11f5b6 PiperOrigin-RevId: 641062572 --- src/core/xds/xds_client/xds_client_stats.cc | 26 +++++++++++---------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/core/xds/xds_client/xds_client_stats.cc b/src/core/xds/xds_client/xds_client_stats.cc index fa1cfe1087e..508a50eab63 100644 --- a/src/core/xds/xds_client/xds_client_stats.cc +++ b/src/core/xds/xds_client/xds_client_stats.cc @@ -105,23 +105,25 @@ XdsClusterLocalityStats::XdsClusterLocalityStats( eds_service_name_(eds_service_name), name_(std::move(name)) { if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) { - gpr_log(GPR_INFO, - "[xds_client %p] created locality stats %p for {%s, %s, %s, %s}", - xds_client_.get(), this, std::string(lrs_server_).c_str(), - std::string(cluster_name_).c_str(), - std::string(eds_service_name_).c_str(), - name_->human_readable_string().c_str()); + gpr_log( + GPR_INFO, + "[xds_client %p] created locality stats %p for {%s, %s, %s, %s}", + xds_client_.get(), this, std::string(lrs_server_).c_str(), + std::string(cluster_name_).c_str(), + std::string(eds_service_name_).c_str(), + name_ == nullptr ? "" : name_->human_readable_string().c_str()); } } XdsClusterLocalityStats::~XdsClusterLocalityStats() { if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) { - gpr_log(GPR_INFO, - "[xds_client %p] destroying locality stats %p for {%s, %s, %s, %s}", - xds_client_.get(), this, std::string(lrs_server_).c_str(), - std::string(cluster_name_).c_str(), - std::string(eds_service_name_).c_str(), - name_->human_readable_string().c_str()); + gpr_log( + GPR_INFO, + "[xds_client %p] destroying locality stats %p for {%s, %s, %s, %s}", + xds_client_.get(), this, std::string(lrs_server_).c_str(), + std::string(cluster_name_).c_str(), + std::string(eds_service_name_).c_str(), + name_ == nullptr ? "" : name_->human_readable_string().c_str()); } xds_client_->RemoveClusterLocalityStats(lrs_server_, cluster_name_, eds_service_name_, name_, this);