|
|
|
@ -32,6 +32,7 @@ |
|
|
|
|
#include "src/core/ext/filters/client_channel/lb_policy_factory.h" |
|
|
|
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h" |
|
|
|
|
#include "src/core/ext/filters/client_channel/server_address.h" |
|
|
|
|
#include "src/core/ext/filters/client_channel/xds/xds_channel_args.h" |
|
|
|
|
#include "src/core/ext/filters/client_channel/xds/xds_client.h" |
|
|
|
|
#include "src/core/ext/filters/client_channel/xds/xds_client_stats.h" |
|
|
|
|
#include "src/core/lib/channel/channel_args.h" |
|
|
|
@ -715,11 +716,18 @@ grpc_channel_args* EdsLb::CreateChildPolicyArgsLocked( |
|
|
|
|
grpc_channel_arg_integer_create( |
|
|
|
|
const_cast<char*>(GRPC_ARG_INHIBIT_HEALTH_CHECKING), 1), |
|
|
|
|
}; |
|
|
|
|
absl::InlinedVector<const char*, 1> args_to_remove; |
|
|
|
|
if (xds_client_from_channel_ == nullptr) { |
|
|
|
|
args_to_add.emplace_back(xds_client_->MakeChannelArg()); |
|
|
|
|
} |
|
|
|
|
return grpc_channel_args_copy_and_add(args, args_to_add.data(), |
|
|
|
|
args_to_add.size()); |
|
|
|
|
} else if (!config_->lrs_load_reporting_server_name().has_value()) { |
|
|
|
|
// Remove XdsClient from channel args, so that its presence doesn't
|
|
|
|
|
// prevent us from sharing subchannels between channels.
|
|
|
|
|
// If load reporting is enabled, this happens in the LRS policy instead.
|
|
|
|
|
args_to_remove.push_back(GRPC_ARG_XDS_CLIENT); |
|
|
|
|
} |
|
|
|
|
return grpc_channel_args_copy_and_add_and_remove( |
|
|
|
|
args, args_to_remove.data(), args_to_remove.size(), args_to_add.data(), |
|
|
|
|
args_to_add.size()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
OrphanablePtr<LoadBalancingPolicy> EdsLb::CreateChildPolicyLocked( |
|
|
|
|