grpc 1.48.0-x86_64-linux → 1.49.0.pre1-x86_64-linux

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (721) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +104 -41
  3. data/include/grpc/event_engine/event_engine.h +19 -16
  4. data/include/grpc/impl/codegen/grpc_types.h +3 -8
  5. data/include/grpc/impl/codegen/port_platform.h +0 -8
  6. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +3 -3
  7. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
  8. data/src/core/ext/filters/client_channel/client_channel.cc +117 -200
  9. data/src/core/ext/filters/client_channel/client_channel.h +15 -8
  10. data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
  11. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
  12. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  13. data/src/core/ext/filters/client_channel/config_selector.h +12 -4
  14. data/src/core/ext/filters/client_channel/connector.h +4 -5
  15. data/src/core/ext/filters/client_channel/http_proxy.cc +53 -65
  16. data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
  17. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
  18. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
  19. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +100 -124
  20. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -3
  21. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
  22. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
  23. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
  24. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  25. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +169 -63
  26. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +15 -19
  28. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +66 -78
  29. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +44 -44
  30. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -5
  31. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +65 -77
  32. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +15 -14
  33. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -14
  34. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +60 -67
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +81 -97
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +53 -61
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +171 -102
  39. data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
  40. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +19 -16
  41. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
  42. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +4 -8
  43. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +431 -145
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +170 -99
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
  46. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -15
  47. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +7 -17
  48. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
  49. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -14
  50. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
  51. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
  52. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -13
  53. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +162 -165
  54. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +37 -30
  55. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
  56. data/src/core/ext/filters/client_channel/retry_filter.cc +0 -7
  57. data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
  58. data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
  59. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +6 -7
  60. data/src/core/ext/filters/client_channel/subchannel.cc +49 -89
  61. data/src/core/ext/filters/client_channel/subchannel.h +8 -8
  62. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
  63. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
  64. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
  65. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +3 -4
  66. data/src/core/ext/filters/deadline/deadline_filter.cc +6 -6
  67. data/src/core/ext/filters/deadline/deadline_filter.h +2 -3
  68. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -3
  69. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -1
  70. data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -12
  71. data/src/core/ext/filters/fault_injection/service_config_parser.h +4 -5
  72. data/src/core/ext/filters/http/client/http_client_filter.cc +2 -3
  73. data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
  74. data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
  75. data/src/core/ext/filters/http/client_authority_filter.h +1 -1
  76. data/src/core/ext/filters/http/server/http_server_filter.cc +2 -3
  77. data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
  78. data/src/core/ext/filters/message_size/message_size_filter.cc +13 -7
  79. data/src/core/ext/filters/message_size/message_size_filter.h +3 -6
  80. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -12
  81. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -6
  82. data/src/core/ext/filters/server_config_selector/server_config_selector.h +5 -0
  83. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -5
  84. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +35 -62
  85. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +62 -89
  86. data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
  87. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +130 -165
  88. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
  89. data/src/core/ext/transport/chttp2/transport/flow_control.cc +67 -2
  90. data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
  91. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
  92. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
  93. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
  94. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
  95. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
  96. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -10
  97. data/src/core/ext/transport/chttp2/transport/internal.h +2 -1
  98. data/src/core/ext/transport/inproc/inproc_transport.cc +40 -74
  99. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
  100. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
  101. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
  102. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
  103. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
  104. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
  105. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
  106. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
  107. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
  108. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
  109. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
  110. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
  111. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
  112. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
  113. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
  114. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
  115. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
  116. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
  117. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
  118. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
  119. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  120. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
  121. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
  122. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
  123. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
  124. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
  125. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
  126. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
  127. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
  128. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
  129. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
  130. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
  131. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
  132. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
  133. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
  134. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
  135. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
  136. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
  137. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
  138. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
  139. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
  140. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
  141. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
  142. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
  143. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
  144. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
  145. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
  146. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
  147. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
  148. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
  149. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
  150. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
  151. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
  152. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
  153. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
  154. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
  155. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
  156. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
  157. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
  158. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
  159. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
  160. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
  161. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
  162. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
  163. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
  164. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
  165. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
  166. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
  167. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
  168. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
  169. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
  170. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
  171. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
  172. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
  173. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
  174. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
  175. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
  176. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
  177. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
  178. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
  179. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
  180. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
  181. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
  182. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
  183. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
  184. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
  185. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
  186. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
  187. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
  188. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
  189. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
  190. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
  191. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
  192. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
  193. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
  194. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
  195. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
  196. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
  197. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
  198. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
  199. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
  200. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
  201. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
  202. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
  203. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
  204. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
  205. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
  206. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
  207. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
  208. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
  209. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
  210. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
  211. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
  212. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
  213. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
  214. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
  215. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
  216. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
  217. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
  218. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
  219. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
  220. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
  221. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
  222. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
  223. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
  224. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
  225. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
  226. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
  227. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
  228. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
  229. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
  230. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
  231. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
  232. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +6 -2
  233. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +1 -1
  234. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +6 -2
  235. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
  236. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
  237. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
  238. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
  239. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
  240. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
  241. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
  242. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
  243. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  244. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
  245. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
  246. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
  247. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
  248. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
  249. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
  250. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
  251. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
  252. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
  253. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
  254. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
  255. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
  256. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
  257. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
  258. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
  259. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
  260. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
  261. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
  262. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
  263. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
  264. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
  265. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
  266. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
  267. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
  268. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
  269. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
  270. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
  271. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
  272. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
  273. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
  274. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
  275. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
  276. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
  277. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
  278. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
  279. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
  280. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
  281. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
  282. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
  283. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
  284. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
  285. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
  286. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
  287. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
  288. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
  289. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  290. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
  291. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
  292. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
  293. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
  294. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  295. data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
  296. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
  297. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
  298. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  299. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
  300. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
  301. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
  302. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  303. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
  304. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  305. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
  306. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
  307. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
  308. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  309. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
  310. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
  311. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
  312. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  313. data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
  314. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
  315. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
  316. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
  317. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
  318. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
  319. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
  320. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
  321. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  322. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
  323. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
  324. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
  325. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
  326. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
  327. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
  328. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
  329. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  330. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
  331. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
  332. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
  333. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
  334. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
  335. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
  336. data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
  337. data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
  338. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
  339. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
  340. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
  341. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
  342. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
  343. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
  344. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
  345. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
  346. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
  347. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
  348. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
  349. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
  350. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
  351. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
  352. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
  353. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
  354. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
  355. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
  356. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
  357. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
  358. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
  359. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
  360. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
  361. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
  362. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
  363. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
  364. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
  365. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
  366. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
  367. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
  368. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
  369. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
  370. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
  371. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
  372. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
  373. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
  374. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
  375. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
  376. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
  377. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  378. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
  379. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
  380. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
  381. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
  382. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
  383. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
  384. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
  385. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
  386. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  387. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
  388. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
  389. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
  390. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
  391. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
  392. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
  393. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
  394. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  395. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
  396. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
  397. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
  398. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
  399. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
  400. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
  401. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
  402. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
  403. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
  404. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  405. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
  406. data/src/core/ext/xds/upb_utils.h +0 -21
  407. data/src/core/ext/xds/xds_api.cc +53 -86
  408. data/src/core/ext/xds/xds_api.h +19 -28
  409. data/src/core/ext/xds/xds_bootstrap.cc +39 -52
  410. data/src/core/ext/xds/xds_bootstrap.h +28 -8
  411. data/src/core/ext/xds/xds_certificate_provider.h +9 -0
  412. data/src/core/ext/xds/xds_channel_stack_modifier.cc +6 -4
  413. data/src/core/ext/xds/xds_channel_stack_modifier.h +8 -0
  414. data/src/core/ext/xds/xds_client.cc +555 -1214
  415. data/src/core/ext/xds/xds_client.h +16 -44
  416. data/src/core/ext/xds/xds_client_grpc.cc +291 -0
  417. data/src/core/ext/xds/xds_client_grpc.h +102 -0
  418. data/src/core/ext/xds/xds_cluster.cc +92 -103
  419. data/src/core/ext/xds/xds_cluster.h +6 -5
  420. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +10 -14
  421. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
  422. data/src/core/ext/xds/xds_common_types.cc +134 -110
  423. data/src/core/ext/xds/xds_common_types.h +6 -7
  424. data/src/core/ext/xds/xds_endpoint.cc +80 -80
  425. data/src/core/ext/xds/xds_endpoint.h +4 -4
  426. data/src/core/ext/xds/xds_http_fault_filter.cc +4 -11
  427. data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
  428. data/src/core/ext/xds/xds_http_filters.h +3 -3
  429. data/src/core/ext/xds/xds_http_rbac_filter.cc +39 -58
  430. data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
  431. data/src/core/ext/xds/xds_lb_policy_registry.cc +17 -20
  432. data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
  433. data/src/core/ext/xds/xds_listener.cc +329 -299
  434. data/src/core/ext/xds/xds_listener.h +4 -4
  435. data/src/core/ext/xds/xds_resource_type.h +13 -2
  436. data/src/core/ext/xds/xds_route_config.cc +180 -177
  437. data/src/core/ext/xds/xds_route_config.h +31 -17
  438. data/src/core/ext/xds/xds_routing.cc +3 -6
  439. data/src/core/ext/xds/xds_routing.h +7 -9
  440. data/src/core/ext/xds/xds_server_config_fetcher.cc +76 -81
  441. data/src/core/ext/xds/xds_transport.h +86 -0
  442. data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
  443. data/src/core/ext/xds/xds_transport_grpc.h +135 -0
  444. data/src/core/lib/address_utils/parse_address.cc +19 -17
  445. data/src/core/lib/address_utils/parse_address.h +8 -5
  446. data/src/core/lib/avl/avl.h +47 -25
  447. data/src/core/lib/channel/call_tracer.h +1 -1
  448. data/src/core/lib/channel/channel_args.cc +88 -19
  449. data/src/core/lib/channel/channel_args.h +113 -62
  450. data/src/core/lib/channel/channel_stack.cc +0 -1
  451. data/src/core/lib/channel/channel_stack_builder.cc +3 -3
  452. data/src/core/lib/channel/channel_stack_builder.h +2 -2
  453. data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -4
  454. data/src/core/lib/channel/channelz.cc +27 -37
  455. data/src/core/lib/channel/channelz.h +9 -0
  456. data/src/core/lib/channel/promise_based_filter.h +0 -1
  457. data/src/core/lib/config/core_configuration.h +48 -35
  458. data/src/core/lib/debug/stats.cc +12 -15
  459. data/src/core/lib/debug/stats.h +11 -3
  460. data/src/core/lib/event_engine/{event_engine.cc → default_event_engine.cc} +9 -5
  461. data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +4 -8
  462. data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
  463. data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
  464. data/src/core/lib/event_engine/executor/executor.h +38 -0
  465. data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
  466. data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
  467. data/src/core/lib/event_engine/forkable.cc +98 -0
  468. data/src/core/lib/event_engine/forkable.h +61 -0
  469. data/src/core/lib/event_engine/poller.h +54 -0
  470. data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.cc → posix_engine/posix_engine.cc} +30 -47
  471. data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.h → posix_engine/posix_engine.h} +27 -28
  472. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.cc +4 -5
  473. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.h +8 -8
  474. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.cc +4 -4
  475. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.h +5 -5
  476. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.cc +46 -10
  477. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +17 -8
  478. data/src/core/lib/event_engine/promise.h +11 -2
  479. data/src/core/lib/event_engine/socket_notifier.h +55 -0
  480. data/src/core/lib/event_engine/{iomgr_engine/thread_pool.cc → thread_pool.cc} +49 -14
  481. data/src/core/lib/event_engine/{iomgr_engine/thread_pool.h → thread_pool.h} +21 -10
  482. data/src/core/lib/event_engine/utils.cc +49 -0
  483. data/src/core/lib/event_engine/utils.h +40 -0
  484. data/src/core/lib/event_engine/windows/iocp.cc +149 -0
  485. data/src/core/lib/event_engine/windows/iocp.h +68 -0
  486. data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
  487. data/src/core/lib/event_engine/windows/win_socket.h +120 -0
  488. data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
  489. data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
  490. data/src/core/lib/gpr/time.cc +11 -9
  491. data/src/core/lib/gpr/useful.h +29 -0
  492. data/src/core/lib/gprpp/bitset.h +3 -13
  493. data/src/core/lib/gprpp/debug_location.h +39 -7
  494. data/src/core/lib/gprpp/manual_constructor.h +0 -1
  495. data/src/core/lib/gprpp/no_destruct.h +94 -0
  496. data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
  497. data/src/core/lib/gprpp/status_helper.cc +1 -0
  498. data/src/core/lib/gprpp/table.h +0 -1
  499. data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.cc +3 -5
  500. data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.h +5 -7
  501. data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
  502. data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
  503. data/src/core/lib/http/httpcli.cc +12 -24
  504. data/src/core/lib/http/httpcli_security_connector.cc +11 -11
  505. data/src/core/lib/iomgr/call_combiner.cc +0 -26
  506. data/src/core/lib/iomgr/closure.h +0 -9
  507. data/src/core/lib/iomgr/combiner.cc +0 -20
  508. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
  509. data/src/core/lib/iomgr/error.cc +0 -773
  510. data/src/core/lib/iomgr/error.h +0 -145
  511. data/src/core/lib/iomgr/error_cfstream.cc +0 -5
  512. data/src/core/lib/iomgr/ev_poll_posix.cc +17 -9
  513. data/src/core/lib/iomgr/exec_ctx.cc +0 -12
  514. data/src/core/lib/iomgr/executor.cc +0 -10
  515. data/src/core/lib/iomgr/executor.h +0 -3
  516. data/src/core/lib/iomgr/lockfree_event.cc +0 -17
  517. data/src/core/lib/iomgr/port.h +3 -0
  518. data/src/core/lib/iomgr/resolve_address.h +29 -6
  519. data/src/core/lib/iomgr/resolve_address_posix.cc +38 -8
  520. data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
  521. data/src/core/lib/iomgr/resolve_address_windows.cc +40 -10
  522. data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
  523. data/src/core/lib/iomgr/socket_windows.h +0 -2
  524. data/src/core/lib/iomgr/tcp_posix.cc +118 -6
  525. data/src/core/lib/iomgr/timer_generic.cc +6 -8
  526. data/src/core/lib/json/json.h +19 -22
  527. data/src/core/lib/json/json_args.h +34 -0
  528. data/src/core/lib/json/json_object_loader.cc +233 -0
  529. data/src/core/lib/json/json_object_loader.h +618 -0
  530. data/src/core/lib/json/json_reader.cc +86 -62
  531. data/src/core/lib/json/json_util.cc +8 -36
  532. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
  533. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -24
  534. data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
  535. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +49 -72
  536. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
  537. data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
  538. data/src/core/lib/promise/activity.h +56 -8
  539. data/src/core/lib/promise/arena_promise.h +84 -81
  540. data/src/core/lib/promise/context.h +0 -1
  541. data/src/core/lib/promise/detail/basic_seq.h +43 -23
  542. data/src/core/lib/promise/detail/promise_factory.h +0 -1
  543. data/src/core/lib/promise/map.h +0 -1
  544. data/src/core/lib/promise/seq.h +25 -4
  545. data/src/core/lib/promise/sleep.cc +38 -42
  546. data/src/core/lib/promise/sleep.h +27 -24
  547. data/src/core/lib/promise/try_seq.h +26 -6
  548. data/src/core/lib/resolver/resolver.cc +0 -47
  549. data/src/core/lib/resolver/resolver.h +2 -12
  550. data/src/core/lib/resolver/resolver_factory.h +2 -3
  551. data/src/core/lib/resolver/resolver_registry.cc +1 -1
  552. data/src/core/lib/resolver/resolver_registry.h +2 -3
  553. data/src/core/lib/resolver/server_address.cc +11 -15
  554. data/src/core/lib/resolver/server_address.h +4 -8
  555. data/src/core/lib/resource_quota/api.cc +1 -1
  556. data/src/core/lib/resource_quota/arena.cc +21 -1
  557. data/src/core/lib/resource_quota/arena.h +24 -2
  558. data/src/core/lib/resource_quota/memory_quota.cc +157 -17
  559. data/src/core/lib/resource_quota/memory_quota.h +98 -17
  560. data/src/core/lib/resource_quota/periodic_update.cc +79 -0
  561. data/src/core/lib/resource_quota/periodic_update.h +71 -0
  562. data/src/core/lib/security/authorization/evaluate_args.cc +10 -7
  563. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
  564. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  565. data/src/core/lib/security/authorization/matchers.cc +13 -10
  566. data/src/core/lib/security/authorization/rbac_policy.cc +0 -1
  567. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -3
  568. data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -4
  569. data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -7
  570. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -4
  571. data/src/core/lib/security/credentials/credentials.h +16 -12
  572. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +18 -11
  573. data/src/core/lib/security/credentials/external/external_account_credentials.cc +32 -23
  574. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
  575. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -6
  576. data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -12
  577. data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -4
  578. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +29 -26
  579. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -3
  580. data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
  581. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +3 -3
  582. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -4
  583. data/src/core/lib/security/credentials/jwt/json_token.cc +12 -3
  584. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -8
  585. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +11 -13
  586. data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
  587. data/src/core/lib/security/credentials/local/local_credentials.h +3 -4
  588. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -18
  589. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
  590. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -21
  591. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -4
  592. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +6 -0
  593. data/src/core/lib/security/credentials/tls/tls_credentials.cc +13 -25
  594. data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -4
  595. data/src/core/lib/security/credentials/xds/xds_credentials.cc +13 -30
  596. data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
  597. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -18
  598. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +26 -38
  599. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
  600. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
  601. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +6 -5
  602. data/src/core/lib/security/security_connector/local/local_security_connector.cc +13 -11
  603. data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
  604. data/src/core/lib/security/security_connector/security_connector.h +5 -3
  605. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -4
  606. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +5 -5
  607. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -5
  608. data/src/core/lib/security/transport/auth_filters.h +1 -1
  609. data/src/core/lib/security/transport/client_auth_filter.cc +3 -4
  610. data/src/core/lib/security/transport/security_handshaker.cc +32 -44
  611. data/src/core/lib/security/transport/security_handshaker.h +2 -1
  612. data/src/core/lib/service_config/service_config.h +11 -0
  613. data/src/core/lib/service_config/service_config_impl.cc +98 -97
  614. data/src/core/lib/service_config/service_config_impl.h +11 -13
  615. data/src/core/lib/service_config/service_config_parser.cc +26 -27
  616. data/src/core/lib/service_config/service_config_parser.h +10 -22
  617. data/src/core/lib/slice/percent_encoding.cc +4 -13
  618. data/src/core/lib/slice/slice.cc +10 -4
  619. data/src/core/lib/surface/call.cc +8 -2
  620. data/src/core/lib/surface/channel.cc +6 -6
  621. data/src/core/lib/surface/channel.h +1 -1
  622. data/src/core/lib/surface/completion_queue.cc +0 -2
  623. data/src/core/lib/surface/completion_queue.h +0 -3
  624. data/src/core/lib/surface/init.cc +2 -6
  625. data/src/core/lib/surface/lame_client.cc +2 -3
  626. data/src/core/lib/surface/lame_client.h +1 -1
  627. data/src/core/lib/surface/server.cc +7 -12
  628. data/src/core/lib/surface/server.h +7 -7
  629. data/src/core/lib/surface/validate_metadata.cc +4 -14
  630. data/src/core/lib/surface/version.cc +2 -2
  631. data/src/core/lib/transport/connectivity_state.cc +0 -1
  632. data/src/core/lib/transport/connectivity_state.h +1 -1
  633. data/src/core/lib/transport/error_utils.cc +0 -36
  634. data/src/core/lib/transport/handshaker.cc +7 -9
  635. data/src/core/lib/transport/handshaker.h +4 -5
  636. data/src/core/lib/transport/handshaker_factory.h +2 -3
  637. data/src/core/lib/transport/handshaker_registry.cc +2 -1
  638. data/src/core/lib/transport/handshaker_registry.h +2 -4
  639. data/src/core/lib/transport/http_connect_handshaker.cc +16 -16
  640. data/src/core/lib/transport/metadata_batch.cc +5 -0
  641. data/src/core/lib/transport/metadata_batch.h +52 -7
  642. data/src/core/lib/transport/parsed_metadata.h +0 -1
  643. data/src/core/lib/transport/tcp_connect_handshaker.cc +12 -18
  644. data/src/core/lib/transport/transport.h +0 -7
  645. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
  646. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
  647. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +14 -7
  648. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
  649. data/src/core/tsi/fake_transport_security.cc +53 -30
  650. data/src/core/tsi/local_transport_security.cc +9 -5
  651. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
  652. data/src/core/tsi/ssl_transport_security.cc +47 -23
  653. data/src/core/tsi/transport_security.cc +18 -6
  654. data/src/core/tsi/transport_security.h +2 -1
  655. data/src/core/tsi/transport_security_interface.h +17 -5
  656. data/src/ruby/ext/grpc/extconf.rb +2 -0
  657. data/src/ruby/ext/grpc/rb_loader.c +6 -2
  658. data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
  659. data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
  660. data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
  661. data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
  662. data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
  663. data/src/ruby/lib/grpc/grpc_c.so +0 -0
  664. data/src/ruby/lib/grpc/version.rb +1 -1
  665. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  666. data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
  667. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
  668. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  669. data/third_party/upb/upb/arena.c +277 -0
  670. data/third_party/upb/upb/arena.h +225 -0
  671. data/third_party/upb/upb/array.c +114 -0
  672. data/third_party/upb/upb/array.h +83 -0
  673. data/third_party/upb/upb/collections.h +36 -0
  674. data/third_party/upb/upb/decode.c +161 -65
  675. data/third_party/upb/upb/decode.h +1 -0
  676. data/third_party/upb/upb/decode_fast.c +1 -1
  677. data/third_party/upb/upb/def.c +10 -2
  678. data/third_party/upb/upb/def.h +8 -1
  679. data/third_party/upb/upb/def.hpp +7 -4
  680. data/third_party/upb/upb/encode.c +29 -20
  681. data/third_party/upb/upb/encode.h +16 -6
  682. data/third_party/upb/upb/extension_registry.c +93 -0
  683. data/third_party/upb/upb/extension_registry.h +84 -0
  684. data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
  685. data/third_party/upb/upb/internal/table.h +385 -0
  686. data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
  687. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  688. data/third_party/upb/upb/json_decode.c +1512 -0
  689. data/third_party/upb/upb/json_decode.h +47 -0
  690. data/third_party/upb/upb/json_encode.c +7 -3
  691. data/third_party/upb/upb/json_encode.h +6 -3
  692. data/third_party/upb/upb/map.c +108 -0
  693. data/third_party/upb/upb/map.h +117 -0
  694. data/third_party/upb/upb/message_value.h +66 -0
  695. data/third_party/upb/upb/mini_table.c +1147 -0
  696. data/third_party/upb/upb/mini_table.h +189 -0
  697. data/third_party/upb/upb/mini_table.hpp +112 -0
  698. data/third_party/upb/upb/msg.c +2 -62
  699. data/third_party/upb/upb/msg.h +2 -45
  700. data/third_party/upb/upb/msg_internal.h +28 -22
  701. data/third_party/upb/upb/port_def.inc +2 -1
  702. data/third_party/upb/upb/port_undef.inc +1 -0
  703. data/third_party/upb/upb/reflection.c +2 -159
  704. data/third_party/upb/upb/reflection.h +2 -112
  705. data/third_party/upb/upb/status.c +86 -0
  706. data/third_party/upb/upb/status.h +66 -0
  707. data/third_party/upb/upb/table.c +2 -2
  708. data/third_party/upb/upb/table_internal.h +3 -352
  709. data/third_party/upb/upb/text_encode.c +3 -2
  710. data/third_party/upb/upb/upb.c +4 -290
  711. data/third_party/upb/upb/upb.h +7 -196
  712. metadata +90 -38
  713. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
  714. data/src/core/lib/iomgr/error_internal.h +0 -66
  715. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  716. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  717. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  718. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  719. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  720. data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
  721. data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -21,13 +21,13 @@
