Skip to content

Automated fix for refs/heads/create-pull-request/patch-16be944 #14

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: create-pull-request/patch-16be944
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 24 additions & 6 deletions src/core/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -4613,6 +4613,7 @@ grpc_cc_library(
"ext/filters/client_channel/lb_policy/xds/cds.cc",
],
external_deps = [
"absl/functional:function_ref",
"absl/status",
"absl/status:statusor",
"absl/strings",
Expand All @@ -4635,19 +4636,19 @@ grpc_cc_library(
"lb_policy",
"lb_policy_factory",
"lb_policy_registry",
"match",
"no_destruct",
"pollset_set",
"ref_counted_string",
"resolved_address",
"time",
"unique_type_name",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:gpr",
"//:grpc_base",
"//:grpc_security_base",
"//:grpc_trace",
"//:orphanable",
"//:ref_counted_ptr",
"//:work_serializer",
"//:xds_client",
],
)

Expand Down Expand Up @@ -4682,7 +4683,9 @@ grpc_cc_library(
"delegating_helper",
"grpc_backend_metric_data",
"grpc_lb_xds_channel_args",
"grpc_matchers",
"grpc_resolver_xds_config",
"grpc_tls_credentials",
"grpc_xds_client",
"json",
"json_args",
Expand All @@ -4694,13 +4697,15 @@ grpc_cc_library(
"ref_counted",
"resolved_address",
"subchannel_interface",
"unique_type_name",
"validation_errors",
"//:config",
"//:debug_location",
"//:endpoint_addresses",
"//:gpr",
"//:grpc_base",
"//:grpc_client_channel",
"//:grpc_security_base",
"//:grpc_trace",
"//:orphanable",
"//:ref_counted_ptr",
Expand Down Expand Up @@ -5660,15 +5665,28 @@ grpc_cc_library(
hdrs = [
"ext/filters/client_channel/resolver/xds/xds_config.h",
],
external_deps = ["absl/strings"],
external_deps = [
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/types:variant",
],
language = "c++",
deps = [
"grpc_resolver_xds_trace",
"grpc_xds_client",
"match",
"ref_counted",
"useful",
"//:debug_location",
"//:endpoint_addresses",
"//:gpr",
"//:grpc_resolver",
"//:grpc_trace",
"//:orphanable",
"//:ref_counted_ptr",
"//:work_serializer",
"//:xds_client",
],
)

Expand Down
92 changes: 45 additions & 47 deletions src/core/ext/filters/client_channel/lb_policy/xds/cds.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,26 @@

#include <grpc/support/port_platform.h>

#include <stddef.h>
#include <stdint.h>

#include <algorithm>
#include <map>
#include <memory>
#include <set>
#include <string>
#include <type_traits>
#include <utility>
#include <vector>

#include "absl/functional/function_ref.h"
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_join.h"
#include "absl/strings/string_view.h"
#include "absl/types/optional.h"
#include "absl/types/variant.h"

#include <grpc/grpc_security.h>
#include <grpc/impl/connectivity_state.h>
#include <grpc/support/json.h>
#include <grpc/support/log.h>
Expand All @@ -41,21 +44,20 @@
#include "src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h"
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h"
#include "src/core/ext/filters/client_channel/resolver/xds/xds_config.h"
#include "src/core/ext/xds/certificate_provider_store.h"
#include "src/core/ext/xds/xds_client_stats.h"
#include "src/core/ext/xds/xds_cluster.h"
#include "src/core/ext/xds/xds_common_types.h"
#include "src/core/ext/xds/xds_endpoint.h"
#include "src/core/ext/xds/xds_health_status.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/match.h"
#include "src/core/lib/gprpp/no_destruct.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/ref_counted_string.h"
#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/gprpp/unique_type_name.h"
#include "src/core/lib/gprpp/work_serializer.h"
#include "src/core/lib/iomgr/pollset_set.h"
#include "src/core/lib/iomgr/resolved_address.h"
#include "src/core/lib/json/json.h"
#include "src/core/lib/json/json_args.h"
#include "src/core/lib/json/json_object_loader.h"
Expand All @@ -64,6 +66,7 @@
#include "src/core/lib/load_balancing/lb_policy.h"
#include "src/core/lib/load_balancing/lb_policy_factory.h"
#include "src/core/lib/load_balancing/lb_policy_registry.h"
#include "src/core/lib/resolver/endpoint_addresses.h"

namespace grpc_core {

Expand Down Expand Up @@ -263,8 +266,7 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
if (!child_config.ok()) {
// Should never happen.
absl::Status status = absl::InternalError(
absl::StrCat(cluster_name_,
": error parsing child policy config: ",
absl::StrCat(cluster_name_, ": error parsing child policy config: ",
child_config.status().message()));
ReportTransientFailure(status);
return status;
Expand All @@ -276,10 +278,8 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
lb_args.args = args.args;
lb_args.channel_control_helper = std::make_unique<Helper>(Ref());
child_policy_ =
CoreConfiguration::Get()
.lb_policy_registry()
.CreateLoadBalancingPolicy((*child_config)->name(),
std::move(lb_args));
CoreConfiguration::Get().lb_policy_registry().CreateLoadBalancingPolicy(
(*child_config)->name(), std::move(lb_args));
if (child_policy_ == nullptr) {
// Should never happen.
absl::Status status = absl::UnavailableError(
Expand Down Expand Up @@ -390,7 +390,7 @@ std::vector<CdsLb::ChildNameState> CdsLb::ComputeChildNames(
if (!child_number.has_value()) {
for (child_number = new_numbers.next_available_child_number;
mappings.child_locality_map.find(*child_number) !=
mappings.child_locality_map.end();
mappings.child_locality_map.end();
++(*child_number)) {
}
new_numbers.next_available_child_number = *child_number + 1;
Expand Down Expand Up @@ -498,41 +498,40 @@ Json CdsLb::CreateChildPolicyConfig(
if (outlier_detection_update.success_rate_ejection.has_value()) {
outlier_detection_config["successRateEjection"] = Json::FromObject({
{"stdevFactor",
Json::FromNumber(
outlier_detection_update.success_rate_ejection
->stdev_factor)},
Json::FromNumber(outlier_detection_update.success_rate_ejection
->stdev_factor)},
{"enforcementPercentage",
Json::FromNumber(outlier_detection_update.success_rate_ejection
->enforcement_percentage)},
{"minimumHosts",
Json::FromNumber(
outlier_detection_update.success_rate_ejection
->minimum_hosts)},
{"requestVolume",
Json::FromNumber(
outlier_detection_update.success_rate_ejection
->request_volume)},
});
}
if (outlier_detection_update.failure_percentage_ejection.has_value()) {
outlier_detection_config["failurePercentageEjection"] = Json::FromObject({
{"threshold",
Json::FromNumber(outlier_detection_update
.failure_percentage_ejection->threshold)},
{"enforcementPercentage",
Json::FromNumber(
outlier_detection_update.failure_percentage_ejection
->enforcement_percentage)},
{"minimumHosts",
Json::FromNumber(outlier_detection_update
.failure_percentage_ejection
Json::FromNumber(outlier_detection_update.success_rate_ejection
->minimum_hosts)},
{"requestVolume",
Json::FromNumber(outlier_detection_update
.failure_percentage_ejection
Json::FromNumber(outlier_detection_update.success_rate_ejection
->request_volume)},
});
}
if (outlier_detection_update.failure_percentage_ejection.has_value()) {
outlier_detection_config["failurePercentageEjection"] =
Json::FromObject({
{"threshold",
Json::FromNumber(
outlier_detection_update.failure_percentage_ejection
->threshold)},
{"enforcementPercentage",
Json::FromNumber(
outlier_detection_update.failure_percentage_ejection
->enforcement_percentage)},
{"minimumHosts",
Json::FromNumber(
outlier_detection_update.failure_percentage_ejection
->minimum_hosts)},
{"requestVolume",
Json::FromNumber(
outlier_detection_update.failure_percentage_ejection
->request_volume)},
});
}
}
outlier_detection_config["childPolicy"] =
Json::FromArray({Json::FromObject({
Expand Down Expand Up @@ -566,8 +565,8 @@ Json CdsLb::CreateChildPolicyConfig(
})},
})});
if (GRPC_TRACE_FLAG_ENABLED(grpc_cds_lb_trace)) {
gpr_log(GPR_INFO, "[cdslb %p] generated config for child policy: %s",
this, JsonDump(json, /*indent=*/1).c_str());
gpr_log(GPR_INFO, "[cdslb %p] generated config for child policy: %s", this,
JsonDump(json, /*indent=*/1).c_str());
}
return json;
}
Expand All @@ -579,10 +578,9 @@ class PriorityEndpointIterator : public EndpointAddressesIterator {
std::shared_ptr<const XdsEndpointResource> endpoints;
std::vector<size_t /*child_number*/> priority_child_numbers;

ClusterEntry(
std::string cluster,
std::shared_ptr<const XdsEndpointResource> resource,
std::vector<size_t> child_numbers)
ClusterEntry(std::string cluster,
std::shared_ptr<const XdsEndpointResource> resource,
std::vector<size_t> child_numbers)
: cluster_name(std::move(cluster)),
endpoints(std::move(resource)),
priority_child_numbers(std::move(child_numbers)) {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,23 @@
#include "absl/types/optional.h"
#include "absl/types/variant.h"

#include <grpc/grpc_security.h>
#include <grpc/impl/connectivity_state.h>
#include <grpc/support/log.h>

#include "src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h"
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h"
#include "src/core/ext/filters/client_channel/resolver/xds/xds_config.h"
#include "src/core/ext/xds/certificate_provider_store.h"
#include "src/core/ext/xds/xds_bootstrap.h"
#include "src/core/ext/xds/xds_bootstrap_grpc.h"
#include "src/core/ext/xds/xds_certificate_provider.h"
#include "src/core/ext/xds/xds_client.h"
#include "src/core/ext/xds/xds_client_grpc.h"
#include "src/core/ext/xds/xds_client_stats.h"
#include "src/core/ext/xds/xds_cluster.h"
#include "src/core/ext/xds/xds_common_types.h"
#include "src/core/ext/xds/xds_endpoint.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/config/core_configuration.h"
Expand All @@ -55,6 +60,7 @@
#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
#include "src/core/lib/gprpp/unique_type_name.h"
#include "src/core/lib/gprpp/validation_errors.h"
#include "src/core/lib/iomgr/pollset_set.h"
#include "src/core/lib/iomgr/resolved_address.h"
Expand All @@ -66,7 +72,11 @@
#include "src/core/lib/load_balancing/lb_policy_factory.h"
#include "src/core/lib/load_balancing/lb_policy_registry.h"
#include "src/core/lib/load_balancing/subchannel_interface.h"
#include "src/core/lib/matchers/matchers.h"
#include "src/core/lib/resolver/endpoint_addresses.h"
#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
#include "src/core/lib/security/credentials/xds/xds_credentials.h"
#include "src/core/lib/transport/connectivity_state.h"

Expand Down Expand Up @@ -469,8 +479,7 @@ void XdsClusterImplLb::ShutdownLocked() {
// Clean up cert provider state.
if (root_certificate_provider_ != nullptr) {
grpc_pollset_set_del_pollset_set(
interested_parties(),
root_certificate_provider_->interested_parties());
interested_parties(), root_certificate_provider_->interested_parties());
root_certificate_provider_.reset();
}
if (identity_certificate_provider_ != nullptr) {
Expand Down Expand Up @@ -564,9 +573,8 @@ absl::StatusOr<const XdsClusterResource*> FindClusterConfig(
if (it != xds_config.clusters.end()) {
if (!it->second.ok()) {
// Shouldn't happen.
return absl::InternalError(
absl::StrCat("xDS config does not contain entry for cluster ",
cluster_name));
return absl::InternalError(absl::StrCat(
"xDS config does not contain entry for cluster ", cluster_name));
}
return it->second->front().cluster.get();
}
Expand All @@ -580,9 +588,8 @@ absl::StatusOr<const XdsClusterResource*> FindClusterConfig(
if (cluster.cluster_name == cluster_name) return cluster.cluster.get();
}
}
return absl::InternalError(
absl::StrCat("xDS config does not contain entry for cluster ",
cluster_name));
return absl::InternalError(absl::StrCat(
"xDS config does not contain entry for cluster ", cluster_name));
}

absl::Status XdsClusterImplLb::MaybeConfigureCertificateProviderLocked(
Expand All @@ -599,10 +606,12 @@ absl::Status XdsClusterImplLb::MaybeConfigureCertificateProviderLocked(
if (!cluster_resource.ok()) return cluster_resource.status();
// Configure root cert.
absl::string_view root_provider_instance_name =
(*cluster_resource)->common_tls_context.certificate_validation_context
(*cluster_resource)
->common_tls_context.certificate_validation_context
.ca_certificate_provider_instance.instance_name;
absl::string_view root_provider_cert_name =
(*cluster_resource)->common_tls_context.certificate_validation_context
(*cluster_resource)
->common_tls_context.certificate_validation_context
.ca_certificate_provider_instance.certificate_name;
RefCountedPtr<XdsCertificateProvider> new_root_provider;
if (!root_provider_instance_name.empty()) {
Expand Down Expand Up @@ -636,10 +645,11 @@ absl::Status XdsClusterImplLb::MaybeConfigureCertificateProviderLocked(
: root_certificate_provider_->distributor());
// Configure identity cert.
absl::string_view identity_provider_instance_name =
(*cluster_resource)->common_tls_context.tls_certificate_provider_instance
.instance_name;
(*cluster_resource)
->common_tls_context.tls_certificate_provider_instance.instance_name;
absl::string_view identity_provider_cert_name =
(*cluster_resource)->common_tls_context.tls_certificate_provider_instance
(*cluster_resource)
->common_tls_context.tls_certificate_provider_instance
.certificate_name;
RefCountedPtr<XdsCertificateProvider> new_identity_provider;
if (!identity_provider_instance_name.empty()) {
Expand Down Expand Up @@ -673,7 +683,8 @@ absl::Status XdsClusterImplLb::MaybeConfigureCertificateProviderLocked(
: identity_certificate_provider_->distributor());
// Configure SAN matchers.
const std::vector<StringMatcher>& match_subject_alt_names =
(*cluster_resource)->common_tls_context.certificate_validation_context
(*cluster_resource)
->common_tls_context.certificate_validation_context
.match_subject_alt_names;
xds_certificate_provider_->UpdateSubjectAlternativeNameMatchers(
config_->cluster_name(), match_subject_alt_names);
Expand Down
Loading