diff --git a/Package.swift b/Package.swift
index 283ae691bee..7e04d9f9be8 100644
--- a/Package.swift
+++ b/Package.swift
@@ -175,7 +175,6 @@ let package = Package(
"src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h",
"src/core/ext/filters/client_channel/lb_policy/rls/rls.cc",
"src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc",
- "src/core/ext/filters/client_channel/lb_policy/subchannel_list.h",
"src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc",
"src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h",
"src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc",
diff --git a/build_autogenerated.yaml b/build_autogenerated.yaml
index 2900769a832..be0992812db 100644
--- a/build_autogenerated.yaml
+++ b/build_autogenerated.yaml
@@ -244,7 +244,6 @@ libs:
- src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h
- src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.h
- src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h
- - src/core/ext/filters/client_channel/lb_policy/subchannel_list.h
- src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h
- src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h
- src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h
diff --git a/gRPC-C++.podspec b/gRPC-C++.podspec
index 2d6ad2ce956..acb834679b5 100644
--- a/gRPC-C++.podspec
+++ b/gRPC-C++.podspec
@@ -276,7 +276,6 @@ Pod::Spec.new do |s|
'src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h',
'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.h',
'src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h',
- 'src/core/ext/filters/client_channel/lb_policy/subchannel_list.h',
'src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h',
'src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h',
'src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h',
@@ -1339,7 +1338,6 @@ Pod::Spec.new do |s|
'src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h',
'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.h',
'src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h',
- 'src/core/ext/filters/client_channel/lb_policy/subchannel_list.h',
'src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h',
'src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h',
'src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h',
diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec
index 54927792021..f69b95d25d5 100644
--- a/gRPC-Core.podspec
+++ b/gRPC-Core.podspec
@@ -276,7 +276,6 @@ Pod::Spec.new do |s|
'src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h',
'src/core/ext/filters/client_channel/lb_policy/rls/rls.cc',
'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc',
- 'src/core/ext/filters/client_channel/lb_policy/subchannel_list.h',
'src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc',
'src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h',
'src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc',
@@ -2089,7 +2088,6 @@ Pod::Spec.new do |s|
'src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h',
'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.h',
'src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h',
- 'src/core/ext/filters/client_channel/lb_policy/subchannel_list.h',
'src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h',
'src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h',
'src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h',
diff --git a/grpc.gemspec b/grpc.gemspec
index 423d2053a4a..4a5124ef2aa 100644
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -181,7 +181,6 @@ Gem::Specification.new do |s|
s.files += %w( src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h )
s.files += %w( src/core/ext/filters/client_channel/lb_policy/rls/rls.cc )
s.files += %w( src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc )
- s.files += %w( src/core/ext/filters/client_channel/lb_policy/subchannel_list.h )
s.files += %w( src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc )
s.files += %w( src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h )
s.files += %w( src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc )
diff --git a/package.xml b/package.xml
index 5560354cd06..c9bace71f3e 100644
--- a/package.xml
+++ b/package.xml
@@ -163,7 +163,6 @@
-
diff --git a/src/core/BUILD b/src/core/BUILD
index adc94513fd5..cd3f7ea7c7b 100644
--- a/src/core/BUILD
+++ b/src/core/BUILD
@@ -4582,34 +4582,6 @@ grpc_cc_library(
],
)
-grpc_cc_library(
- name = "grpc_lb_subchannel_list",
- hdrs = [
- "ext/filters/client_channel/lb_policy/subchannel_list.h",
- ],
- external_deps = [
- "absl/status",
- "absl/types:optional",
- ],
- language = "c++",
- deps = [
- "channel_args",
- "dual_ref_counted",
- "gpr_manual_constructor",
- "health_check_client",
- "iomgr_fwd",
- "lb_policy",
- "subchannel_interface",
- "//:debug_location",
- "//:gpr",
- "//:grpc_base",
- "//:grpc_client_channel",
- "//:ref_counted_ptr",
- "//:server_address",
- "//:work_serializer",
- ],
-)
-
grpc_cc_library(
name = "lb_endpoint_list",
srcs = [
@@ -4707,16 +4679,18 @@ grpc_cc_library(
deps = [
"channel_args",
"closure",
+ "delegating_helper",
"error",
- "grpc_lb_subchannel_list",
+ "grpc_lb_policy_pick_first",
"grpc_service_config",
"json",
"json_args",
"json_object_loader",
"lb_policy",
"lb_policy_factory",
+ "lb_policy_registry",
+ "pollset_set",
"ref_counted",
- "subchannel_interface",
"unique_type_name",
"validation_errors",
"//:config",
diff --git a/src/core/ext/filters/client_channel/lb_policy/endpoint_list.h b/src/core/ext/filters/client_channel/lb_policy/endpoint_list.h
index ca68193f8d8..66fce2871e4 100644
--- a/src/core/ext/filters/client_channel/lb_policy/endpoint_list.h
+++ b/src/core/ext/filters/client_channel/lb_policy/endpoint_list.h
@@ -91,6 +91,8 @@ class MyEndpointList : public EndpointList {
}
};
*/
+// TODO(roth): Consider wrapping this in an LB policy subclass for petiole
+// policies to inherit from.
class EndpointList : public InternallyRefCounted {
public:
// An individual endpoint.
diff --git a/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc b/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc
index f5767e4679f..af67078d0e0 100644
--- a/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc
+++ b/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc
@@ -23,6 +23,7 @@
#include
#include
+#include