21
21
  #include <stdlib.h>
22
22
 
23
23
  #include <algorithm>
24
- #include <type_traits>
25
24
  #include <vector>
26
25
 
27
26
  #include "absl/memory/memory.h"
28
27
  #include "absl/status/status.h"
29
28
  #include "absl/strings/str_cat.h"
30
29
  #include "absl/strings/str_join.h"
30
+ #include "absl/types/optional.h"
31
31
  #include "envoy/config/core/v3/address.upb.h"
32
32
  #include "envoy/config/core/v3/base.upb.h"
33
33
  #include "envoy/config/core/v3/health_check.upb.h"
@@ -43,9 +43,8 @@
43
43
  #include "src/core/ext/xds/upb_utils.h"
44
44
  #include "src/core/ext/xds/xds_resource_type.h"
45
45
  #include "src/core/lib/address_utils/parse_address.h"
46
+ #include "src/core/lib/channel/channel_args.h"
46
47
  #include "src/core/lib/debug/trace.h"
47
- #include "src/core/lib/iomgr/error.h"
48
- #include "src/core/lib/iomgr/resolved_address.h"
49
48
 
50
49
  namespace grpc_core {
51
50
 
@@ -126,7 +125,7 @@ std::string XdsEndpointResource::ToString() const {
126
125
  namespace {
127
126
 
128
127
  void MaybeLogClusterLoadAssignment(
129
- const XdsEncodingContext& context,
128
+ const XdsResourceType::DecodeContext& context,
130
129
  const envoy_config_endpoint_v3_ClusterLoadAssignment* cla) {
131
130
  if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
132
131
  gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
@@ -140,15 +139,14 @@ void MaybeLogClusterLoadAssignment(
140
139
  }
141
140
  }
142
141
 
143
- grpc_error_handle ServerAddressParseAndAppend(
144
- const envoy_config_endpoint_v3_LbEndpoint* lb_endpoint,
145
- ServerAddressList* list) {
142
+ absl::StatusOr<absl::optional<ServerAddress>> ServerAddressParse(
143
+ const envoy_config_endpoint_v3_LbEndpoint* lb_endpoint) {
146
144
  // If health_status is not HEALTHY or UNKNOWN, skip this endpoint.
147
145
  const int32_t health_status =
148
146
  envoy_config_endpoint_v3_LbEndpoint_health_status(lb_endpoint);
149
147
  if (health_status != envoy_config_core_v3_UNKNOWN &&
150
148
  health_status != envoy_config_core_v3_HEALTHY) {
151
- return GRPC_ERROR_NONE;
149
+ return absl::nullopt;
152
150
  }
153
151
  // Find the ip:port.
154
152
  const envoy_config_endpoint_v3_Endpoint* endpoint =
@@ -161,7 +159,7 @@ grpc_error_handle ServerAddressParseAndAppend(
161
159
  envoy_config_core_v3_SocketAddress_address(socket_address));
162
160
  uint32_t port = envoy_config_core_v3_SocketAddress_port_value(socket_address);
163
161
  if (GPR_UNLIKELY(port >> 16) != 0) {
164
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Invalid port.");
162
+ return absl::InvalidArgumentError("Invalid port.");
165
163
  }
166
164
  // Find load_balancing_weight for the endpoint.
167
165
  uint32_t weight = 1;
@@ -170,44 +168,42 @@ grpc_error_handle ServerAddressParseAndAppend(
170
168
  if (load_balancing_weight != nullptr) {
171
169
  weight = google_protobuf_UInt32Value_value(load_balancing_weight);
172
170
  if (weight == 0) {
173
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
174
- "Invalid endpoint weight of 0.");
171
+ return absl::InvalidArgumentError("Invalid endpoint weight of 0.");
175
172
  }
176
173
  }
177
174
  // Populate grpc_resolved_address.
178
- grpc_resolved_address addr;
179
- grpc_error_handle error =
180
- grpc_string_to_sockaddr(&addr, address_str.c_str(), port);
181
- if (!GRPC_ERROR_IS_NONE(error)) return error;
175
+ auto addr = StringToSockaddr(address_str, port);
176
+ if (!addr.ok()) return addr.status();
182
177
  // Append the address to the list.
183
178
  std::map<const char*, std::unique_ptr<ServerAddress::AttributeInterface>>
184
179
  attributes;
185
180
  attributes[ServerAddressWeightAttribute::kServerAddressWeightAttributeKey] =
186
181
  absl::make_unique<ServerAddressWeightAttribute>(weight);
187
- list->emplace_back(addr, nullptr, std::move(attributes));
188
- return GRPC_ERROR_NONE;
182
+ return ServerAddress(*addr, ChannelArgs(), std::move(attributes));
189
183
  }
190
184
 
191
- grpc_error_handle LocalityParse(
192
- const envoy_config_endpoint_v3_LocalityLbEndpoints* locality_lb_endpoints,
193
- XdsEndpointResource::Priority::Locality* output_locality,
194
- size_t* priority) {
185
+ struct ParsedLocality {
186
+ size_t priority;
187
+ XdsEndpointResource::Priority::Locality locality;
188
+ };
189
+
190
+ absl::StatusOr<ParsedLocality> LocalityParse(
191
+ const envoy_config_endpoint_v3_LocalityLbEndpoints* locality_lb_endpoints) {
192
+ ParsedLocality parsed_locality;
195
193
  // Parse LB weight.
196
194
  const google_protobuf_UInt32Value* lb_weight =
197
195
  envoy_config_endpoint_v3_LocalityLbEndpoints_load_balancing_weight(
198
196
  locality_lb_endpoints);
199
197
  // If LB weight is not specified, it means this locality is assigned no load.
200
- // TODO(juanlishen): When we support CDS to configure the inter-locality
201
- // policy, we should change the LB weight handling.
202
- output_locality->lb_weight =
198
+ parsed_locality.locality.lb_weight =
203
199
  lb_weight != nullptr ? google_protobuf_UInt32Value_value(lb_weight) : 0;
204
- if (output_locality->lb_weight == 0) return GRPC_ERROR_NONE;
200
+ if (parsed_locality.locality.lb_weight == 0) return parsed_locality;
205
201
  // Parse locality name.
206
202
  const envoy_config_core_v3_Locality* locality =
207
203
  envoy_config_endpoint_v3_LocalityLbEndpoints_locality(
208
204
  locality_lb_endpoints);
209
205
  if (locality == nullptr) {
210
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty locality.");
206
+ return absl::InvalidArgumentError("Empty locality.");
211
207
  }
212
208
  std::string region =
213
209
  UpbStringToStdString(envoy_config_core_v3_Locality_region(locality));
@@ -215,7 +211,7 @@ grpc_error_handle LocalityParse(
215
211
  UpbStringToStdString(envoy_config_core_v3_Locality_zone(locality));
216
212
  std::string sub_zone =
217
213
  UpbStringToStdString(envoy_config_core_v3_Locality_sub_zone(locality));
218
- output_locality->name = MakeRefCounted<XdsLocalityName>(
214
+ parsed_locality.locality.name = MakeRefCounted<XdsLocalityName>(
219
215
  std::move(region), std::move(zone), std::move(sub_zone));
220
216
  // Parse the addresses.
221
217
  size_t size;
@@ -223,17 +219,20 @@ grpc_error_handle LocalityParse(
223
219
  envoy_config_endpoint_v3_LocalityLbEndpoints_lb_endpoints(
224
220
  locality_lb_endpoints, &size);
225
221
  for (size_t i = 0; i < size; ++i) {
226
- grpc_error_handle error = ServerAddressParseAndAppend(
227
- lb_endpoints[i], &output_locality->endpoints);
228
- if (!GRPC_ERROR_IS_NONE(error)) return error;
222
+ auto address = ServerAddressParse(lb_endpoints[i]);
223
+ if (!address.ok()) return address.status();
224
+ if (address->has_value()) {
225
+ parsed_locality.locality.endpoints.push_back(std::move(**address));
226
+ }
229
227
  }
230
228
  // Parse the priority.
231
- *priority = envoy_config_endpoint_v3_LocalityLbEndpoints_priority(
232
- locality_lb_endpoints);
233
- return GRPC_ERROR_NONE;
229
+ parsed_locality.priority =
230
+ envoy_config_endpoint_v3_LocalityLbEndpoints_priority(
231
+ locality_lb_endpoints);
232
+ return parsed_locality;
234
233
  }
235
234
 
236
- grpc_error_handle DropParseAndAppend(
235
+ absl::Status DropParseAndAppend(
237
236
  const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload*
238
237
  drop_overload,
239
238
  XdsEndpointResource::DropConfig* drop_config) {
@@ -242,7 +241,7 @@ grpc_error_handle DropParseAndAppend(
242
241
  envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_category(
243
242
  drop_overload));
244
243
  if (category.empty()) {
245
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty drop category name");
244
+ return absl::InvalidArgumentError("Empty drop category name");
246
245
  }
247
246
  // Get the drop rate (per million).
248
247
  const envoy_type_v3_FractionalPercent* drop_percentage =
@@ -264,58 +263,60 @@ grpc_error_handle DropParseAndAppend(
264
263
  case envoy_type_v3_FractionalPercent_MILLION:
265
264
  break;
266
265
  default:
267
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unknown denominator type");
266
+ return absl::InvalidArgumentError(
267
+ "drop config: unknown denominator type");
268
268
  }
269
269
  // Cap numerator to 1000000.
270
270
  numerator = std::min(numerator, 1000000u);
271
271
  drop_config->AddCategory(std::move(category), numerator);
272
- return GRPC_ERROR_NONE;
272
+ return absl::OkStatus();
273
273
  }
274
274
 
275
- grpc_error_handle EdsResourceParse(
276
- const XdsEncodingContext& /*context*/,
275
+ absl::StatusOr<XdsEndpointResource> EdsResourceParse(
276
+ const XdsResourceType::DecodeContext& /*context*/,
277
277
  const envoy_config_endpoint_v3_ClusterLoadAssignment*
278
278
  cluster_load_assignment,
279
- bool /*is_v2*/, XdsEndpointResource* eds_update) {
280
- std::vector<grpc_error_handle> errors;
279
+ bool /*is_v2*/) {
280
+ XdsEndpointResource eds_resource;
281
+ std::vector<std::string> errors;
281
282
  // Get the endpoints.
282
283
  size_t locality_size;
283
284
  const envoy_config_endpoint_v3_LocalityLbEndpoints* const* endpoints =
284
285
  envoy_config_endpoint_v3_ClusterLoadAssignment_endpoints(
285
286
  cluster_load_assignment, &locality_size);
286
287
  for (size_t j = 0; j < locality_size; ++j) {
287
- size_t priority;
288
- XdsEndpointResource::Priority::Locality locality;
289
- grpc_error_handle error = LocalityParse(endpoints[j], &locality, &priority);
290
- if (!GRPC_ERROR_IS_NONE(error)) {
291
- errors.push_back(error);
288
+ auto parsed_locality = LocalityParse(endpoints[j]);
289
+ if (!parsed_locality.ok()) {
290
+ errors.emplace_back(parsed_locality.status().message());
292
291
  continue;
293
292
  }
294
293
  // Filter out locality with weight 0.
295
- if (locality.lb_weight == 0) continue;
294
+ if (parsed_locality->locality.lb_weight == 0) continue;
296
295
  // Make sure prorities is big enough. Note that they might not
297
296
  // arrive in priority order.
298
- if (eds_update->priorities.size() < priority + 1) {
299
- eds_update->priorities.resize(priority + 1);
297
+ if (eds_resource.priorities.size() < parsed_locality->priority + 1) {
298
+ eds_resource.priorities.resize(parsed_locality->priority + 1);
300
299
  }
301
- auto& locality_map = eds_update->priorities[priority].localities;
302
- auto it = locality_map.find(locality.name.get());
300
+ auto& locality_map =
301
+ eds_resource.priorities[parsed_locality->priority].localities;
302
+ auto it = locality_map.find(parsed_locality->locality.name.get());
303
303
  if (it != locality_map.end()) {
304
- errors.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
305
- "duplicate locality ", locality.name->AsHumanReadableString(),
306
- " found in priority ", priority)));
304
+ errors.emplace_back(
305
+ absl::StrCat("duplicate locality ",
306
+ parsed_locality->locality.name->AsHumanReadableString(),
307
+ " found in priority ", parsed_locality->priority));
307
308
  } else {
308
- locality_map.emplace(locality.name.get(), std::move(locality));
309
+ locality_map.emplace(parsed_locality->locality.name.get(),
310
+ std::move(parsed_locality->locality));
309
311
  }
310
312
  }
311
- for (const auto& priority : eds_update->priorities) {
313
+ for (const auto& priority : eds_resource.priorities) {
312
314
  if (priority.localities.empty()) {
313
- errors.push_back(
314
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("sparse priority list"));
315
+ errors.emplace_back("sparse priority list");
315
316
  }
316
317
  }
317
318
  // Get the drop config.
318
- eds_update->drop_config = MakeRefCounted<XdsEndpointResource::DropConfig>();
319
+ eds_resource.drop_config = MakeRefCounted<XdsEndpointResource::DropConfig>();
319
320
  const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* policy =
320
321
  envoy_config_endpoint_v3_ClusterLoadAssignment_policy(
321
322
  cluster_load_assignment);
@@ -326,24 +327,24 @@ grpc_error_handle EdsResourceParse(
326
327
  envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_drop_overloads(
327
328
  policy, &drop_size);
328
329
  for (size_t j = 0; j < drop_size; ++j) {
329
- grpc_error_handle error =
330
- DropParseAndAppend(drop_overload[j], eds_update->drop_config.get());
331
- if (!GRPC_ERROR_IS_NONE(error)) {
332
- errors.push_back(
333
- grpc_error_add_child(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
334
- "drop config validation error"),
335
- error));
336
- }
330
+ absl::Status status =
331
+ DropParseAndAppend(drop_overload[j], eds_resource.drop_config.get());
332
+ if (!status.ok()) errors.emplace_back(status.message());
337
333
  }
338
334
  }
339
- return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing EDS resource", &errors);
335
+ // Return result.
336
+ if (!errors.empty()) {
337
+ return absl::InvalidArgumentError(absl::StrCat(
338
+ "errors parsing EDS resource: [", absl::StrJoin(errors, "; "), "]"));
339
+ }
340
+ return eds_resource;
340
341
  }
341
342
 
342
343
  } // namespace
343
344
 
344
345
  absl::StatusOr<XdsResourceType::DecodeResult> XdsEndpointResourceType::Decode(
345
- const XdsEncodingContext& context, absl::string_view serialized_resource,
346
- bool is_v2) const {
346
+ const XdsResourceType::DecodeContext& context,
347
+ absl::string_view serialized_resource, bool is_v2) const {
347
348
  // Parse serialized proto.
348
349
  auto* resource = envoy_config_endpoint_v3_ClusterLoadAssignment_parse(
349
350
  serialized_resource.data(), serialized_resource.size(), context.arena);
@@ -356,24 +357,23 @@ absl::StatusOr<XdsResourceType::DecodeResult> XdsEndpointResourceType::Decode(
356
357
  DecodeResult result;
357
358
  result.name = UpbStringToStdString(
358
359
  envoy_config_endpoint_v3_ClusterLoadAssignment_cluster_name(resource));
359
- auto endpoint_data = absl::make_unique<ResourceDataSubclass>();
360
- grpc_error_handle error =
361
- EdsResourceParse(context, resource, is_v2, &endpoint_data->resource);
362
- if (!GRPC_ERROR_IS_NONE(error)) {
363
- std::string error_str = grpc_error_std_string(error);
364
- GRPC_ERROR_UNREF(error);
360
+ auto eds_resource = EdsResourceParse(context, resource, is_v2);
361
+ if (!eds_resource.ok()) {
365
362
  if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
366
363
  gpr_log(GPR_ERROR, "[xds_client %p] invalid ClusterLoadAssignment %s: %s",
367
- context.client, result.name.c_str(), error_str.c_str());
364
+ context.client, result.name.c_str(),
365
+ eds_resource.status().ToString().c_str());
368
366
  }
369
- result.resource = absl::InvalidArgumentError(error_str);
367
+ result.resource = eds_resource.status();
370
368
  } else {
371
369
  if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
372
370
  gpr_log(GPR_INFO, "[xds_client %p] parsed ClusterLoadAssignment %s: %s",
373
371
  context.client, result.name.c_str(),
374
- endpoint_data->resource.ToString().c_str());
372
+ eds_resource->ToString().c_str());
375
373
  }
376
- result.resource = std::move(endpoint_data);
374
+ auto resource = absl::make_unique<ResourceDataSubclass>();
375
+ resource->resource = std::move(*eds_resource);
376
+ result.resource = std::move(resource);
377
377
  }
378
378
  return std::move(result);
379
379
  }
@@ -33,8 +33,8 @@
33
33
  #include "envoy/config/endpoint/v3/endpoint.upbdefs.h"
34
34
  #include "upb/def.h"
35
35
 
36
- #include "src/core/ext/xds/upb_utils.h"
37
36
  #include "src/core/ext/xds/xds_client_stats.h"
37
+ #include "src/core/ext/xds/xds_resource_type.h"
38
38
  #include "src/core/ext/xds/xds_resource_type_impl.h"
39
39
  #include "src/core/lib/gprpp/ref_counted.h"
40
40
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
@@ -129,9 +129,9 @@ class XdsEndpointResourceType
129
129
  return "envoy.api.v2.ClusterLoadAssignment";
130
130
  }
131
131
 
132
- absl::StatusOr<DecodeResult> Decode(const XdsEncodingContext& context,
133
- absl::string_view serialized_resource,
134
- bool is_v2) const override;
132
+ absl::StatusOr<DecodeResult> Decode(
133
+ const XdsResourceType::DecodeContext& context,
134
+ absl::string_view serialized_resource, bool is_v2) const override;
135
135
 
136
136
  void InitUpbSymtab(upb_DefPool* symtab) const override {
137
137
  envoy_config_endpoint_v3_ClusterLoadAssignment_getmsgdef(symtab);
@@ -109,7 +109,7 @@ absl::StatusOr<Json> ParseHttpFaultIntoJson(
109
109
  int abort_http_status_code =
110
110
  envoy_extensions_filters_http_fault_v3_FaultAbort_http_status(
111
111
  fault_abort);
112
- if (abort_http_status_code != 0 and abort_http_status_code != 200) {
112
+ if (abort_http_status_code != 0 && abort_http_status_code != 200) {
113
113
  abort_grpc_status_code =
114
114
  grpc_http2_status_to_grpc_status(abort_http_status_code);
115
115
  }
@@ -203,16 +203,9 @@ const grpc_channel_filter* XdsHttpFaultFilter::channel_filter() const {
203
203
  return &FaultInjectionFilter::kFilter;
204
204
  }
205
205
 
206
- grpc_channel_args* XdsHttpFaultFilter::ModifyChannelArgs(
207
- grpc_channel_args* args) const {
208
- grpc_arg args_to_add = grpc_channel_arg_integer_create(
209
- const_cast<char*>(GRPC_ARG_PARSE_FAULT_INJECTION_METHOD_CONFIG), 1);
210
- grpc_channel_args* new_args =
211
- grpc_channel_args_copy_and_add(args, &args_to_add, 1);
212
- // Since this function takes the ownership of the channel args, it needs to
213
- // deallocate the old ones to prevent leak.
214
- grpc_channel_args_destroy(args);
215
- return new_args;
206
+ ChannelArgs XdsHttpFaultFilter::ModifyChannelArgs(
207
+ const ChannelArgs& args) const {
208
+ return args.Set(GRPC_ARG_PARSE_FAULT_INJECTION_METHOD_CONFIG, 1);
216
209
  }
217
210
 
218
211
  absl::StatusOr<XdsHttpFilterImpl::ServiceConfigJsonEntry>
@@ -20,12 +20,12 @@
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
22
  #include "absl/status/statusor.h"
23
+ #include "upb/arena.h"
23
24
  #include "upb/def.h"
24
25
  #include "upb/upb.h"
25
26
 
26
- #include <grpc/impl/codegen/grpc_types.h>
27
-
28
27
  #include "src/core/ext/xds/xds_http_filters.h"
28
+ #include "src/core/lib/channel/channel_args.h"
29
29
  #include "src/core/lib/channel/channel_fwd.h"
30
30
 
31
31
  namespace grpc_core {
@@ -49,7 +49,7 @@ class XdsHttpFaultFilter : public XdsHttpFilterImpl {
49
49
  const grpc_channel_filter* channel_filter() const override;
50
50
 
51
51
  // Overrides the ModifyChannelArgs method
52
- grpc_channel_args* ModifyChannelArgs(grpc_channel_args* args) const override;
52
+ ChannelArgs ModifyChannelArgs(const ChannelArgs& args) const override;
53
53
 
54
54
  // Overrides the GenerateServiceConfig method
55
55
  absl::StatusOr<ServiceConfigJsonEntry> GenerateServiceConfig(
@@ -26,11 +26,11 @@
26
26
  #include "absl/status/statusor.h"
27
27
  #include "absl/strings/str_cat.h"
28
28
  #include "absl/strings/string_view.h"
29
+ #include "upb/arena.h"
29
30
  #include "upb/def.h"
30
31
  #include "upb/upb.h"
31
32
 
32
- #include <grpc/impl/codegen/grpc_types.h>
33
-
33
+ #include "src/core/lib/channel/channel_args.h"
34
34
  #include "src/core/lib/channel/channel_fwd.h"
35
35
  #include "src/core/lib/json/json.h"
36
36
 
@@ -88,7 +88,7 @@ class XdsHttpFilterImpl {
88
88
  // Modifies channel args that may affect service config parsing (not
89
89
  // visible to the channel as a whole).
90
90
  // Takes ownership of args. Caller takes ownership of return value.
91
- virtual grpc_channel_args* ModifyChannelArgs(grpc_channel_args* args) const {
91
+ virtual ChannelArgs ModifyChannelArgs(const ChannelArgs& args) const {
92
92
  return args;
93
93
  }
94
94
 
@@ -24,13 +24,13 @@
24
24
  #include <cstdint>
25
25
  #include <map>
26
26
  #include <string>
27
- #include <type_traits>
28
27
  #include <utility>
29
28
  #include <vector>
30
29
 
31
30
  #include "absl/status/status.h"
32
31
  #include "absl/strings/match.h"
33
- #include "absl/strings/str_format.h"
32
+ #include "absl/strings/str_cat.h"
33
+ #include "absl/strings/str_join.h"
34
34
  #include "absl/strings/string_view.h"
35
35
  #include "envoy/config/core/v3/address.upb.h"
36
36
  #include "envoy/config/rbac/v3/rbac.upb.h"
@@ -48,8 +48,6 @@
48
48
  #include "src/core/ext/filters/rbac/rbac_service_config_parser.h"
49
49
  #include "src/core/ext/xds/upb_utils.h"
50
50
  #include "src/core/lib/channel/channel_args.h"
51
- #include "src/core/lib/gprpp/debug_location.h"
52
- #include "src/core/lib/gprpp/status_helper.h"
53
51
  #include "src/core/lib/json/json.h"
54
52
 
55
53
  namespace grpc_core {
@@ -77,15 +75,13 @@ Json ParseInt64RangeToJson(const envoy_type_v3_Int64Range* range) {
77
75
  absl::StatusOr<Json> ParseHeaderMatcherToJson(
78
76
  const envoy_config_route_v3_HeaderMatcher* header) {
79
77
  Json::Object header_json;
80
- std::vector<absl::Status> error_list;
78
+ std::vector<std::string> errors;
81
79
  std::string name =
82
80
  UpbStringToStdString(envoy_config_route_v3_HeaderMatcher_name(header));
83
81
  if (name == ":scheme") {
84
- error_list.push_back(
85
- absl::InvalidArgumentError("':scheme' not allowed in header"));
82
+ errors.emplace_back("':scheme' not allowed in header");
86
83
  } else if (absl::StartsWith(name, "grpc-")) {
87
- error_list.push_back(
88
- absl::InvalidArgumentError("'grpc-' prefixes not allowed in header"));
84
+ errors.emplace_back("'grpc-' prefixes not allowed in header");
89
85
  }
90
86
  header_json.emplace("name", std::move(name));
91
87
  if (envoy_config_route_v3_HeaderMatcher_has_exact_match(header)) {
@@ -123,13 +119,11 @@ absl::StatusOr<Json> ParseHeaderMatcherToJson(
123
119
  UpbStringToStdString(
124
120
  envoy_config_route_v3_HeaderMatcher_contains_match(header)));
125
121
  } else {
126
- error_list.push_back(
127
- absl::InvalidArgumentError("Invalid route header matcher specified."));
122
+ errors.emplace_back("Invalid route header matcher specified.");
128
123
  }
129
- if (!error_list.empty()) {
130
- return StatusCreate(absl::StatusCode::kInvalidArgument,
131
- "Error parsing HeaderMatcher", DEBUG_LOCATION,
132
- std::move(error_list));
124
+ if (!errors.empty()) {
125
+ return absl::InvalidArgumentError(absl::StrCat(
126
+ "errors parsing HeaderMatcher: [", absl::StrJoin(errors, "; "), "]"));
133
127
  }
134
128
  header_json.emplace("invertMatch",
135
129
  envoy_config_route_v3_HeaderMatcher_invert_match(header));
@@ -217,7 +211,7 @@ absl::StatusOr<Json> ParsePermissionToJson(
217
211
  auto parse_permission_set_to_json =
218
212
  [](const envoy_config_rbac_v3_Permission_Set* set)
219
213
  -> absl::StatusOr<Json> {
220
- std::vector<absl::Status> error_list;
214
+ std::vector<std::string> errors;
221
215
  Json::Array rules_json;
222
216
  size_t size;
223
217
  const envoy_config_rbac_v3_Permission* const* rules =
@@ -225,15 +219,14 @@ absl::StatusOr<Json> ParsePermissionToJson(
225
219
  for (size_t i = 0; i < size; ++i) {
226
220
  auto permission_json = ParsePermissionToJson(rules[i]);
227
221
  if (!permission_json.ok()) {
228
- error_list.push_back(permission_json.status());
222
+ errors.emplace_back(permission_json.status().message());
229
223
  } else {
230
224
  rules_json.emplace_back(std::move(*permission_json));
231
225
  }
232
226
  }
233
- if (!error_list.empty()) {
234
- return StatusCreate(absl::StatusCode::kInvalidArgument,
235
- "Error parsing Set", DEBUG_LOCATION,
236
- std::move(error_list));
227
+ if (!errors.empty()) {
228
+ return absl::InvalidArgumentError(absl::StrCat(
229
+ "errors parsing Set: [", absl::StrJoin(errors, "; "), "]"));
237
230
  }
238
231
  return Json::Object({{"rules", std::move(rules_json)}});
239
232
  };
@@ -313,7 +306,7 @@ absl::StatusOr<Json> ParsePrincipalToJson(
313
306
  [](const envoy_config_rbac_v3_Principal_Set* set)
314
307
  -> absl::StatusOr<Json> {
315
308
  Json::Object json;
316
- std::vector<absl::Status> error_list;
309
+ std::vector<std::string> errors;
317
310
  Json::Array ids_json;
318
311
  size_t size;
319
312
  const envoy_config_rbac_v3_Principal* const* ids =
@@ -321,15 +314,14 @@ absl::StatusOr<Json> ParsePrincipalToJson(
321
314
  for (size_t i = 0; i < size; ++i) {
322
315
  auto principal_json = ParsePrincipalToJson(ids[i]);
323
316
  if (!principal_json.ok()) {
324
- error_list.push_back(principal_json.status());
317
+ errors.emplace_back(principal_json.status().message());
325
318
  } else {
326
319
  ids_json.emplace_back(std::move(*principal_json));
327
320
  }
328
321
  }
329
- if (!error_list.empty()) {
330
- return StatusCreate(absl::StatusCode::kInvalidArgument,
331
- "Error parsing Set", DEBUG_LOCATION,
332
- std::move(error_list));
322
+ if (!errors.empty()) {
323
+ return absl::InvalidArgumentError(absl::StrCat(
324
+ "errors parsing Set: [", absl::StrJoin(errors, "; "), "]"));
333
325
  }
334
326
  return Json::Object({{"ids", std::move(ids_json)}});
335
327
  };
@@ -412,7 +404,7 @@ absl::StatusOr<Json> ParsePrincipalToJson(
412
404
  absl::StatusOr<Json> ParsePolicyToJson(
413
405
  const envoy_config_rbac_v3_Policy* policy) {
414
406
  Json::Object policy_json;
415
- std::vector<absl::Status> error_list;
407
+ std::vector<std::string> errors;
416
408
  size_t size;
417
409
  Json::Array permissions_json;
418
410
  const envoy_config_rbac_v3_Permission* const* permissions =
@@ -420,7 +412,7 @@ absl::StatusOr<Json> ParsePolicyToJson(
420
412
  for (size_t i = 0; i < size; ++i) {
421
413
  auto permission_json = ParsePermissionToJson(permissions[i]);
422
414
  if (!permission_json.ok()) {
423
- error_list.push_back(permission_json.status());
415
+ errors.emplace_back(permission_json.status().message());
424
416
  } else {
425
417
  permissions_json.emplace_back(std::move(*permission_json));
426
418
  }
@@ -432,24 +424,21 @@ absl::StatusOr<Json> ParsePolicyToJson(
432
424
  for (size_t i = 0; i < size; ++i) {
433
425
  auto principal_json = ParsePrincipalToJson(principals[i]);
434
426
  if (!principal_json.ok()) {
435
- error_list.push_back(principal_json.status());
427
+ errors.emplace_back(principal_json.status().message());
436
428
  } else {
437
429
  principals_json.emplace_back(std::move(*principal_json));
438
430
  }
439
431
  }
440
432
  policy_json.emplace("principals", std::move(principals_json));
441
433
  if (envoy_config_rbac_v3_Policy_has_condition(policy)) {
442
- error_list.push_back(
443
- absl::InvalidArgumentError("Policy: condition not supported"));
434
+ errors.emplace_back("Policy: condition not supported");
444
435
  }
445
436
  if (envoy_config_rbac_v3_Policy_has_checked_condition(policy)) {
446
- error_list.push_back(
447
- absl::InvalidArgumentError("Policy: checked condition not supported"));
437
+ errors.emplace_back("Policy: checked condition not supported");
448
438
  }
449
- if (!error_list.empty()) {
450
- return StatusCreate(absl::StatusCode::kInvalidArgument,
451
- "Error parsing Policy", DEBUG_LOCATION,
452
- std::move(error_list));
439
+ if (!errors.empty()) {
440
+ return absl::InvalidArgumentError(absl::StrCat(
441
+ "errors parsing Policy: [", absl::StrJoin(errors, "; "), "]"));
453
442
  }
454
443
  return policy_json;
455
444
  }
@@ -457,7 +446,7 @@ absl::StatusOr<Json> ParsePolicyToJson(
457
446
  absl::StatusOr<Json> ParseHttpRbacToJson(
458
447
  const envoy_extensions_filters_http_rbac_v3_RBAC* rbac) {
459
448
  Json::Object rbac_json;
460
- std::vector<absl::Status> error_list;
449
+ std::vector<std::string> errors;
461
450
  const auto* rules = envoy_extensions_filters_http_rbac_v3_RBAC_rules(rbac);
462
451
  if (rules != nullptr) {
463
452
  int action = envoy_config_rbac_v3_RBAC_action(rules);
@@ -478,13 +467,11 @@ absl::StatusOr<Json> ParseHttpRbacToJson(
478
467
  auto policy = ParsePolicyToJson(
479
468
  envoy_config_rbac_v3_RBAC_PoliciesEntry_value(entry));
480
469
  if (!policy.ok()) {
481
- error_list.push_back(StatusCreate(
482
- absl::StatusCode::kInvalidArgument,
483
- absl::StrFormat(
484
- "RBAC PoliciesEntry key:%s",
485
- UpbStringToStdString(
486
- envoy_config_rbac_v3_RBAC_PoliciesEntry_key(entry))),
487
- DEBUG_LOCATION, {policy.status()}));
470
+ errors.emplace_back(absl::StrCat(
471
+ "RBAC PoliciesEntry key:",
472
+ UpbStringToStdString(
473
+ envoy_config_rbac_v3_RBAC_PoliciesEntry_key(entry)),
474
+ " error:", policy.status().message()));
488
475
  } else {
489
476
  policies_object.emplace(
490
477
  UpbStringToStdString(
@@ -496,10 +483,9 @@ absl::StatusOr<Json> ParseHttpRbacToJson(
496
483
  }
497
484
  rbac_json.emplace("rules", std::move(inner_rbac_json));
498
485
  }
499
- if (!error_list.empty()) {
500
- return StatusCreate(absl::StatusCode::kInvalidArgument,
501
- "Error parsing RBAC", DEBUG_LOCATION,
502
- std::move(error_list));
486
+ if (!errors.empty()) {
487
+ return absl::InvalidArgumentError(absl::StrCat(
488
+ "errors parsing RBAC: [", absl::StrJoin(errors, "; "), "]"));
503
489
  }
504
490
  return rbac_json;
505
491
  }
@@ -555,14 +541,9 @@ const grpc_channel_filter* XdsHttpRbacFilter::channel_filter() const {
555
541
  return &RbacFilter::kFilterVtable;
556
542
  }
557
543
 
558
- grpc_channel_args* XdsHttpRbacFilter::ModifyChannelArgs(
559
- grpc_channel_args* args) const {
560
- grpc_arg arg_to_add = grpc_channel_arg_integer_create(
561
- const_cast<char*>(GRPC_ARG_PARSE_RBAC_METHOD_CONFIG), 1);
562
- grpc_channel_args* new_args =
563
- grpc_channel_args_copy_and_add(args, &arg_to_add, 1);
564
- grpc_channel_args_destroy(args);
565
- return new_args;
544
+ ChannelArgs XdsHttpRbacFilter::ModifyChannelArgs(
545
+ const ChannelArgs& args) const {
546
+ return args.Set(GRPC_ARG_PARSE_RBAC_METHOD_CONFIG, 1);
566
547
  }
567
548
 
568
549
  absl::StatusOr<XdsHttpFilterImpl::ServiceConfigJsonEntry>