[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 b889c958ed
PiperOrigin-RevId: 641062572
pull/36735/head
Eugene Ostroukhov 8 months ago committed by Copybara-Service
parent 90975282dc
commit 6f913025f2
  1. 26
      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 ? "<none>" : 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 ? "<none>" : name_->human_readable_string().c_str());
}
xds_client_->RemoveClusterLocalityStats(lrs_server_, cluster_name_,
eds_service_name_, name_, this);

Loading…
Cancel
Save