grpc 1.62.0 → 1.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1761) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +463 -2007
  3. data/include/grpc/byte_buffer.h +1 -2
  4. data/include/grpc/census.h +1 -2
  5. data/include/grpc/compression.h +1 -2
  6. data/include/grpc/credentials.h +1222 -0
  7. data/include/grpc/event_engine/endpoint_config.h +2 -2
  8. data/include/grpc/event_engine/event_engine.h +4 -2
  9. data/include/grpc/event_engine/extensible.h +2 -2
  10. data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -2
  11. data/include/grpc/event_engine/memory_allocator.h +1 -2
  12. data/include/grpc/event_engine/memory_request.h +2 -2
  13. data/include/grpc/event_engine/slice.h +1 -2
  14. data/include/grpc/event_engine/slice_buffer.h +1 -2
  15. data/include/grpc/grpc.h +8 -8
  16. data/include/grpc/grpc_audit_logging.h +1 -2
  17. data/include/grpc/grpc_crl_provider.h +3 -2
  18. data/include/grpc/grpc_cronet.h +1 -2
  19. data/include/grpc/grpc_posix.h +1 -2
  20. data/include/grpc/grpc_security.h +1 -1173
  21. data/include/grpc/impl/call.h +1 -2
  22. data/include/grpc/impl/channel_arg_names.h +4 -3
  23. data/include/grpc/impl/grpc_types.h +1 -2
  24. data/include/grpc/impl/slice_type.h +2 -2
  25. data/include/grpc/module.modulemap +2 -0
  26. data/include/grpc/slice.h +1 -2
  27. data/include/grpc/slice_buffer.h +1 -2
  28. data/include/grpc/support/alloc.h +2 -2
  29. data/include/grpc/support/json.h +2 -2
  30. data/include/grpc/support/log.h +3 -3
  31. data/include/grpc/support/metrics.h +51 -0
  32. data/include/grpc/support/string_util.h +0 -1
  33. data/include/grpc/support/sync.h +0 -1
  34. data/include/grpc/support/sync_abseil.h +0 -1
  35. data/include/grpc/support/sync_custom.h +0 -1
  36. data/include/grpc/support/sync_generic.h +1 -2
  37. data/include/grpc/support/sync_posix.h +1 -2
  38. data/include/grpc/support/time.h +2 -2
  39. data/src/core/{lib/channel → channelz}/channel_trace.cc +56 -62
  40. data/src/core/{lib/channel → channelz}/channel_trace.h +21 -19
  41. data/src/core/{lib/channel → channelz}/channelz.cc +68 -6
  42. data/src/core/{lib/channel → channelz}/channelz.h +54 -12
  43. data/src/core/{lib/channel → channelz}/channelz_registry.cc +7 -6
  44. data/src/core/{lib/channel → channelz}/channelz_registry.h +7 -7
  45. data/src/core/client_channel/client_channel_filter.cc +106 -100
  46. data/src/core/client_channel/client_channel_filter.h +8 -18
  47. data/src/core/client_channel/client_channel_internal.h +4 -3
  48. data/src/core/client_channel/client_channel_service_config.h +5 -4
  49. data/src/core/client_channel/config_selector.h +5 -4
  50. data/src/core/client_channel/connector.h +1 -1
  51. data/src/core/client_channel/dynamic_filters.cc +3 -2
  52. data/src/core/client_channel/dynamic_filters.h +1 -1
  53. data/src/core/client_channel/local_subchannel_pool.cc +5 -3
  54. data/src/core/client_channel/retry_filter.cc +1 -1
  55. data/src/core/client_channel/retry_filter.h +4 -3
  56. data/src/core/client_channel/retry_filter_legacy_call_data.cc +6 -5
  57. data/src/core/client_channel/retry_filter_legacy_call_data.h +9 -9
  58. data/src/core/client_channel/retry_service_config.h +3 -3
  59. data/src/core/client_channel/retry_throttle.h +3 -2
  60. data/src/core/client_channel/subchannel.cc +15 -14
  61. data/src/core/client_channel/subchannel.h +7 -8
  62. data/src/core/client_channel/subchannel_pool_interface.h +1 -1
  63. data/src/core/client_channel/subchannel_stream_client.cc +6 -8
  64. data/src/core/client_channel/subchannel_stream_client.h +2 -2
  65. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +7 -52
  66. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +2 -14
  67. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +27 -25
  68. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +10 -11
  69. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +8 -9
  70. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +4 -4
  71. data/src/core/ext/filters/http/client/http_client_filter.cc +5 -4
  72. data/src/core/ext/filters/http/client/http_client_filter.h +5 -5
  73. data/src/core/ext/filters/http/client_authority_filter.cc +4 -3
  74. data/src/core/ext/filters/http/client_authority_filter.h +5 -4
  75. data/src/core/ext/filters/http/http_filters_plugin.cc +15 -35
  76. data/src/core/ext/filters/http/message_compress/compression_filter.cc +17 -15
  77. data/src/core/ext/filters/http/message_compress/compression_filter.h +10 -9
  78. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  79. data/src/core/ext/filters/http/server/http_server_filter.h +5 -5
  80. data/src/core/ext/filters/message_size/message_size_filter.cc +24 -28
  81. data/src/core/ext/filters/message_size/message_size_filter.h +8 -6
  82. data/src/core/ext/filters/rbac/rbac_filter.cc +5 -7
  83. data/src/core/ext/filters/rbac/rbac_filter.h +5 -5
  84. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
  85. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +12 -12
  86. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +3 -2
  87. data/src/core/ext/gcp/metadata_query.cc +4 -3
  88. data/src/core/ext/gcp/metadata_query.h +2 -2
  89. data/src/core/ext/transport/chttp2/alpn/alpn.cc +4 -3
  90. data/src/core/ext/transport/chttp2/alpn/alpn.h +2 -2
  91. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +17 -22
  92. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -3
  93. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +48 -11
  94. data/src/core/ext/transport/chttp2/server/chttp2_server.h +3 -3
  95. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +6 -6
  96. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +1 -2
  97. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +8 -7
  98. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -2
  99. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +80 -128
  100. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +25 -7
  101. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +15 -12
  102. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +2 -2
  103. data/src/core/ext/transport/chttp2/transport/decode_huff.h +2 -2
  104. data/src/core/ext/transport/chttp2/transport/flow_control.cc +4 -4
  105. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
  106. data/src/core/ext/transport/chttp2/transport/frame.cc +4 -4
  107. data/src/core/ext/transport/chttp2/transport/frame.h +2 -2
  108. data/src/core/ext/transport/chttp2/transport/frame_data.cc +3 -3
  109. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -2
  110. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +5 -5
  111. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -2
  112. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +3 -3
  113. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -2
  114. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +3 -3
  115. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -2
  116. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +1 -2
  117. data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -2
  118. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -4
  119. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -2
  120. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +2 -2
  121. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +4 -3
  122. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -2
  123. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +10 -9
  124. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -2
  125. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +4 -3
  126. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +3 -3
  127. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -73
  128. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -4
  129. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +5 -5
  130. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -2
  131. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +2 -2
  132. data/src/core/ext/transport/chttp2/transport/http2_settings.h +2 -2
  133. data/src/core/ext/transport/chttp2/transport/http_trace.cc +2 -2
  134. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +2 -2
  135. data/src/core/ext/transport/chttp2/transport/internal.h +7 -7
  136. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +4 -3
  137. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +2 -2
  138. data/src/core/ext/transport/chttp2/transport/parsing.cc +19 -24
  139. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +1 -2
  140. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +2 -2
  141. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +3 -3
  142. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +1 -2
  143. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +1 -2
  144. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +2 -2
  145. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +7 -6
  146. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -2
  147. data/src/core/ext/transport/chttp2/transport/varint.h +4 -3
  148. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +4 -3
  149. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +2 -2
  150. data/src/core/ext/transport/chttp2/transport/writing.cc +69 -53
  151. data/src/core/ext/transport/inproc/inproc_transport.cc +18 -16
  152. data/src/core/ext/transport/inproc/inproc_transport.h +1 -2
  153. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +16 -16
  154. data/src/core/ext/transport/inproc/legacy_inproc_transport.h +1 -2
  155. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +243 -230
  156. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +42 -48
  157. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +289 -265
  158. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +62 -70
  159. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +238 -226
  160. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +42 -50
  161. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +937 -882
  162. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +182 -208
  163. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +77 -76
  164. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +9 -9
  165. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +86 -84
  166. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +13 -13
  167. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +49 -42
  168. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +13 -13
  169. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +28 -24
  170. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +7 -7
  171. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +28 -24
  172. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +7 -7
  173. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +357 -318
  174. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +86 -86
  175. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +23 -20
  176. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +5 -7
  177. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +40 -32
  178. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +4 -4
  179. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +24 -20
  180. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +4 -4
  181. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +517 -473
  182. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +105 -125
  183. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +1207 -1108
  184. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +261 -289
  185. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +163 -152
  186. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +29 -43
  187. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +1265 -1137
  188. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +276 -346
  189. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +32 -28
  190. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +7 -9
  191. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +212 -188
  192. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +53 -69
  193. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +564 -508
  194. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +123 -131
  195. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +340 -309
  196. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +69 -83
  197. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +25 -22
  198. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +5 -11
  199. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +786 -688
  200. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +171 -189
  201. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +367 -343
  202. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +72 -80
  203. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +19 -16
  204. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +4 -4
  205. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +23 -20
  206. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +5 -7
  207. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +77 -76
  208. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +9 -9
  209. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +539 -471
  210. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +125 -141
  211. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +672 -632
  212. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +137 -137
  213. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +44 -43
  214. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +7 -7
  215. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +35 -30
  216. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +8 -8
  217. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +713 -637
  218. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +166 -208
  219. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +65 -61
  220. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +10 -12
  221. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +65 -61
  222. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +11 -13
  223. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +91 -83
  224. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +17 -17
  225. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +102 -93
  226. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +22 -22
  227. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +25 -22
  228. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +5 -11
  229. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +162 -145
  230. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +32 -40
  231. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +314 -287
  232. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +70 -74
  233. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +330 -309
  234. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +66 -66
  235. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +16 -14
  236. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +3 -7
  237. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +516 -478
  238. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +110 -120
  239. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +495 -468
  240. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +89 -101
  241. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +88 -78
  242. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +19 -37
  243. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +41 -36
  244. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +8 -26
  245. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +46 -40
  246. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +13 -13
  247. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +307 -279
  248. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +60 -64
  249. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +382 -358
  250. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +70 -70
  251. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +540 -490
  252. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +122 -136
  253. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +339 -327
  254. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +48 -70
  255. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +3407 -3145
  256. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +700 -752
  257. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +100 -91
  258. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +20 -20
  259. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +472 -430
  260. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +102 -116
  261. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +28 -24
  262. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +7 -7
  263. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +23 -20
  264. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +5 -7
  265. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +42 -36
  266. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +9 -13
  267. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +58 -55
  268. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +9 -13
  269. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +146 -136
  270. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +30 -30
  271. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +69 -65
  272. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +15 -15
  273. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +16 -14
  274. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +3 -7
  275. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +67 -58
  276. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +14 -24
  277. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +64 -56
  278. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +14 -20
  279. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +58 -50
  280. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +16 -16
  281. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +986 -832
  282. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +269 -281
  283. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +35 -35
  284. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +3 -3
  285. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +102 -88
  286. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +25 -25
  287. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +224 -204
  288. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +46 -62
  289. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +66 -58
  290. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +14 -24
  291. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +160 -153
  292. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +28 -30
  293. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +51 -44
  294. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +12 -12
  295. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1349 -1230
  296. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +293 -309
  297. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +16 -14
  298. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +3 -7
  299. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +61 -54
  300. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +13 -23
  301. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +124 -108
  302. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +29 -37
  303. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +14 -12
  304. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +3 -3
  305. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +66 -58
  306. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +20 -20
  307. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +16 -14
  308. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +3 -7
  309. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +518 -493
  310. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +82 -108
  311. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +92 -80
  312. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +23 -29
  313. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +497 -457
  314. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +110 -124
  315. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +58 -55
  316. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +9 -11
  317. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +206 -185
  318. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +48 -64
  319. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +7 -6
  320. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +1 -1
  321. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +766 -710
  322. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +140 -150
  323. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +102 -98
  324. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +17 -17
  325. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +310 -288
  326. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +67 -67
  327. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +30 -26
  328. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +8 -8
  329. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +77 -71
  330. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +13 -13
  331. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +26 -22
  332. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +6 -6
  333. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +70 -60
  334. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +15 -15
  335. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +77 -71
  336. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +14 -14
  337. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +44 -43
  338. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +7 -7
  339. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +28 -24
  340. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +6 -6
  341. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +19 -16
  342. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +4 -4
  343. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +65 -56
  344. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +15 -19
  345. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +14 -12
  346. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +2 -2
  347. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +97 -89
  348. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +18 -18
  349. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +63 -59
  350. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +10 -10
  351. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +134 -121
  352. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +29 -29
  353. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +135 -121
  354. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +26 -26
  355. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +141 -122
  356. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +37 -37
  357. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +49 -42
  358. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +11 -11
  359. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +14 -12
  360. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +3 -3
  361. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +35 -30
  362. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +8 -8
  363. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +63 -54
  364. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +15 -15
  365. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +58 -50
  366. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +14 -14
  367. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +28 -24
  368. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +7 -7
  369. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +32 -28
  370. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +7 -9
  371. data/src/core/ext/upb-gen/google/api/annotations.upb.h +10 -8
  372. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +1 -1
  373. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +581 -524
  374. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +118 -146
  375. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +616 -544
  376. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +136 -152
  377. data/src/core/ext/upb-gen/google/api/http.upb.h +176 -162
  378. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +34 -34
  379. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +49 -47
  380. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +8 -8
  381. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +21 -18
  382. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +5 -5
  383. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +2456 -2358
  384. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +367 -486
  385. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +21 -18
  386. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +5 -5
  387. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +7 -6
  388. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +1 -1
  389. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +134 -116
  390. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +27 -29
  391. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +21 -18
  392. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +5 -5
  393. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +126 -108
  394. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +27 -27
  395. data/src/core/ext/upb-gen/google/rpc/status.upb.h +49 -47
  396. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +8 -8
  397. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +107 -92
  398. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +27 -27
  399. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +77 -61
  400. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +21 -21
  401. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +577 -518
  402. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +121 -127
  403. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +46 -40
  404. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +10 -16
  405. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +28 -24
  406. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +6 -6
  407. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +265 -238
  408. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +57 -63
  409. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +96 -82
  410. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +19 -19
  411. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +496 -466
  412. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +81 -85
  413. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +99 -82
  414. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +16 -16
  415. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +31 -26
  416. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +6 -6
  417. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +10 -8
  418. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +1 -1
  419. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +31 -26
  420. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +6 -6
  421. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +24 -20
  422. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +4 -4
  423. data/src/core/ext/upb-gen/validate/validate.upb.h +2620 -2458
  424. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +363 -507
  425. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +99 -82
  426. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +16 -16
  427. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +31 -26
  428. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +6 -6
  429. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +10 -8
  430. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +1 -1
  431. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +93 -78
  432. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +17 -17
  433. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +24 -20
  434. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +4 -4
  435. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +14 -12
  436. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +3 -3
  437. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +23 -20
  438. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +5 -7
  439. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +58 -50
  440. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +15 -15
  441. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +33 -23
  442. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +8 -8
  443. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +23 -20
  444. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +5 -7
  445. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +32 -28
  446. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +9 -9
  447. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +103 -93
  448. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +21 -21
  449. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +37 -32
  450. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +9 -13
  451. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +127 -93
  452. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +34 -34
  453. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +44 -43
  454. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +6 -6
  455. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +23 -20
  456. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +6 -6
  457. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +79 -78
  458. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +9 -11
  459. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +7 -6
  460. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +1 -1
  461. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +86 -84
  462. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +13 -13
  463. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +324 -285
  464. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +74 -82
  465. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +237 -234
  466. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +30 -36
  467. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +33 -28
  468. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +7 -7
  469. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +97 -89
  470. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +18 -18
  471. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +53 -46
  472. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +12 -18
  473. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +63 -54
  474. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +15 -15
  475. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +23 -20
  476. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +5 -7
  477. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +2 -5
  478. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +2 -5
  479. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +2 -5
  480. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +2 -5
  481. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +2 -5
  482. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +2 -5
  483. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +2 -5
  484. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +2 -5
  485. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +2 -5
  486. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +2 -5
  487. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +2 -5
  488. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +2 -5
  489. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +2 -5
  490. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +2 -5
  491. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +2 -5
  492. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +2 -5
  493. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +2 -5
  494. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +2 -5
  495. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +2 -5
  496. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +2 -5
  497. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +2 -5
  498. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +2 -5
  499. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +2 -5
  500. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +2 -5
  501. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +2 -5
  502. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +2 -5
  503. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +2 -5
  504. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +2 -5
  505. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +2 -5
  506. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.h +2 -5
  507. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +2 -5
  508. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +2 -5
  509. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +2 -5
  510. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +2 -5
  511. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +2 -5
  512. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +2 -5
  513. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +2 -5
  514. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +2 -5
  515. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +2 -5
  516. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +2 -5
  517. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +2 -5
  518. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +2 -5
  519. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +2 -5
  520. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +2 -5
  521. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +2 -5
  522. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +2 -5
  523. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +2 -5
  524. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +2 -5
  525. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +2 -5
  526. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +2 -5
  527. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +2 -5
  528. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +2 -5
  529. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +2 -5
  530. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +2 -5
  531. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +2 -5
  532. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +2 -5
  533. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +2 -5
  534. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +2 -5
  535. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +2 -5
  536. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +2 -5
  537. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +2 -5
  538. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +2 -5
  539. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +2 -5
  540. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +2 -5
  541. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +2 -5
  542. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +2 -5
  543. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +2 -5
  544. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +2 -5
  545. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +2 -5
  546. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +2 -5
  547. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +2 -5
  548. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +2 -5
  549. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +2 -5
  550. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +2 -5
  551. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +2 -5
  552. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +2 -5
  553. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +2 -5
  554. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +2 -5
  555. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +2 -5
  556. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +2 -5
  557. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +2 -5
  558. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +2 -5
  559. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +2 -5
  560. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +2 -5
  561. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +2 -5
  562. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +2 -5
  563. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +2 -5
  564. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +2 -5
  565. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +2 -5
  566. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +2 -5
  567. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +2 -5
  568. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +2 -5
  569. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +2 -5
  570. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +2 -5
  571. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +2 -5
  572. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +2 -5
  573. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +2 -5
  574. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +2 -5
  575. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +2 -5
  576. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +2 -5
  577. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +2 -5
  578. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +2 -5
  579. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +2 -5
  580. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +2 -5
  581. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +2 -5
  582. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +2 -5
  583. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +2 -5
  584. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +2 -5
  585. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +2 -5
  586. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +2 -5
  587. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +2 -5
  588. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +2 -5
  589. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +2 -5
  590. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +385 -384
  591. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +2 -5
  592. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +2 -5
  593. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +2 -5
  594. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +2 -5
  595. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +2 -5
  596. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +2 -5
  597. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +2 -5
  598. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +2 -5
  599. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +2 -5
  600. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +2 -5
  601. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +2 -5
  602. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +2 -5
  603. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +2 -5
  604. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +2 -5
  605. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +2 -5
  606. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +2 -5
  607. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +2 -5
  608. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +2 -5
  609. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +2 -5
  610. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +2 -5
  611. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +2 -5
  612. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +2 -5
  613. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +2 -5
  614. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +2 -5
  615. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +2 -5
  616. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +2 -5
  617. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +2 -5
  618. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +2 -5
  619. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +2 -5
  620. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +2 -5
  621. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +2 -5
  622. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +2 -5
  623. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +2 -5
  624. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +2 -5
  625. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +2 -5
  626. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +2 -5
  627. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +2 -5
  628. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +2 -5
  629. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +2 -5
  630. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc +80 -0
  631. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.h +37 -0
  632. data/src/core/{lib/transport → handshaker}/handshaker.cc +8 -6
  633. data/src/core/{lib/transport → handshaker}/handshaker.h +4 -5
  634. data/src/core/{lib/transport → handshaker}/handshaker_factory.h +20 -5
  635. data/src/core/{lib/transport → handshaker}/handshaker_registry.cc +3 -3
  636. data/src/core/{lib/transport → handshaker}/handshaker_registry.h +6 -6
  637. data/src/core/{lib/transport → handshaker/http_connect}/http_connect_handshaker.cc +5 -6
  638. data/src/core/{lib/transport → handshaker/http_connect}/http_connect_handshaker.h +3 -3
  639. data/src/core/{client_channel → handshaker/http_connect}/http_proxy_mapper.cc +9 -10
  640. data/src/core/{client_channel → handshaker/http_connect}/http_proxy_mapper.h +7 -7
  641. data/src/core/{lib/handshaker → handshaker}/proxy_mapper.h +5 -5
  642. data/src/core/{lib/handshaker → handshaker}/proxy_mapper_registry.cc +3 -3
  643. data/src/core/{lib/handshaker → handshaker}/proxy_mapper_registry.h +6 -6
  644. data/src/core/{lib/security/transport → handshaker/security}/secure_endpoint.cc +5 -5
  645. data/src/core/{lib/security/transport → handshaker/security}/secure_endpoint.h +4 -5
  646. data/src/core/{lib/security/transport → handshaker/security}/security_handshaker.cc +29 -20
  647. data/src/core/{lib/security/transport → handshaker/security}/security_handshaker.h +8 -7
  648. data/src/core/{lib/security/transport → handshaker/security}/tsi_error.cc +2 -2
  649. data/src/core/{lib/security/transport → handshaker/security}/tsi_error.h +3 -3
  650. data/src/core/{lib/transport → handshaker/tcp_connect}/tcp_connect_handshaker.cc +8 -8
  651. data/src/core/{lib/transport → handshaker/tcp_connect}/tcp_connect_handshaker.h +3 -3
  652. data/src/core/lib/address_utils/parse_address.cc +13 -4
  653. data/src/core/lib/address_utils/parse_address.h +2 -2
  654. data/src/core/lib/address_utils/sockaddr_utils.cc +23 -10
  655. data/src/core/lib/address_utils/sockaddr_utils.h +2 -2
  656. data/src/core/lib/avl/avl.h +2 -2
  657. data/src/core/lib/backoff/backoff.cc +2 -2
  658. data/src/core/lib/backoff/backoff.h +2 -2
  659. data/src/core/lib/backoff/random_early_detection.cc +2 -2
  660. data/src/core/lib/backoff/random_early_detection.h +2 -2
  661. data/src/core/lib/channel/call_finalization.h +3 -3
  662. data/src/core/lib/channel/call_tracer.cc +10 -11
  663. data/src/core/lib/channel/call_tracer.h +15 -14
  664. data/src/core/lib/channel/channel_args.cc +4 -4
  665. data/src/core/lib/channel/channel_args.h +1 -2
  666. data/src/core/lib/channel/channel_args_preconditioning.cc +2 -2
  667. data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
  668. data/src/core/lib/channel/channel_stack.cc +17 -7
  669. data/src/core/lib/channel/channel_stack.h +6 -2
  670. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  671. data/src/core/lib/channel/channel_stack_builder.h +2 -2
  672. data/src/core/lib/channel/channel_stack_builder_impl.cc +135 -2
  673. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -2
  674. data/src/core/lib/channel/channel_stack_trace.cc +2 -2
  675. data/src/core/lib/channel/connected_channel.cc +25 -43
  676. data/src/core/lib/channel/context.h +29 -1
  677. data/src/core/lib/channel/metrics.cc +334 -0
  678. data/src/core/lib/channel/metrics.h +365 -0
  679. data/src/core/lib/channel/promise_based_filter.cc +70 -75
  680. data/src/core/lib/channel/promise_based_filter.h +251 -154
  681. data/src/core/lib/channel/status_util.cc +2 -2
  682. data/src/core/lib/channel/status_util.h +1 -2
  683. data/src/core/lib/channel/tcp_tracer.h +6 -2
  684. data/src/core/lib/compression/compression.cc +1 -2
  685. data/src/core/lib/compression/compression_internal.cc +36 -3
  686. data/src/core/lib/compression/compression_internal.h +4 -2
  687. data/src/core/lib/compression/message_compress.cc +9 -8
  688. data/src/core/lib/compression/message_compress.h +1 -2
  689. data/src/core/lib/config/config_vars.cc +8 -6
  690. data/src/core/lib/config/config_vars.h +6 -2
  691. data/src/core/lib/config/config_vars_non_generated.cc +2 -2
  692. data/src/core/lib/config/core_configuration.cc +9 -8
  693. data/src/core/lib/config/core_configuration.h +8 -8
  694. data/src/core/lib/config/load_config.cc +4 -4
  695. data/src/core/lib/config/load_config.h +2 -2
  696. data/src/core/lib/debug/event_log.cc +3 -3
  697. data/src/core/lib/debug/event_log.h +2 -2
  698. data/src/core/lib/debug/histogram_view.cc +2 -2
  699. data/src/core/lib/debug/histogram_view.h +2 -2
  700. data/src/core/lib/debug/stats.cc +2 -2
  701. data/src/core/lib/debug/stats.h +2 -2
  702. data/src/core/lib/debug/stats_data.cc +271 -28
  703. data/src/core/lib/debug/stats_data.h +178 -2
  704. data/src/core/lib/debug/trace.cc +1 -2
  705. data/src/core/lib/debug/trace.h +2 -2
  706. data/src/core/lib/event_engine/ares_resolver.cc +18 -19
  707. data/src/core/lib/event_engine/ares_resolver.h +2 -2
  708. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -1
  709. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +3 -3
  710. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +2 -1
  711. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +2 -1
  712. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +1 -2
  713. data/src/core/lib/event_engine/channel_args_endpoint_config.h +1 -2
  714. data/src/core/lib/event_engine/common_closures.h +1 -2
  715. data/src/core/lib/event_engine/default_event_engine.cc +1 -2
  716. data/src/core/lib/event_engine/default_event_engine.h +1 -8
  717. data/src/core/lib/event_engine/default_event_engine_factory.cc +1 -2
  718. data/src/core/lib/event_engine/default_event_engine_factory.h +1 -2
  719. data/src/core/lib/event_engine/event_engine.cc +1 -2
  720. data/src/core/lib/event_engine/event_engine_context.h +30 -0
  721. data/src/core/lib/event_engine/extensions/can_track_errors.h +2 -2
  722. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +65 -0
  723. data/src/core/lib/event_engine/extensions/supports_fd.h +1 -2
  724. data/src/core/lib/event_engine/forkable.cc +7 -6
  725. data/src/core/lib/event_engine/forkable.h +1 -2
  726. data/src/core/lib/event_engine/grpc_polled_fd.h +1 -2
  727. data/src/core/lib/event_engine/handle_containers.h +1 -2
  728. data/src/core/lib/event_engine/memory_allocator_factory.h +1 -2
  729. data/src/core/lib/event_engine/poller.h +1 -2
  730. data/src/core/lib/event_engine/posix.h +9 -2
  731. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +8 -8
  732. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +1 -2
  733. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +11 -11
  734. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +1 -2
  735. data/src/core/lib/event_engine/posix_engine/event_poller.h +1 -2
  736. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -2
  737. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +2 -2
  738. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +1 -2
  739. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +1 -2
  740. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +2 -2
  741. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +3 -3
  742. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +2 -2
  743. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +2 -2
  744. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +24 -25
  745. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +11 -11
  746. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +10 -10
  747. data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -2
  748. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +1 -2
  749. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -3
  750. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +1 -2
  751. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +7 -6
  752. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -2
  753. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +10 -3
  754. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -3
  755. data/src/core/lib/event_engine/posix_engine/timer.cc +1 -2
  756. data/src/core/lib/event_engine/posix_engine/timer.h +1 -2
  757. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +2 -2
  758. data/src/core/lib/event_engine/posix_engine/timer_heap.h +2 -2
  759. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -5
  760. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -2
  761. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +1 -2
  762. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -2
  763. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +2 -2
  764. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -2
  765. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +2 -2
  766. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -2
  767. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +2 -2
  768. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -2
  769. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +2 -2
  770. data/src/core/lib/event_engine/query_extensions.h +3 -2
  771. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +1 -2
  772. data/src/core/lib/event_engine/resolved_address.cc +5 -4
  773. data/src/core/lib/event_engine/resolved_address_internal.h +1 -2
  774. data/src/core/lib/event_engine/shim.cc +2 -2
  775. data/src/core/lib/event_engine/slice.cc +4 -3
  776. data/src/core/lib/event_engine/slice_buffer.cc +1 -2
  777. data/src/core/lib/event_engine/tcp_socket_utils.cc +20 -9
  778. data/src/core/lib/event_engine/tcp_socket_utils.h +3 -4
  779. data/src/core/lib/event_engine/thread_local.cc +2 -2
  780. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -2
  781. data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -2
  782. data/src/core/lib/event_engine/thread_pool/thread_pool.h +1 -2
  783. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +2 -2
  784. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +8 -8
  785. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +1 -2
  786. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +2 -2
  787. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +1 -2
  788. data/src/core/lib/event_engine/time_util.cc +1 -2
  789. data/src/core/lib/event_engine/time_util.h +1 -2
  790. data/src/core/lib/event_engine/trace.cc +2 -2
  791. data/src/core/lib/event_engine/trace.h +1 -2
  792. data/src/core/lib/event_engine/utils.cc +1 -2
  793. data/src/core/lib/event_engine/utils.h +1 -2
  794. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +31 -30
  795. data/src/core/lib/event_engine/windows/iocp.cc +10 -8
  796. data/src/core/lib/event_engine/windows/win_socket.cc +11 -5
  797. data/src/core/lib/event_engine/windows/win_socket.h +3 -0
  798. data/src/core/lib/event_engine/windows/windows_endpoint.cc +13 -12
  799. data/src/core/lib/event_engine/windows/windows_engine.cc +48 -14
  800. data/src/core/lib/event_engine/windows/windows_listener.cc +61 -12
  801. data/src/core/lib/event_engine/windows/windows_listener.h +14 -0
  802. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +2 -2
  803. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +1 -2
  804. data/src/core/lib/event_engine/work_queue/work_queue.h +1 -2
  805. data/src/core/lib/experiments/config.cc +66 -48
  806. data/src/core/lib/experiments/config.h +2 -2
  807. data/src/core/lib/experiments/experiments.cc +42 -246
  808. data/src/core/lib/experiments/experiments.h +26 -124
  809. data/src/core/lib/gpr/alloc.cc +3 -1
  810. data/src/core/lib/gpr/android/log.cc +1 -1
  811. data/src/core/lib/gpr/linux/log.cc +1 -1
  812. data/src/core/lib/gpr/log.cc +26 -0
  813. data/src/core/lib/gpr/posix/log.cc +1 -1
  814. data/src/core/lib/gpr/posix/sync.cc +25 -23
  815. data/src/core/lib/gpr/posix/time.cc +9 -66
  816. data/src/core/lib/gpr/posix/tmpfile.cc +3 -1
  817. data/src/core/lib/gpr/sync.cc +5 -3
  818. data/src/core/lib/gpr/time.cc +10 -8
  819. data/src/core/lib/gpr/windows/log.cc +1 -1
  820. data/src/core/lib/gpr/windows/sync.cc +3 -1
  821. data/src/core/lib/gpr/windows/time.cc +4 -1
  822. data/src/core/lib/gprpp/atomic_utils.h +2 -2
  823. data/src/core/lib/gprpp/bitset.h +2 -2
  824. data/src/core/lib/gprpp/chunked_vector.h +6 -5
  825. data/src/core/lib/gprpp/construct_destruct.h +2 -2
  826. data/src/core/lib/gprpp/crash.cc +1 -2
  827. data/src/core/lib/gprpp/crash.h +2 -2
  828. data/src/core/lib/gprpp/debug_location.h +2 -2
  829. data/src/core/lib/gprpp/directory_reader.h +2 -2
  830. data/src/core/lib/gprpp/down_cast.h +7 -7
  831. data/src/core/lib/gprpp/dual_ref_counted.h +26 -17
  832. data/src/core/lib/gprpp/env.h +2 -2
  833. data/src/core/lib/gprpp/examine_stack.cc +2 -2
  834. data/src/core/lib/gprpp/examine_stack.h +2 -2
  835. data/src/core/lib/gprpp/fork.cc +1 -2
  836. data/src/core/lib/gprpp/fork.h +2 -2
  837. data/src/core/lib/gprpp/host_port.cc +6 -4
  838. data/src/core/lib/gprpp/host_port.h +2 -2
  839. data/src/core/lib/gprpp/linux/env.cc +2 -2
  840. data/src/core/lib/gprpp/load_file.cc +4 -3
  841. data/src/core/lib/gprpp/load_file.h +2 -2
  842. data/src/core/lib/gprpp/manual_constructor.h +2 -2
  843. data/src/core/lib/gprpp/match.h +2 -2
  844. data/src/core/lib/gprpp/memory.h +1 -2
  845. data/src/core/lib/gprpp/mpscq.cc +2 -2
  846. data/src/core/lib/gprpp/mpscq.h +5 -4
  847. data/src/core/lib/gprpp/no_destruct.h +2 -2
  848. data/src/core/lib/gprpp/notification.h +2 -2
  849. data/src/core/lib/gprpp/orphanable.h +7 -4
  850. data/src/core/lib/gprpp/overload.h +2 -2
  851. data/src/core/lib/gprpp/per_cpu.cc +1 -2
  852. data/src/core/lib/gprpp/per_cpu.h +1 -2
  853. data/src/core/lib/gprpp/posix/directory_reader.cc +2 -2
  854. data/src/core/lib/gprpp/posix/stat.cc +6 -4
  855. data/src/core/lib/gprpp/posix/thd.cc +10 -10
  856. data/src/core/lib/gprpp/ref_counted.h +10 -6
  857. data/src/core/lib/gprpp/ref_counted_ptr.h +4 -3
  858. data/src/core/lib/gprpp/ref_counted_string.cc +1 -2
  859. data/src/core/lib/gprpp/ref_counted_string.h +2 -2
  860. data/src/core/lib/gprpp/single_set_ptr.h +4 -3
  861. data/src/core/lib/gprpp/sorted_pack.h +2 -2
  862. data/src/core/lib/gprpp/stat.h +2 -2
  863. data/src/core/lib/gprpp/status_helper.cc +3 -3
  864. data/src/core/lib/gprpp/status_helper.h +2 -2
  865. data/src/core/lib/gprpp/strerror.cc +2 -2
  866. data/src/core/lib/gprpp/strerror.h +2 -2
  867. data/src/core/lib/gprpp/sync.h +5 -5
  868. data/src/core/lib/gprpp/table.h +2 -2
  869. data/src/core/lib/gprpp/tchar.cc +2 -2
  870. data/src/core/lib/gprpp/thd.h +7 -7
  871. data/src/core/lib/gprpp/time.cc +6 -6
  872. data/src/core/lib/gprpp/time.h +7 -2
  873. data/src/core/lib/gprpp/time_averaged_stats.cc +2 -2
  874. data/src/core/lib/gprpp/time_util.cc +5 -4
  875. data/src/core/lib/gprpp/time_util.h +1 -2
  876. data/src/core/lib/gprpp/unique_type_name.h +2 -2
  877. data/src/core/lib/gprpp/uuid_v4.cc +37 -0
  878. data/src/core/lib/gprpp/uuid_v4.h +36 -0
  879. data/src/core/lib/gprpp/validation_errors.cc +2 -2
  880. data/src/core/lib/gprpp/validation_errors.h +2 -2
  881. data/src/core/lib/gprpp/windows/stat.cc +4 -2
  882. data/src/core/lib/gprpp/windows/thd.cc +4 -2
  883. data/src/core/lib/gprpp/work_serializer.cc +5 -5
  884. data/src/core/lib/gprpp/work_serializer.h +1 -2
  885. data/src/core/lib/http/format_request.cc +1 -2
  886. data/src/core/lib/http/format_request.h +1 -2
  887. data/src/core/lib/http/httpcli.cc +6 -6
  888. data/src/core/lib/http/httpcli.h +2 -3
  889. data/src/core/lib/http/httpcli_security_connector.cc +4 -4
  890. data/src/core/lib/http/httpcli_ssl_credentials.h +1 -2
  891. data/src/core/lib/http/parser.cc +5 -5
  892. data/src/core/lib/http/parser.h +1 -2
  893. data/src/core/lib/iomgr/buffer_list.cc +1 -2
  894. data/src/core/lib/iomgr/buffer_list.h +1 -2
  895. data/src/core/lib/iomgr/call_combiner.cc +5 -4
  896. data/src/core/lib/iomgr/call_combiner.h +1 -2
  897. data/src/core/lib/iomgr/closure.cc +2 -2
  898. data/src/core/lib/iomgr/closure.h +4 -3
  899. data/src/core/lib/iomgr/combiner.cc +7 -6
  900. data/src/core/lib/iomgr/combiner.h +1 -2
  901. data/src/core/lib/iomgr/endpoint.cc +2 -2
  902. data/src/core/lib/iomgr/endpoint.h +1 -2
  903. data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -5
  904. data/src/core/lib/iomgr/endpoint_pair_posix.cc +5 -4
  905. data/src/core/lib/iomgr/endpoint_pair_windows.cc +11 -10
  906. data/src/core/lib/iomgr/error.cc +3 -3
  907. data/src/core/lib/iomgr/error.h +3 -3
  908. data/src/core/lib/iomgr/ev_epoll1_linux.cc +14 -13
  909. data/src/core/lib/iomgr/ev_poll_posix.cc +9 -9
  910. data/src/core/lib/iomgr/ev_posix.cc +1 -2
  911. data/src/core/lib/iomgr/ev_posix.h +2 -2
  912. data/src/core/lib/iomgr/event_engine_shims/closure.cc +1 -2
  913. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -2
  914. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +3 -3
  915. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -2
  916. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +1 -2
  917. data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +1 -2
  918. data/src/core/lib/iomgr/exec_ctx.cc +5 -5
  919. data/src/core/lib/iomgr/exec_ctx.h +6 -4
  920. data/src/core/lib/iomgr/executor.cc +7 -8
  921. data/src/core/lib/iomgr/grpc_if_nametoindex.h +2 -2
  922. data/src/core/lib/iomgr/internal_errqueue.cc +1 -2
  923. data/src/core/lib/iomgr/iocp_windows.cc +9 -6
  924. data/src/core/lib/iomgr/iocp_windows.h +0 -1
  925. data/src/core/lib/iomgr/iomgr.cc +1 -2
  926. data/src/core/lib/iomgr/iomgr.h +2 -2
  927. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  928. data/src/core/lib/iomgr/iomgr_internal.h +2 -2
  929. data/src/core/lib/iomgr/iomgr_windows.cc +4 -2
  930. data/src/core/lib/iomgr/lockfree_event.cc +4 -3
  931. data/src/core/lib/iomgr/lockfree_event.h +1 -2
  932. data/src/core/lib/iomgr/polling_entity.cc +5 -5
  933. data/src/core/lib/iomgr/pollset.cc +2 -2
  934. data/src/core/lib/iomgr/pollset.h +0 -1
  935. data/src/core/lib/iomgr/pollset_set.cc +2 -2
  936. data/src/core/lib/iomgr/pollset_set_windows.cc +2 -2
  937. data/src/core/lib/iomgr/pollset_windows.h +0 -1
  938. data/src/core/lib/iomgr/port.h +3 -0
  939. data/src/core/lib/iomgr/python_util.h +1 -2
  940. data/src/core/lib/iomgr/resolve_address.cc +1 -2
  941. data/src/core/lib/iomgr/resolve_address.h +1 -2
  942. data/src/core/lib/iomgr/resolve_address_impl.h +2 -2
  943. data/src/core/lib/iomgr/resolve_address_posix.h +2 -2
  944. data/src/core/lib/iomgr/resolve_address_windows.h +2 -2
  945. data/src/core/lib/iomgr/resolved_address.h +2 -2
  946. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +3 -1
  947. data/src/core/lib/iomgr/socket_factory_posix.h +1 -2
  948. data/src/core/lib/iomgr/socket_mutator.cc +1 -2
  949. data/src/core/lib/iomgr/socket_mutator.h +1 -2
  950. data/src/core/lib/iomgr/socket_utils.h +2 -2
  951. data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -1
  952. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
  953. data/src/core/lib/iomgr/socket_utils_posix.h +1 -2
  954. data/src/core/lib/iomgr/socket_windows.cc +4 -3
  955. data/src/core/lib/iomgr/tcp_client.cc +2 -2
  956. data/src/core/lib/iomgr/tcp_client.h +1 -2
  957. data/src/core/lib/iomgr/tcp_client_posix.cc +5 -4
  958. data/src/core/lib/iomgr/tcp_client_windows.cc +31 -10
  959. data/src/core/lib/iomgr/tcp_posix.cc +89 -41
  960. data/src/core/lib/iomgr/tcp_server.cc +2 -2
  961. data/src/core/lib/iomgr/tcp_server.h +1 -2
  962. data/src/core/lib/iomgr/tcp_server_posix.cc +123 -109
  963. data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -2
  964. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +6 -6
  965. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -1
  966. data/src/core/lib/iomgr/tcp_server_windows.cc +75 -23
  967. data/src/core/lib/iomgr/tcp_windows.cc +8 -6
  968. data/src/core/lib/iomgr/timer.cc +2 -2
  969. data/src/core/lib/iomgr/timer.h +1 -2
  970. data/src/core/lib/iomgr/timer_generic.cc +3 -3
  971. data/src/core/lib/iomgr/timer_generic.h +0 -1
  972. data/src/core/lib/iomgr/timer_heap.cc +1 -2
  973. data/src/core/lib/iomgr/timer_manager.cc +4 -3
  974. data/src/core/lib/iomgr/timer_manager.h +2 -2
  975. data/src/core/lib/iomgr/unix_sockets_posix.cc +15 -1
  976. data/src/core/lib/iomgr/unix_sockets_posix.h +1 -2
  977. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +3 -1
  978. data/src/core/lib/iomgr/vsock.cc +2 -2
  979. data/src/core/lib/iomgr/vsock.h +1 -2
  980. data/src/core/lib/json/json.h +1 -2
  981. data/src/core/lib/json/json_args.h +2 -2
  982. data/src/core/lib/json/json_channel_args.h +2 -2
  983. data/src/core/lib/json/json_object_loader.cc +1 -2
  984. data/src/core/lib/json/json_object_loader.h +2 -2
  985. data/src/core/lib/json/json_reader.cc +4 -4
  986. data/src/core/lib/json/json_reader.h +2 -2
  987. data/src/core/lib/json/json_util.cc +2 -2
  988. data/src/core/lib/json/json_util.h +2 -2
  989. data/src/core/lib/json/json_writer.cc +2 -2
  990. data/src/core/lib/json/json_writer.h +2 -2
  991. data/src/core/lib/matchers/matchers.cc +2 -2
  992. data/src/core/lib/matchers/matchers.h +2 -2
  993. data/src/core/lib/promise/activity.cc +4 -3
  994. data/src/core/lib/promise/activity.h +8 -7
  995. data/src/core/lib/promise/all_ok.h +2 -2
  996. data/src/core/lib/promise/arena_promise.h +2 -2
  997. data/src/core/lib/promise/context.h +5 -5
  998. data/src/core/lib/promise/detail/join_state.h +11 -10
  999. data/src/core/lib/promise/detail/promise_factory.h +2 -2
  1000. data/src/core/lib/promise/detail/promise_like.h +2 -2
  1001. data/src/core/lib/promise/detail/seq_state.h +194 -194
  1002. data/src/core/lib/promise/detail/status.h +4 -3
  1003. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +2 -2
  1004. data/src/core/lib/promise/for_each.h +88 -27
  1005. data/src/core/lib/promise/if.h +2 -2
  1006. data/src/core/lib/promise/interceptor_list.h +3 -3
  1007. data/src/core/lib/promise/latch.h +8 -8
  1008. data/src/core/lib/promise/loop.h +2 -2
  1009. data/src/core/lib/promise/map.h +2 -2
  1010. data/src/core/lib/promise/party.cc +45 -15
  1011. data/src/core/lib/promise/party.h +21 -23
  1012. data/src/core/lib/promise/pipe.h +15 -15
  1013. data/src/core/lib/promise/poll.h +6 -5
  1014. data/src/core/lib/promise/prioritized_race.h +2 -2
  1015. data/src/core/lib/promise/promise.h +2 -2
  1016. data/src/core/lib/promise/race.h +2 -2
  1017. data/src/core/lib/promise/seq.h +2 -2
  1018. data/src/core/lib/promise/sleep.cc +2 -3
  1019. data/src/core/lib/promise/sleep.h +1 -2
  1020. data/src/core/lib/promise/status_flag.h +16 -8
  1021. data/src/core/lib/promise/trace.cc +2 -2
  1022. data/src/core/lib/promise/try_join.h +4 -3
  1023. data/src/core/lib/promise/try_seq.h +4 -3
  1024. data/src/core/lib/resource_quota/api.cc +1 -2
  1025. data/src/core/lib/resource_quota/api.h +1 -2
  1026. data/src/core/lib/resource_quota/arena.cc +1 -2
  1027. data/src/core/lib/resource_quota/arena.h +4 -2
  1028. data/src/core/lib/resource_quota/connection_quota.cc +70 -0
  1029. data/src/core/lib/resource_quota/connection_quota.h +61 -0
  1030. data/src/core/lib/resource_quota/memory_quota.cc +11 -11
  1031. data/src/core/lib/resource_quota/memory_quota.h +4 -4
  1032. data/src/core/lib/resource_quota/periodic_update.cc +2 -2
  1033. data/src/core/lib/resource_quota/periodic_update.h +2 -2
  1034. data/src/core/lib/resource_quota/resource_quota.cc +2 -2
  1035. data/src/core/lib/resource_quota/resource_quota.h +1 -2
  1036. data/src/core/lib/resource_quota/thread_quota.cc +4 -3
  1037. data/src/core/lib/resource_quota/thread_quota.h +2 -2
  1038. data/src/core/lib/resource_quota/trace.cc +2 -2
  1039. data/src/core/lib/security/authorization/audit_logging.cc +6 -6
  1040. data/src/core/lib/security/authorization/audit_logging.h +1 -2
  1041. data/src/core/lib/security/authorization/authorization_engine.h +2 -2
  1042. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -2
  1043. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -2
  1044. data/src/core/lib/security/authorization/evaluate_args.cc +7 -7
  1045. data/src/core/lib/security/authorization/evaluate_args.h +4 -5
  1046. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +4 -3
  1047. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -2
  1048. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +8 -12
  1049. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +7 -9
  1050. data/src/core/lib/security/authorization/matchers.cc +1 -2
  1051. data/src/core/lib/security/authorization/matchers.h +2 -2
  1052. data/src/core/lib/security/authorization/rbac_policy.cc +2 -2
  1053. data/src/core/lib/security/authorization/rbac_policy.h +1 -2
  1054. data/src/core/lib/security/authorization/stdout_logger.cc +4 -3
  1055. data/src/core/lib/security/authorization/stdout_logger.h +1 -2
  1056. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +2 -2
  1057. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +4 -3
  1058. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +2 -2
  1059. data/src/core/lib/security/context/security_context.cc +5 -3
  1060. data/src/core/lib/security/context/security_context.h +2 -2
  1061. data/src/core/lib/security/credentials/alts/alts_credentials.cc +1 -2
  1062. data/src/core/lib/security/credentials/alts/alts_credentials.h +2 -2
  1063. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -2
  1064. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -2
  1065. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +1 -2
  1066. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +2 -2
  1067. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -2
  1068. data/src/core/lib/security/credentials/call_creds_util.cc +1 -2
  1069. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  1070. data/src/core/lib/security/credentials/channel_creds_registry.h +2 -2
  1071. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +2 -2
  1072. data/src/core/lib/security/credentials/composite/composite_credentials.cc +9 -8
  1073. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  1074. data/src/core/lib/security/credentials/credentials.cc +4 -3
  1075. data/src/core/lib/security/credentials/credentials.h +5 -4
  1076. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +5 -4
  1077. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
  1078. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -2
  1079. data/src/core/lib/security/credentials/external/aws_request_signer.h +2 -2
  1080. data/src/core/lib/security/credentials/external/external_account_credentials.cc +7 -6
  1081. data/src/core/lib/security/credentials/external/external_account_credentials.h +2 -2
  1082. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -2
  1083. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +2 -2
  1084. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -3
  1085. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +2 -2
  1086. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  1087. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  1088. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -2
  1089. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +8 -7
  1090. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +2 -2
  1091. data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -5
  1092. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  1093. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  1094. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +2 -2
  1095. data/src/core/lib/security/credentials/jwt/json_token.cc +13 -8
  1096. data/src/core/lib/security/credentials/jwt/json_token.h +1 -2
  1097. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -3
  1098. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  1099. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +26 -31
  1100. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -2
  1101. data/src/core/lib/security/credentials/local/local_credentials.cc +1 -2
  1102. data/src/core/lib/security/credentials/local/local_credentials.h +2 -2
  1103. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +9 -8
  1104. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +2 -2
  1105. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +3 -3
  1106. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  1107. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -13
  1108. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +5 -3
  1109. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +26 -25
  1110. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +2 -2
  1111. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +2 -2
  1112. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +7 -6
  1113. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +3 -3
  1114. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +3 -3
  1115. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +4 -3
  1116. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +19 -18
  1117. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +1 -0
  1118. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +19 -12
  1119. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +8 -5
  1120. data/src/core/lib/security/credentials/tls/tls_credentials.cc +1 -2
  1121. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  1122. data/src/core/lib/security/credentials/tls/tls_utils.cc +1 -2
  1123. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -2
  1124. data/src/core/lib/security/credentials/xds/xds_credentials.cc +7 -7
  1125. data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
  1126. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +14 -14
  1127. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +2 -2
  1128. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +5 -5
  1129. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
  1130. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +6 -5
  1131. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +3 -3
  1132. data/src/core/lib/security/security_connector/load_system_roots.h +4 -2
  1133. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +3 -2
  1134. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +2 -2
  1135. data/src/core/lib/security/security_connector/load_system_roots_supported.h +1 -2
  1136. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +87 -0
  1137. data/src/core/lib/security/security_connector/local/local_security_connector.cc +11 -11
  1138. data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
  1139. data/src/core/lib/security/security_connector/security_connector.cc +7 -6
  1140. data/src/core/lib/security/security_connector/security_connector.h +3 -3
  1141. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +6 -6
  1142. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +2 -2
  1143. data/src/core/lib/security/security_connector/ssl_utils.cc +10 -9
  1144. data/src/core/lib/security/security_connector/ssl_utils.h +1 -2
  1145. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +13 -13
  1146. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +3 -3
  1147. data/src/core/lib/security/transport/auth_filters.h +11 -36
  1148. data/src/core/lib/security/transport/client_auth_filter.cc +6 -5
  1149. data/src/core/lib/security/transport/server_auth_filter.cc +7 -5
  1150. data/src/core/lib/security/util/json_util.cc +1 -2
  1151. data/src/core/lib/slice/percent_encoding.cc +4 -3
  1152. data/src/core/lib/slice/slice.cc +42 -15
  1153. data/src/core/lib/slice/slice.h +4 -4
  1154. data/src/core/lib/slice/slice_buffer.cc +64 -25
  1155. data/src/core/lib/slice/slice_buffer.h +15 -3
  1156. data/src/core/lib/slice/slice_internal.h +10 -3
  1157. data/src/core/lib/slice/slice_refcount.cc +2 -2
  1158. data/src/core/lib/slice/slice_refcount.h +1 -2
  1159. data/src/core/lib/slice/slice_string_helpers.cc +2 -2
  1160. data/src/core/lib/slice/slice_string_helpers.h +1 -2
  1161. data/src/core/lib/surface/api_trace.cc +2 -2
  1162. data/src/core/lib/surface/api_trace.h +1 -2
  1163. data/src/core/lib/surface/byte_buffer.cc +1 -2
  1164. data/src/core/lib/surface/byte_buffer_reader.cc +4 -3
  1165. data/src/core/lib/surface/call.cc +212 -339
  1166. data/src/core/lib/surface/call.h +181 -11
  1167. data/src/core/lib/surface/call_details.cc +1 -2
  1168. data/src/core/lib/surface/call_log_batch.cc +1 -2
  1169. data/src/core/lib/surface/call_test_only.h +1 -2
  1170. data/src/core/lib/surface/call_trace.h +0 -6
  1171. data/src/core/lib/surface/channel.cc +111 -321
  1172. data/src/core/lib/surface/channel.h +90 -110
  1173. data/src/core/lib/surface/channel_create.cc +110 -0
  1174. data/src/core/lib/surface/{builtins.cc → channel_create.h} +21 -16
  1175. data/src/core/lib/surface/channel_init.cc +13 -12
  1176. data/src/core/lib/surface/channel_init.h +31 -10
  1177. data/src/core/lib/surface/channel_stack_type.cc +2 -2
  1178. data/src/core/lib/surface/completion_queue.cc +17 -18
  1179. data/src/core/lib/surface/completion_queue.h +1 -2
  1180. data/src/core/lib/surface/completion_queue_factory.cc +9 -8
  1181. data/src/core/lib/surface/completion_queue_factory.h +1 -2
  1182. data/src/core/lib/surface/event_string.cc +2 -2
  1183. data/src/core/lib/surface/event_string.h +1 -2
  1184. data/src/core/lib/surface/init.cc +10 -16
  1185. data/src/core/lib/surface/init_internally.cc +2 -2
  1186. data/src/core/lib/surface/lame_client.cc +12 -40
  1187. data/src/core/lib/surface/lame_client.h +13 -13
  1188. data/src/core/lib/surface/legacy_channel.cc +414 -0
  1189. data/src/core/lib/surface/legacy_channel.h +123 -0
  1190. data/src/core/lib/surface/metadata_array.cc +1 -2
  1191. data/src/core/lib/surface/validate_metadata.cc +1 -2
  1192. data/src/core/lib/surface/validate_metadata.h +3 -3
  1193. data/src/core/lib/surface/version.cc +3 -4
  1194. data/src/core/lib/surface/wait_for_cq_end_op.cc +2 -2
  1195. data/src/core/lib/transport/batch_builder.cc +14 -21
  1196. data/src/core/lib/transport/batch_builder.h +6 -10
  1197. data/src/core/lib/transport/bdp_estimator.cc +5 -3
  1198. data/src/core/lib/transport/bdp_estimator.h +4 -4
  1199. data/src/core/lib/transport/{call_size_estimator.cc → call_arena_allocator.cc} +3 -3
  1200. data/src/core/lib/transport/{call_size_estimator.h → call_arena_allocator.h} +26 -5
  1201. data/src/core/lib/transport/call_filters.cc +143 -28
  1202. data/src/core/lib/transport/call_filters.h +412 -63
  1203. data/src/core/lib/transport/call_final_info.cc +2 -2
  1204. data/src/core/lib/transport/call_final_info.h +1 -2
  1205. data/src/core/lib/transport/call_spine.cc +18 -19
  1206. data/src/core/lib/transport/call_spine.h +393 -190
  1207. data/src/core/lib/transport/connectivity_state.cc +1 -2
  1208. data/src/core/lib/transport/connectivity_state.h +1 -2
  1209. data/src/core/lib/transport/error_utils.cc +1 -2
  1210. data/src/core/lib/transport/error_utils.h +1 -2
  1211. data/src/core/lib/transport/message.cc +1 -2
  1212. data/src/core/lib/transport/metadata.cc +3 -3
  1213. data/src/core/lib/transport/metadata_batch.cc +68 -7
  1214. data/src/core/lib/transport/metadata_batch.h +45 -20
  1215. data/src/core/lib/transport/metadata_compression_traits.h +2 -2
  1216. data/src/core/lib/transport/metadata_info.cc +55 -0
  1217. data/src/core/lib/transport/metadata_info.h +85 -0
  1218. data/src/core/lib/transport/parsed_metadata.cc +2 -2
  1219. data/src/core/lib/transport/parsed_metadata.h +1 -2
  1220. data/src/core/lib/transport/simple_slice_based_metadata.h +2 -2
  1221. data/src/core/lib/transport/status_conversion.cc +2 -2
  1222. data/src/core/lib/transport/status_conversion.h +1 -2
  1223. data/src/core/lib/transport/timeout_encoding.cc +5 -5
  1224. data/src/core/lib/transport/timeout_encoding.h +2 -2
  1225. data/src/core/lib/transport/transport.cc +1 -2
  1226. data/src/core/lib/transport/transport.h +41 -38
  1227. data/src/core/lib/transport/transport_op_string.cc +1 -10
  1228. data/src/core/lib/uri/uri_parser.cc +3 -3
  1229. data/src/core/lib/uri/uri_parser.h +2 -2
  1230. data/src/core/load_balancing/address_filtering.cc +3 -3
  1231. data/src/core/load_balancing/address_filtering.h +3 -3
  1232. data/src/core/load_balancing/backend_metric_data.h +2 -2
  1233. data/src/core/{client_channel/backend_metric.cc → load_balancing/backend_metric_parser.cc} +3 -3
  1234. data/src/core/{client_channel/backend_metric.h → load_balancing/backend_metric_parser.h} +5 -5
  1235. data/src/core/load_balancing/child_policy_handler.cc +7 -7
  1236. data/src/core/load_balancing/child_policy_handler.h +2 -2
  1237. data/src/core/load_balancing/delegating_helper.h +10 -3
  1238. data/src/core/load_balancing/endpoint_list.cc +7 -9
  1239. data/src/core/load_balancing/endpoint_list.h +15 -9
  1240. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +28 -30
  1241. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +21 -8
  1242. data/src/core/load_balancing/grpclb/grpclb.cc +65 -70
  1243. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +2 -2
  1244. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.h +1 -2
  1245. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +1 -2
  1246. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +2 -3
  1247. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -2
  1248. data/src/core/load_balancing/grpclb/load_balancer_api.h +2 -3
  1249. data/src/core/load_balancing/health_check_client.cc +10 -11
  1250. data/src/core/load_balancing/health_check_client.h +2 -2
  1251. data/src/core/load_balancing/health_check_client_internal.h +5 -7
  1252. data/src/core/load_balancing/lb_policy.cc +2 -2
  1253. data/src/core/load_balancing/lb_policy.h +14 -6
  1254. data/src/core/load_balancing/lb_policy_factory.h +2 -2
  1255. data/src/core/load_balancing/lb_policy_registry.cc +3 -3
  1256. data/src/core/load_balancing/lb_policy_registry.h +4 -4
  1257. data/src/core/load_balancing/oob_backend_metric.cc +10 -11
  1258. data/src/core/load_balancing/oob_backend_metric.h +3 -3
  1259. data/src/core/load_balancing/oob_backend_metric_internal.h +7 -8
  1260. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +32 -32
  1261. data/src/core/load_balancing/outlier_detection/outlier_detection.h +2 -2
  1262. data/src/core/load_balancing/pick_first/pick_first.cc +1152 -245
  1263. data/src/core/load_balancing/priority/priority.cc +23 -17
  1264. data/src/core/load_balancing/ring_hash/ring_hash.cc +42 -25
  1265. data/src/core/load_balancing/ring_hash/ring_hash.h +3 -3
  1266. data/src/core/load_balancing/rls/rls.cc +225 -95
  1267. data/src/core/load_balancing/rls/rls.h +26 -0
  1268. data/src/core/load_balancing/round_robin/round_robin.cc +33 -477
  1269. data/src/core/load_balancing/subchannel_interface.h +4 -4
  1270. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +4 -4
  1271. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +3 -3
  1272. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +203 -988
  1273. data/src/core/load_balancing/weighted_target/weighted_target.cc +20 -17
  1274. data/src/core/load_balancing/weighted_target/weighted_target.h +28 -0
  1275. data/src/core/load_balancing/xds/cds.cc +19 -20
  1276. data/src/core/load_balancing/xds/xds_cluster_impl.cc +113 -67
  1277. data/src/core/load_balancing/xds/xds_cluster_manager.cc +8 -9
  1278. data/src/core/load_balancing/xds/xds_override_host.cc +21 -21
  1279. data/src/core/load_balancing/xds/xds_override_host.h +3 -3
  1280. data/src/core/load_balancing/xds/xds_wrr_locality.cc +11 -11
  1281. data/src/core/plugin_registry/grpc_plugin_registry.cc +23 -9
  1282. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +1 -3
  1283. data/src/core/resolver/binder/binder_resolver.cc +12 -5
  1284. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +13 -13
  1285. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +2 -2
  1286. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -3
  1287. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +6 -5
  1288. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +38 -37
  1289. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +14 -14
  1290. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -2
  1291. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +1 -1
  1292. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  1293. data/src/core/resolver/dns/dns_resolver_plugin.cc +4 -5
  1294. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +7 -7
  1295. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +6 -4
  1296. data/src/core/resolver/dns/event_engine/service_config_helper.cc +2 -2
  1297. data/src/core/resolver/dns/event_engine/service_config_helper.h +2 -2
  1298. data/src/core/resolver/dns/native/dns_resolver.cc +6 -7
  1299. data/src/core/resolver/endpoint_addresses.cc +4 -4
  1300. data/src/core/resolver/endpoint_addresses.h +6 -6
  1301. data/src/core/resolver/fake/fake_resolver.cc +6 -6
  1302. data/src/core/resolver/fake/fake_resolver.h +2 -3
  1303. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +18 -13
  1304. data/src/core/resolver/polling_resolver.cc +5 -5
  1305. data/src/core/resolver/polling_resolver.h +1 -2
  1306. data/src/core/resolver/resolver.cc +2 -2
  1307. data/src/core/resolver/resolver.h +2 -2
  1308. data/src/core/resolver/resolver_factory.h +3 -3
  1309. data/src/core/resolver/resolver_registry.cc +5 -5
  1310. data/src/core/resolver/resolver_registry.h +5 -5
  1311. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +8 -9
  1312. data/src/core/resolver/xds/xds_dependency_manager.cc +19 -13
  1313. data/src/core/resolver/xds/xds_dependency_manager.h +12 -12
  1314. data/src/core/resolver/xds/xds_resolver.cc +36 -40
  1315. data/src/core/resolver/xds/xds_resolver_attributes.h +3 -3
  1316. data/src/core/resolver/xds/xds_resolver_trace.cc +2 -2
  1317. data/src/core/{lib/surface → server}/server.cc +81 -94
  1318. data/src/core/{lib/surface → server}/server.h +16 -13
  1319. data/src/core/{lib/channel → server}/server_call_tracer_filter.cc +10 -5
  1320. data/src/core/{lib/surface/builtins.h → server/server_call_tracer_filter.h} +7 -5
  1321. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector.h +5 -5
  1322. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector_filter.cc +37 -37
  1323. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector_filter.h +3 -3
  1324. data/src/core/server/server_interface.h +43 -0
  1325. data/src/core/{ext/xds → server}/xds_channel_stack_modifier.cc +3 -3
  1326. data/src/core/{ext/xds → server}/xds_channel_stack_modifier.h +6 -6
  1327. data/src/core/{ext/xds → server}/xds_server_config_fetcher.cc +43 -41
  1328. data/src/core/service_config/service_config.h +1 -2
  1329. data/src/core/service_config/service_config_call_data.h +2 -2
  1330. data/src/core/{client_channel → service_config}/service_config_channel_arg_filter.cc +7 -8
  1331. data/src/core/service_config/service_config_impl.cc +2 -2
  1332. data/src/core/service_config/service_config_impl.h +3 -3
  1333. data/src/core/service_config/service_config_parser.cc +1 -2
  1334. data/src/core/service_config/service_config_parser.h +3 -3
  1335. data/src/core/tsi/alts/crypt/aes_gcm.cc +1 -2
  1336. data/src/core/tsi/alts/crypt/gsec.cc +1 -2
  1337. data/src/core/tsi/alts/crypt/gsec.h +1 -2
  1338. data/src/core/tsi/alts/frame_protector/alts_counter.cc +1 -2
  1339. data/src/core/tsi/alts/frame_protector/alts_counter.h +1 -2
  1340. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +1 -2
  1341. data/src/core/tsi/alts/frame_protector/alts_crypter.h +1 -2
  1342. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -2
  1343. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +2 -2
  1344. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +1 -2
  1345. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +1 -2
  1346. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +1 -2
  1347. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -2
  1348. data/src/core/tsi/alts/frame_protector/frame_handler.cc +1 -2
  1349. data/src/core/tsi/alts/frame_protector/frame_handler.h +2 -2
  1350. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +44 -41
  1351. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -2
  1352. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +5 -4
  1353. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -2
  1354. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +23 -20
  1355. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -2
  1356. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +5 -4
  1357. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -2
  1358. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
  1359. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -2
  1360. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +5 -4
  1361. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +2 -2
  1362. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +1 -2
  1363. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +2 -2
  1364. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +1 -2
  1365. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +9 -5
  1366. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +1 -2
  1367. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +2 -2
  1368. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +5 -4
  1369. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +2 -2
  1370. data/src/core/tsi/fake_transport_security.cc +6 -4
  1371. data/src/core/tsi/local_transport_security.cc +1 -2
  1372. data/src/core/tsi/local_transport_security.h +1 -2
  1373. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +7 -6
  1374. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +1 -2
  1375. data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -2
  1376. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +11 -10
  1377. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +1 -2
  1378. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +3 -4
  1379. data/src/core/tsi/ssl_transport_security.cc +218 -89
  1380. data/src/core/tsi/ssl_transport_security.h +1 -2
  1381. data/src/core/tsi/ssl_transport_security_utils.cc +138 -10
  1382. data/src/core/tsi/ssl_transport_security_utils.h +28 -2
  1383. data/src/core/tsi/ssl_types.h +2 -2
  1384. data/src/core/tsi/transport_security.cc +1 -2
  1385. data/src/core/tsi/transport_security.h +2 -2
  1386. data/src/core/tsi/transport_security_grpc.cc +2 -2
  1387. data/src/core/tsi/transport_security_grpc.h +1 -2
  1388. data/src/core/tsi/transport_security_interface.h +2 -2
  1389. data/src/core/{ext/xds → xds/grpc}/certificate_provider_store.cc +2 -3
  1390. data/src/core/{ext/xds → xds/grpc}/certificate_provider_store.h +7 -7
  1391. data/src/core/{ext/xds → xds/grpc}/file_watcher_certificate_provider_factory.cc +2 -3
  1392. data/src/core/{ext/xds → xds/grpc}/file_watcher_certificate_provider_factory.h +6 -7
  1393. data/src/core/{ext/xds → xds/grpc}/upb_utils.h +5 -5
  1394. data/src/core/{ext/xds → xds/grpc}/xds_audit_logger_registry.cc +6 -5
  1395. data/src/core/{ext/xds → xds/grpc}/xds_audit_logger_registry.h +7 -7
  1396. data/src/core/{ext/xds → xds/grpc}/xds_bootstrap_grpc.cc +40 -9
  1397. data/src/core/{ext/xds → xds/grpc}/xds_bootstrap_grpc.h +33 -18
  1398. data/src/core/{ext/xds → xds/grpc}/xds_certificate_provider.cc +7 -7
  1399. data/src/core/{ext/xds → xds/grpc}/xds_certificate_provider.h +5 -6
  1400. data/src/core/{ext/xds → xds/grpc}/xds_client_grpc.cc +208 -66
  1401. data/src/core/{ext/xds → xds/grpc}/xds_client_grpc.h +30 -17
  1402. data/src/core/{ext/xds → xds/grpc}/xds_cluster.cc +27 -18
  1403. data/src/core/{ext/xds → xds/grpc}/xds_cluster.h +16 -14
  1404. data/src/core/{ext/xds → xds/grpc}/xds_cluster_specifier_plugin.cc +4 -4
  1405. data/src/core/{ext/xds → xds/grpc}/xds_cluster_specifier_plugin.h +8 -8
  1406. data/src/core/{ext/xds → xds/grpc}/xds_common_types.cc +5 -6
  1407. data/src/core/{ext/xds → xds/grpc}/xds_common_types.h +6 -6
  1408. data/src/core/{ext/xds → xds/grpc}/xds_endpoint.cc +10 -9
  1409. data/src/core/{ext/xds → xds/grpc}/xds_endpoint.h +11 -11
  1410. data/src/core/{ext/xds → xds/grpc}/xds_health_status.cc +3 -3
  1411. data/src/core/{ext/xds → xds/grpc}/xds_health_status.h +7 -7
  1412. data/src/core/{ext/xds → xds/grpc}/xds_http_fault_filter.cc +4 -5
  1413. data/src/core/{ext/xds → xds/grpc}/xds_http_fault_filter.h +9 -9
  1414. data/src/core/{ext/xds → xds/grpc}/xds_http_filters.cc +8 -9
  1415. data/src/core/{ext/xds → xds/grpc}/xds_http_filters.h +9 -9
  1416. data/src/core/{ext/xds → xds/grpc}/xds_http_rbac_filter.cc +6 -7
  1417. data/src/core/{ext/xds → xds/grpc}/xds_http_rbac_filter.h +9 -9
  1418. data/src/core/{ext/xds → xds/grpc}/xds_http_stateful_session_filter.cc +5 -6
  1419. data/src/core/{ext/xds → xds/grpc}/xds_http_stateful_session_filter.h +9 -9
  1420. data/src/core/{ext/xds → xds/grpc}/xds_lb_policy_registry.cc +8 -9
  1421. data/src/core/{ext/xds → xds/grpc}/xds_lb_policy_registry.h +7 -7
  1422. data/src/core/{ext/xds → xds/grpc}/xds_listener.cc +8 -8
  1423. data/src/core/{ext/xds → xds/grpc}/xds_listener.h +13 -13
  1424. data/src/core/{ext/xds → xds/grpc}/xds_route_config.cc +16 -16
  1425. data/src/core/{ext/xds → xds/grpc}/xds_route_config.h +12 -12
  1426. data/src/core/{ext/xds → xds/grpc}/xds_routing.cc +6 -6
  1427. data/src/core/{ext/xds → xds/grpc}/xds_routing.h +9 -9
  1428. data/src/core/{ext/xds → xds/grpc}/xds_transport_grpc.cc +31 -46
  1429. data/src/core/{ext/xds → xds/grpc}/xds_transport_grpc.h +12 -13
  1430. data/src/core/{ext/xds → xds/xds_client}/xds_api.cc +4 -5
  1431. data/src/core/{ext/xds → xds/xds_client}/xds_api.h +8 -8
  1432. data/src/core/{ext/xds → xds/xds_client}/xds_bootstrap.cc +3 -3
  1433. data/src/core/{ext/xds → xds/xds_client}/xds_bootstrap.h +7 -9
  1434. data/src/core/{ext/xds → xds/xds_client}/xds_channel_args.h +3 -3
  1435. data/src/core/{ext/xds → xds/xds_client}/xds_client.cc +304 -120
  1436. data/src/core/{ext/xds → xds/xds_client}/xds_client.h +50 -18
  1437. data/src/core/{ext/xds → xds/xds_client}/xds_client_stats.cc +5 -6
  1438. data/src/core/{ext/xds → xds/xds_client}/xds_client_stats.h +20 -13
  1439. data/src/core/xds/xds_client/xds_metrics.h +41 -0
  1440. data/src/core/{ext/xds → xds/xds_client}/xds_resource_type.h +6 -6
  1441. data/src/core/{ext/xds → xds/xds_client}/xds_resource_type_impl.h +7 -7
  1442. data/src/core/{ext/xds → xds/xds_client}/xds_transport.h +6 -6
  1443. data/src/ruby/ext/grpc/extconf.rb +0 -3
  1444. data/src/ruby/ext/grpc/rb_call_credentials.c +1 -0
  1445. data/src/ruby/ext/grpc/rb_call_credentials.h +1 -0
  1446. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  1447. data/src/ruby/ext/grpc/rb_channel_credentials.c +1 -0
  1448. data/src/ruby/ext/grpc/rb_grpc.c +1 -0
  1449. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +130 -132
  1450. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +196 -198
  1451. data/src/ruby/ext/grpc/rb_server.c +1 -0
  1452. data/src/ruby/ext/grpc/rb_server_credentials.c +1 -0
  1453. data/src/ruby/ext/grpc/rb_server_credentials.h +1 -0
  1454. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +1 -0
  1455. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +1 -0
  1456. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +1 -0
  1457. data/src/ruby/lib/grpc/generic/active_call.rb +8 -2
  1458. data/src/ruby/lib/grpc/version.rb +1 -1
  1459. data/src/ruby/spec/generic/rpc_server_spec.rb +25 -0
  1460. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +320 -0
  1461. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +64 -0
  1462. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +93 -0
  1463. data/third_party/abseil-cpp/absl/log/check.h +209 -0
  1464. data/third_party/abseil-cpp/absl/log/globals.cc +178 -0
  1465. data/third_party/abseil-cpp/absl/log/globals.h +218 -0
  1466. data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +47 -0
  1467. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +150 -0
  1468. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +118 -0
  1469. data/third_party/abseil-cpp/absl/log/internal/check_op.h +420 -0
  1470. data/third_party/abseil-cpp/absl/log/internal/conditions.cc +83 -0
  1471. data/third_party/abseil-cpp/absl/log/internal/conditions.h +239 -0
  1472. data/third_party/abseil-cpp/absl/log/internal/config.h +45 -0
  1473. data/third_party/abseil-cpp/absl/log/internal/fnmatch.cc +73 -0
  1474. data/third_party/abseil-cpp/absl/log/internal/fnmatch.h +35 -0
  1475. data/third_party/abseil-cpp/absl/log/internal/globals.cc +145 -0
  1476. data/third_party/abseil-cpp/absl/log/internal/globals.h +101 -0
  1477. data/third_party/abseil-cpp/absl/log/internal/log_format.cc +205 -0
  1478. data/third_party/abseil-cpp/absl/log/internal/log_format.h +78 -0
  1479. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +282 -0
  1480. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +633 -0
  1481. data/third_party/abseil-cpp/absl/log/internal/log_message.h +375 -0
  1482. data/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +296 -0
  1483. data/third_party/abseil-cpp/absl/log/internal/log_sink_set.h +54 -0
  1484. data/third_party/abseil-cpp/absl/log/internal/nullguard.cc +35 -0
  1485. data/third_party/abseil-cpp/absl/log/internal/nullguard.h +88 -0
  1486. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +136 -0
  1487. data/third_party/abseil-cpp/absl/log/internal/proto.cc +220 -0
  1488. data/third_party/abseil-cpp/absl/log/internal/proto.h +288 -0
  1489. data/third_party/abseil-cpp/absl/log/internal/strip.h +72 -0
  1490. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +340 -0
  1491. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +163 -0
  1492. data/third_party/abseil-cpp/absl/log/internal/voidify.h +44 -0
  1493. data/third_party/abseil-cpp/absl/log/log.h +361 -0
  1494. data/third_party/abseil-cpp/absl/log/log_entry.cc +41 -0
  1495. data/third_party/abseil-cpp/absl/log/log_entry.h +221 -0
  1496. data/third_party/abseil-cpp/absl/log/log_sink.cc +23 -0
  1497. data/third_party/abseil-cpp/absl/log/log_sink.h +64 -0
  1498. data/third_party/abseil-cpp/absl/log/log_sink_registry.h +61 -0
  1499. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +72 -0
  1500. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +1 -7
  1501. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +50 -39
  1502. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +3 -8
  1503. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +25 -10
  1504. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +0 -13
  1505. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +3 -2
  1506. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +1 -1
  1507. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +19 -15
  1508. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.c +63 -94
  1509. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +7 -3
  1510. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +20 -28
  1511. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +9 -4
  1512. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +2 -2
  1513. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +7 -7
  1514. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  1515. data/third_party/boringssl-with-bazel/src/crypto/des/des.c +45 -32
  1516. data/third_party/boringssl-with-bazel/src/crypto/des/internal.h +24 -0
  1517. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
  1518. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +26 -17
  1519. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +3 -2
  1520. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +81 -60
  1521. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +41 -120
  1522. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +13 -13
  1523. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +7 -0
  1524. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c +137 -0
  1525. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c +120 -0
  1526. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +30 -0
  1527. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +3 -4
  1528. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +30 -0
  1529. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +1 -4
  1530. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +30 -0
  1531. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +1 -4
  1532. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +6 -7
  1533. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +1 -1
  1534. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +3 -3
  1535. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
  1536. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +1 -1
  1537. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +8 -5
  1538. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +1 -1
  1539. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +2 -2
  1540. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +14 -7
  1541. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +2 -1
  1542. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +0 -3
  1543. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +11 -7
  1544. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +5 -1
  1545. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +2 -1
  1546. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +11 -11
  1547. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +22 -8
  1548. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +3 -6
  1549. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +73 -29
  1550. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +4 -4
  1551. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +3 -3
  1552. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +4 -4
  1553. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +7 -0
  1554. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -0
  1555. data/third_party/boringssl-with-bazel/src/crypto/internal.h +45 -21
  1556. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +1 -1
  1557. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +1 -1
  1558. data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -9
  1559. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -17
  1560. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +44 -41
  1561. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +13 -12
  1562. data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +7 -6
  1563. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +26 -33
  1564. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +1 -1
  1565. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +8 -1
  1566. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
  1567. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c +9 -4
  1568. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c +2 -2
  1569. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c +1 -1
  1570. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c +2 -0
  1571. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c +40 -61
  1572. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +24 -7
  1573. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +51 -78
  1574. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +5 -12
  1575. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +13 -2
  1576. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +2 -2
  1577. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +1 -6
  1578. data/third_party/boringssl-with-bazel/{err_data.c → src/gen/crypto/err_data.c} +487 -485
  1579. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +10 -10
  1580. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -2
  1581. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +80 -39
  1582. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +12 -4
  1583. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +1 -0
  1584. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +17 -1
  1585. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -3
  1586. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +13 -0
  1587. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +25 -14
  1588. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +1 -0
  1589. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +15 -3
  1590. data/third_party/boringssl-with-bazel/src/{crypto/spx/internal.h → include/openssl/experimental/spx.h} +24 -13
  1591. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +2 -2
  1592. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +63 -53
  1593. data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +6 -0
  1594. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +19 -10
  1595. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +19 -10
  1596. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +14 -0
  1597. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +291 -73
  1598. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +10 -3
  1599. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +13 -10
  1600. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -2
  1601. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2959 -2403
  1602. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +5 -5
  1603. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +3 -9
  1604. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +43 -43
  1605. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +1 -1
  1606. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +17 -7
  1607. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +67 -15
  1608. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +143 -113
  1609. data/third_party/boringssl-with-bazel/src/ssl/internal.h +227 -167
  1610. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +1 -1
  1611. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
  1612. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +66 -385
  1613. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +21 -19
  1614. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +423 -0
  1615. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +2 -2
  1616. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +1 -1
  1617. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +70 -54
  1618. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +59 -75
  1619. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +6 -14
  1620. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +48 -116
  1621. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +19 -26
  1622. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +36 -3
  1623. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +53 -18
  1624. data/third_party/upb/upb/base/descriptor_constants.h +29 -2
  1625. data/third_party/upb/upb/{wire/internal/swap.h → base/internal/endian.h} +12 -11
  1626. data/third_party/upb/upb/base/status.h +1 -1
  1627. data/third_party/upb/upb/base/status.hpp +5 -1
  1628. data/third_party/upb/upb/base/string_view.h +7 -5
  1629. data/third_party/upb/upb/base/upcast.h +29 -0
  1630. data/third_party/upb/upb/generated_code_support.h +2 -1
  1631. data/third_party/upb/upb/json/decode.c +103 -53
  1632. data/third_party/upb/upb/json/decode.h +3 -26
  1633. data/third_party/upb/upb/json/encode.c +3 -26
  1634. data/third_party/upb/upb/json/encode.h +3 -26
  1635. data/third_party/upb/upb/mem/arena.c +233 -106
  1636. data/third_party/upb/upb/mem/arena.h +14 -66
  1637. data/third_party/upb/upb/mem/arena.hpp +8 -4
  1638. data/third_party/upb/upb/mem/internal/arena.h +76 -58
  1639. data/third_party/upb/upb/message/accessors.c +19 -46
  1640. data/third_party/upb/upb/message/accessors.h +208 -123
  1641. data/third_party/upb/upb/message/array.c +55 -83
  1642. data/third_party/upb/upb/message/array.h +18 -30
  1643. data/third_party/upb/upb/message/compat.c +39 -0
  1644. data/third_party/upb/upb/message/compat.h +41 -0
  1645. data/third_party/upb/upb/message/copy.c +322 -0
  1646. data/third_party/upb/upb/message/copy.h +56 -0
  1647. data/third_party/upb/upb/message/internal/accessors.h +178 -178
  1648. data/third_party/upb/upb/message/internal/array.h +80 -81
  1649. data/third_party/upb/upb/message/internal/extension.c +63 -0
  1650. data/third_party/upb/upb/message/internal/extension.h +12 -12
  1651. data/third_party/upb/upb/message/internal/map.h +28 -41
  1652. data/third_party/upb/upb/message/internal/map_entry.h +14 -39
  1653. data/third_party/upb/upb/message/internal/map_sorter.h +18 -37
  1654. data/third_party/upb/upb/message/internal/message.c +59 -0
  1655. data/third_party/upb/upb/message/internal/message.h +26 -42
  1656. data/third_party/upb/upb/message/internal/tagged_ptr.h +56 -0
  1657. data/third_party/upb/upb/message/internal/types.h +7 -12
  1658. data/third_party/upb/upb/message/map.c +3 -26
  1659. data/third_party/upb/upb/message/map.h +5 -33
  1660. data/third_party/upb/upb/message/map_gencode_util.h +3 -26
  1661. data/third_party/upb/upb/message/map_sorter.c +22 -34
  1662. data/third_party/upb/upb/message/message.c +28 -104
  1663. data/third_party/upb/upb/message/message.h +4 -8
  1664. data/third_party/upb/upb/message/tagged_ptr.h +14 -31
  1665. data/third_party/upb/upb/message/value.h +3 -5
  1666. data/third_party/upb/upb/mini_descriptor/build_enum.c +20 -11
  1667. data/third_party/upb/upb/mini_descriptor/decode.c +127 -107
  1668. data/third_party/upb/upb/mini_descriptor/decode.h +3 -8
  1669. data/third_party/upb/upb/mini_descriptor/link.c +34 -22
  1670. data/third_party/upb/upb/mini_descriptor/link.h +1 -1
  1671. data/third_party/upb/upb/mini_table/enum.h +4 -6
  1672. data/third_party/upb/upb/mini_table/extension.h +37 -0
  1673. data/third_party/upb/upb/mini_table/extension_registry.c +9 -2
  1674. data/third_party/upb/upb/mini_table/field.h +46 -60
  1675. data/third_party/upb/upb/mini_table/file.h +44 -0
  1676. data/third_party/upb/upb/mini_table/internal/enum.h +19 -20
  1677. data/third_party/upb/upb/mini_table/internal/extension.h +34 -3
  1678. data/third_party/upb/upb/mini_table/internal/field.h +136 -27
  1679. data/third_party/upb/upb/mini_table/internal/file.h +47 -10
  1680. data/third_party/upb/upb/mini_table/internal/message.c +17 -9
  1681. data/third_party/upb/upb/mini_table/internal/message.h +94 -23
  1682. data/third_party/upb/upb/mini_table/internal/size_log2.h +77 -0
  1683. data/third_party/upb/upb/mini_table/internal/sub.h +39 -4
  1684. data/third_party/upb/upb/mini_table/message.c +18 -19
  1685. data/third_party/upb/upb/mini_table/message.h +29 -20
  1686. data/third_party/upb/upb/mini_table/sub.h +40 -1
  1687. data/third_party/upb/upb/port/def.inc +18 -0
  1688. data/third_party/upb/upb/port/undef.inc +3 -0
  1689. data/third_party/upb/upb/reflection/def.hpp +8 -4
  1690. data/third_party/upb/upb/reflection/def_pool.c +81 -2
  1691. data/third_party/upb/upb/reflection/def_pool.h +8 -0
  1692. data/third_party/upb/upb/reflection/enum_def.c +42 -19
  1693. data/third_party/upb/upb/reflection/enum_def.h +1 -0
  1694. data/third_party/upb/upb/reflection/enum_value_def.c +43 -14
  1695. data/third_party/upb/upb/reflection/enum_value_def.h +2 -0
  1696. data/third_party/upb/upb/reflection/extension_range.c +13 -5
  1697. data/third_party/upb/upb/reflection/extension_range.h +2 -0
  1698. data/third_party/upb/upb/reflection/field_def.c +177 -130
  1699. data/third_party/upb/upb/reflection/field_def.h +10 -1
  1700. data/third_party/upb/upb/reflection/file_def.c +98 -9
  1701. data/third_party/upb/upb/reflection/file_def.h +3 -0
  1702. data/third_party/upb/upb/reflection/internal/def_builder.c +85 -7
  1703. data/third_party/upb/upb/reflection/internal/def_builder.h +23 -0
  1704. data/third_party/upb/upb/reflection/internal/enum_def.h +5 -4
  1705. data/third_party/upb/upb/reflection/internal/enum_reserved_range.h +1 -1
  1706. data/third_party/upb/upb/reflection/internal/enum_value_def.h +2 -1
  1707. data/third_party/upb/upb/reflection/internal/extension_range.h +2 -2
  1708. data/third_party/upb/upb/reflection/internal/field_def.h +11 -10
  1709. data/third_party/upb/upb/reflection/internal/message_def.h +6 -3
  1710. data/third_party/upb/upb/reflection/internal/method_def.h +5 -3
  1711. data/third_party/upb/upb/reflection/internal/oneof_def.h +5 -3
  1712. data/third_party/upb/upb/reflection/internal/service_def.h +5 -3
  1713. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +20 -0
  1714. data/third_party/upb/upb/reflection/message.c +27 -12
  1715. data/third_party/upb/upb/reflection/message.h +5 -5
  1716. data/third_party/upb/upb/reflection/message_def.c +56 -27
  1717. data/third_party/upb/upb/reflection/message_def.h +2 -0
  1718. data/third_party/upb/upb/reflection/method_def.c +20 -9
  1719. data/third_party/upb/upb/reflection/method_def.h +2 -0
  1720. data/third_party/upb/upb/reflection/oneof_def.c +20 -11
  1721. data/third_party/upb/upb/reflection/oneof_def.h +3 -1
  1722. data/third_party/upb/upb/reflection/service_def.c +25 -13
  1723. data/third_party/upb/upb/reflection/service_def.h +2 -0
  1724. data/third_party/upb/upb/text/encode.c +126 -36
  1725. data/third_party/upb/upb/wire/decode.c +214 -196
  1726. data/third_party/upb/upb/wire/decode.h +10 -0
  1727. data/third_party/upb/upb/wire/encode.c +105 -91
  1728. data/third_party/upb/upb/wire/encode.h +4 -3
  1729. data/third_party/upb/upb/wire/{decode_fast.c → internal/decode_fast.c} +53 -48
  1730. data/third_party/upb/upb/wire/{decode_fast.h → internal/decode_fast.h} +6 -5
  1731. data/third_party/upb/upb/wire/internal/{decode.h → decoder.h} +15 -31
  1732. data/third_party/upb/upb/wire/internal/reader.h +61 -0
  1733. data/third_party/upb/upb/wire/reader.c +9 -6
  1734. data/third_party/upb/upb/wire/reader.h +18 -47
  1735. data/third_party/utf8_range/utf8_range.c +467 -0
  1736. data/third_party/utf8_range/utf8_range.h +9 -8
  1737. metadata +182 -128
  1738. data/src/core/client_channel/channel_connectivity.cc +0 -265
  1739. data/src/core/client_channel/client_channel_channelz.cc +0 -93
  1740. data/src/core/client_channel/client_channel_channelz.h +0 -85
  1741. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +0 -318
  1742. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +0 -150
  1743. data/src/core/ext/filters/deadline/deadline_filter.cc +0 -407
  1744. data/src/core/ext/filters/deadline/deadline_filter.h +0 -85
  1745. data/src/core/ext/filters/http/message_compress/legacy_compression_filter.cc +0 -325
  1746. data/src/core/ext/filters/http/message_compress/legacy_compression_filter.h +0 -139
  1747. data/src/core/lib/gpr/log_internal.h +0 -55
  1748. data/src/core/lib/gpr/wrap_memcpy.cc +0 -43
  1749. data/src/core/lib/security/transport/legacy_server_auth_filter.cc +0 -244
  1750. data/src/core/lib/slice/b64.cc +0 -239
  1751. data/src/core/lib/slice/b64.h +0 -52
  1752. data/src/core/lib/surface/call_trace.cc +0 -163
  1753. data/src/core/lib/surface/channel_ping.cc +0 -69
  1754. data/src/core/lib/transport/call_factory.cc +0 -41
  1755. data/src/core/lib/transport/call_factory.h +0 -56
  1756. data/src/core/load_balancing/subchannel_list.h +0 -455
  1757. data/third_party/upb/upb/message/types.h +0 -15
  1758. data/third_party/utf8_range/naive.c +0 -92
  1759. data/third_party/utf8_range/range2-neon.c +0 -157
  1760. data/third_party/utf8_range/range2-sse.c +0 -170
  1761. /data/third_party/boringssl-with-bazel/src/include/openssl/{kyber.h → experimental/kyber.h} +0 -0
@@ -14,15 +14,11 @@
14
14
  // limitations under the License.
15
15
  //
16
16
 
17
- #include <grpc/support/port_platform.h>
18
-
19
17
  #include <inttypes.h>
20
18
  #include <stdlib.h>
21
- #include <string.h>
22
19
 
23
20
  #include <algorithm>
24
21
  #include <atomic>
25
- #include <functional>
26
22
  #include <map>
27
23
  #include <memory>
28
24
  #include <set>
@@ -32,974 +28,158 @@
32
28
  #include <vector>
33
29
 
34
30
  #include "absl/base/thread_annotations.h"
31
+ #include "absl/log/check.h"
35
32
  #include "absl/meta/type_traits.h"
36
33
  #include "absl/random/random.h"
37
34
  #include "absl/status/status.h"
38
- #include "absl/status/statusor.h"
39
- #include "absl/strings/str_cat.h"
40
- #include "absl/strings/str_join.h"
41
- #include "absl/strings/string_view.h"
42
- #include "absl/types/optional.h"
43
- #include "absl/types/variant.h"
44
-
45
- #include <grpc/event_engine/event_engine.h>
46
- #include <grpc/impl/connectivity_state.h>
47
- #include <grpc/support/log.h>
48
-
49
- #include "src/core/load_balancing/backend_metric_data.h"
50
- #include "src/core/load_balancing/endpoint_list.h"
51
- #include "src/core/load_balancing/oob_backend_metric.h"
52
- #include "src/core/load_balancing/subchannel_list.h"
53
- #include "src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h"
54
- #include "src/core/lib/address_utils/sockaddr_utils.h"
55
- #include "src/core/lib/channel/channel_args.h"
56
- #include "src/core/lib/config/core_configuration.h"
57
- #include "src/core/lib/debug/stats.h"
58
- #include "src/core/lib/debug/stats_data.h"
59
- #include "src/core/lib/debug/trace.h"
60
- #include "src/core/lib/experiments/experiments.h"
61
- #include "src/core/lib/gprpp/debug_location.h"
62
- #include "src/core/lib/gprpp/orphanable.h"
63
- #include "src/core/lib/gprpp/ref_counted.h"
64
- #include "src/core/lib/gprpp/ref_counted_ptr.h"
65
- #include "src/core/lib/gprpp/sync.h"
66
- #include "src/core/lib/gprpp/time.h"
67
- #include "src/core/lib/gprpp/validation_errors.h"
68
- #include "src/core/lib/gprpp/work_serializer.h"
69
- #include "src/core/lib/iomgr/exec_ctx.h"
70
- #include "src/core/lib/iomgr/resolved_address.h"
71
- #include "src/core/lib/json/json.h"
72
- #include "src/core/lib/json/json_args.h"
73
- #include "src/core/lib/json/json_object_loader.h"
74
- #include "src/core/lib/transport/connectivity_state.h"
75
- #include "src/core/load_balancing/lb_policy.h"
76
- #include "src/core/load_balancing/lb_policy_factory.h"
77
- #include "src/core/load_balancing/subchannel_interface.h"
78
- #include "src/core/resolver/endpoint_addresses.h"
79
- #include "src/core/resolver/server_address.h"
80
-
81
- namespace grpc_core {
82
-
83
- TraceFlag grpc_lb_wrr_trace(false, "weighted_round_robin_lb");
84
-
85
- namespace {
86
-
87
- constexpr absl::string_view kWeightedRoundRobin = "weighted_round_robin";
88
-
89
- // Config for WRR policy.
90
- class WeightedRoundRobinConfig : public LoadBalancingPolicy::Config {
91
- public:
92
- WeightedRoundRobinConfig() = default;
93
-
94
- WeightedRoundRobinConfig(const WeightedRoundRobinConfig&) = delete;
95
- WeightedRoundRobinConfig& operator=(const WeightedRoundRobinConfig&) = delete;
96
-
97
- WeightedRoundRobinConfig(WeightedRoundRobinConfig&&) = delete;
98
- WeightedRoundRobinConfig& operator=(WeightedRoundRobinConfig&&) = delete;
99
-
100
- absl::string_view name() const override { return kWeightedRoundRobin; }
101
-
102
- bool enable_oob_load_report() const { return enable_oob_load_report_; }
103
- Duration oob_reporting_period() const { return oob_reporting_period_; }
104
- Duration blackout_period() const { return blackout_period_; }
105
- Duration weight_update_period() const { return weight_update_period_; }
106
- Duration weight_expiration_period() const {
107
- return weight_expiration_period_;
108
- }
109
- float error_utilization_penalty() const { return error_utilization_penalty_; }
110
-
111
- static const JsonLoaderInterface* JsonLoader(const JsonArgs&) {
112
- static const auto* loader =
113
- JsonObjectLoader<WeightedRoundRobinConfig>()
114
- .OptionalField("enableOobLoadReport",
115
- &WeightedRoundRobinConfig::enable_oob_load_report_)
116
- .OptionalField("oobReportingPeriod",
117
- &WeightedRoundRobinConfig::oob_reporting_period_)
118
- .OptionalField("blackoutPeriod",
119
- &WeightedRoundRobinConfig::blackout_period_)
120
- .OptionalField("weightUpdatePeriod",
121
- &WeightedRoundRobinConfig::weight_update_period_)
122
- .OptionalField("weightExpirationPeriod",
123
- &WeightedRoundRobinConfig::weight_expiration_period_)
124
- .OptionalField(
125
- "errorUtilizationPenalty",
126
- &WeightedRoundRobinConfig::error_utilization_penalty_)
127
- .Finish();
128
- return loader;
129
- }
130
-
131
- void JsonPostLoad(const Json&, const JsonArgs&, ValidationErrors* errors) {
132
- // Impose lower bound of 100ms on weightUpdatePeriod.
133
- weight_update_period_ =
134
- std::max(weight_update_period_, Duration::Milliseconds(100));
135
- if (error_utilization_penalty_ < 0) {
136
- ValidationErrors::ScopedField field(errors, ".errorUtilizationPenalty");
137
- errors->AddError("must be non-negative");
138
- }
139
- }
140
-
141
- private:
142
- bool enable_oob_load_report_ = false;
143
- Duration oob_reporting_period_ = Duration::Seconds(10);
144
- Duration blackout_period_ = Duration::Seconds(10);
145
- Duration weight_update_period_ = Duration::Seconds(1);
146
- Duration weight_expiration_period_ = Duration::Minutes(3);
147
- float error_utilization_penalty_ = 1.0;
148
- };
149
-
150
- // Legacy WRR LB policy (not delegating to pick_first)
151
- class OldWeightedRoundRobin : public LoadBalancingPolicy {
152
- public:
153
- explicit OldWeightedRoundRobin(Args args);
154
-
155
- absl::string_view name() const override { return kWeightedRoundRobin; }
156
-
157
- absl::Status UpdateLocked(UpdateArgs args) override;
158
- void ResetBackoffLocked() override;
159
-
160
- private:
161
- // Represents the weight for a given address.
162
- class AddressWeight : public RefCounted<AddressWeight> {
163
- public:
164
- AddressWeight(RefCountedPtr<OldWeightedRoundRobin> wrr, std::string key)
165
- : wrr_(std::move(wrr)), key_(std::move(key)) {}
166
- ~AddressWeight() override;
167
-
168
- void MaybeUpdateWeight(double qps, double eps, double utilization,
169
- float error_utilization_penalty);
170
-
171
- float GetWeight(Timestamp now, Duration weight_expiration_period,
172
- Duration blackout_period);
173
-
174
- void ResetNonEmptySince();
175
-
176
- private:
177
- RefCountedPtr<OldWeightedRoundRobin> wrr_;
178
- const std::string key_;
179
-
180
- Mutex mu_;
181
- float weight_ ABSL_GUARDED_BY(&mu_) = 0;
182
- Timestamp non_empty_since_ ABSL_GUARDED_BY(&mu_) = Timestamp::InfFuture();
183
- Timestamp last_update_time_ ABSL_GUARDED_BY(&mu_) = Timestamp::InfPast();
184
- };
185
-
186
- // Forward declaration.
187
- class WeightedRoundRobinSubchannelList;
188
-
189
- // Data for a particular subchannel in a subchannel list.
190
- // This subclass adds the following functionality:
191
- // - Tracks the previous connectivity state of the subchannel, so that
192
- // we know how many subchannels are in each state.
193
- class WeightedRoundRobinSubchannelData
194
- : public SubchannelData<WeightedRoundRobinSubchannelList,
195
- WeightedRoundRobinSubchannelData> {
196
- public:
197
- WeightedRoundRobinSubchannelData(
198
- SubchannelList<WeightedRoundRobinSubchannelList,
199
- WeightedRoundRobinSubchannelData>* subchannel_list,
200
- const ServerAddress& address, RefCountedPtr<SubchannelInterface> sc);
201
-
202
- absl::optional<grpc_connectivity_state> connectivity_state() const {
203
- return logical_connectivity_state_;
204
- }
205
-
206
- RefCountedPtr<AddressWeight> weight() const { return weight_; }
207
-
208
- private:
209
- class OobWatcher : public OobBackendMetricWatcher {
210
- public:
211
- OobWatcher(RefCountedPtr<AddressWeight> weight,
212
- float error_utilization_penalty)
213
- : weight_(std::move(weight)),
214
- error_utilization_penalty_(error_utilization_penalty) {}
215
-
216
- void OnBackendMetricReport(
217
- const BackendMetricData& backend_metric_data) override;
218
-
219
- private:
220
- RefCountedPtr<AddressWeight> weight_;
221
- const float error_utilization_penalty_;
222
- };
223
-
224
- // Performs connectivity state updates that need to be done only
225
- // after we have started watching.
226
- void ProcessConnectivityChangeLocked(
227
- absl::optional<grpc_connectivity_state> old_state,
228
- grpc_connectivity_state new_state) override;
229
-
230
- // Updates the logical connectivity state.
231
- void UpdateLogicalConnectivityStateLocked(
232
- grpc_connectivity_state connectivity_state);
233
-
234
- // The logical connectivity state of the subchannel.
235
- // Note that the logical connectivity state may differ from the
236
- // actual reported state in some cases (e.g., after we see
237
- // TRANSIENT_FAILURE, we ignore any subsequent state changes until
238
- // we see READY).
239
- absl::optional<grpc_connectivity_state> logical_connectivity_state_;
240
-
241
- RefCountedPtr<AddressWeight> weight_;
242
- };
243
-
244
- // A list of subchannels.
245
- class WeightedRoundRobinSubchannelList
246
- : public SubchannelList<WeightedRoundRobinSubchannelList,
247
- WeightedRoundRobinSubchannelData> {
248
- public:
249
- WeightedRoundRobinSubchannelList(OldWeightedRoundRobin* policy,
250
- EndpointAddressesIterator* addresses,
251
- const ChannelArgs& args)
252
- : SubchannelList(policy,
253
- (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)
254
- ? "WeightedRoundRobinSubchannelList"
255
- : nullptr),
256
- addresses, policy->channel_control_helper(), args) {
257
- // Need to maintain a ref to the LB policy as long as we maintain
258
- // any references to subchannels, since the subchannels'
259
- // pollset_sets will include the LB policy's pollset_set.
260
- policy->Ref(DEBUG_LOCATION, "subchannel_list").release();
261
- }
262
-
263
- ~WeightedRoundRobinSubchannelList() override {
264
- OldWeightedRoundRobin* p = static_cast<OldWeightedRoundRobin*>(policy());
265
- p->Unref(DEBUG_LOCATION, "subchannel_list");
266
- }
267
-
268
- // Updates the counters of subchannels in each state when a
269
- // subchannel transitions from old_state to new_state.
270
- void UpdateStateCountersLocked(
271
- absl::optional<grpc_connectivity_state> old_state,
272
- grpc_connectivity_state new_state);
273
-
274
- // Ensures that the right subchannel list is used and then updates
275
- // the aggregated connectivity state based on the subchannel list's
276
- // state counters.
277
- void MaybeUpdateAggregatedConnectivityStateLocked(
278
- absl::Status status_for_tf);
279
-
280
- private:
281
- std::shared_ptr<WorkSerializer> work_serializer() const override {
282
- return static_cast<OldWeightedRoundRobin*>(policy())->work_serializer();
283
- }
284
-
285
- std::string CountersString() const {
286
- return absl::StrCat("num_subchannels=", num_subchannels(),
287
- " num_ready=", num_ready_,
288
- " num_connecting=", num_connecting_,
289
- " num_transient_failure=", num_transient_failure_);
290
- }
291
-
292
- size_t num_ready_ = 0;
293
- size_t num_connecting_ = 0;
294
- size_t num_transient_failure_ = 0;
295
-
296
- absl::Status last_failure_;
297
- };
298
-
299
- // A picker that performs WRR picks with weights based on
300
- // endpoint-reported utilization and QPS.
301
- class Picker : public SubchannelPicker {
302
- public:
303
- Picker(RefCountedPtr<OldWeightedRoundRobin> wrr,
304
- WeightedRoundRobinSubchannelList* subchannel_list);
305
-
306
- ~Picker() override;
307
-
308
- PickResult Pick(PickArgs args) override;
309
-
310
- void Orphan() override;
311
-
312
- private:
313
- // A call tracker that collects per-call endpoint utilization reports.
314
- class SubchannelCallTracker : public SubchannelCallTrackerInterface {
315
- public:
316
- SubchannelCallTracker(RefCountedPtr<AddressWeight> weight,
317
- float error_utilization_penalty)
318
- : weight_(std::move(weight)),
319
- error_utilization_penalty_(error_utilization_penalty) {}
320
-
321
- void Start() override {}
322
-
323
- void Finish(FinishArgs args) override;
324
-
325
- private:
326
- RefCountedPtr<AddressWeight> weight_;
327
- const float error_utilization_penalty_;
328
- };
329
-
330
- // Info stored about each subchannel.
331
- struct SubchannelInfo {
332
- SubchannelInfo(RefCountedPtr<SubchannelInterface> subchannel,
333
- RefCountedPtr<AddressWeight> weight)
334
- : subchannel(std::move(subchannel)), weight(std::move(weight)) {}
335
-
336
- RefCountedPtr<SubchannelInterface> subchannel;
337
- RefCountedPtr<AddressWeight> weight;
338
- };
339
-
340
- // Returns the index into subchannels_ to be picked.
341
- size_t PickIndex();
342
-
343
- // Builds a new scheduler and swaps it into place, then starts a
344
- // timer for the next update.
345
- void BuildSchedulerAndStartTimerLocked()
346
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&timer_mu_);
347
-
348
- RefCountedPtr<OldWeightedRoundRobin> wrr_;
349
- RefCountedPtr<WeightedRoundRobinConfig> config_;
350
- std::vector<SubchannelInfo> subchannels_;
351
-
352
- Mutex scheduler_mu_;
353
- std::shared_ptr<StaticStrideScheduler> scheduler_
354
- ABSL_GUARDED_BY(&scheduler_mu_);
355
-
356
- Mutex timer_mu_ ABSL_ACQUIRED_BEFORE(&scheduler_mu_);
357
- absl::optional<grpc_event_engine::experimental::EventEngine::TaskHandle>
358
- timer_handle_ ABSL_GUARDED_BY(&timer_mu_);
359
-
360
- // Used when falling back to RR.
361
- std::atomic<size_t> last_picked_index_;
362
- };
363
-
364
- ~OldWeightedRoundRobin() override;
365
-
366
- void ShutdownLocked() override;
367
-
368
- RefCountedPtr<AddressWeight> GetOrCreateWeight(
369
- const grpc_resolved_address& address);
370
-
371
- RefCountedPtr<WeightedRoundRobinConfig> config_;
372
-
373
- // List of subchannels.
374
- RefCountedPtr<WeightedRoundRobinSubchannelList> subchannel_list_;
375
- // Latest pending subchannel list.
376
- // When we get an updated address list, we create a new subchannel list
377
- // for it here, and we wait to swap it into subchannel_list_ until the new
378
- // list becomes READY.
379
- RefCountedPtr<WeightedRoundRobinSubchannelList>
380
- latest_pending_subchannel_list_;
381
-
382
- Mutex address_weight_map_mu_;
383
- std::map<std::string, AddressWeight*, std::less<>> address_weight_map_
384
- ABSL_GUARDED_BY(&address_weight_map_mu_);
385
-
386
- bool shutdown_ = false;
387
-
388
- absl::BitGen bit_gen_;
389
-
390
- // Accessed by picker.
391
- std::atomic<uint32_t> scheduler_state_{absl::Uniform<uint32_t>(bit_gen_)};
392
- };
393
-
394
- //
395
- // OldWeightedRoundRobin::AddressWeight
396
- //
397
-
398
- OldWeightedRoundRobin::AddressWeight::~AddressWeight() {
399
- MutexLock lock(&wrr_->address_weight_map_mu_);
400
- auto it = wrr_->address_weight_map_.find(key_);
401
- if (it != wrr_->address_weight_map_.end() && it->second == this) {
402
- wrr_->address_weight_map_.erase(it);
403
- }
404
- }
405
-
406
- void OldWeightedRoundRobin::AddressWeight::MaybeUpdateWeight(
407
- double qps, double eps, double utilization,
408
- float error_utilization_penalty) {
409
- // Compute weight.
410
- float weight = 0;
411
- if (qps > 0 && utilization > 0) {
412
- double penalty = 0.0;
413
- if (eps > 0 && error_utilization_penalty > 0) {
414
- penalty = eps / qps * error_utilization_penalty;
415
- }
416
- weight = qps / (utilization + penalty);
417
- }
418
- if (weight == 0) {
419
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
420
- gpr_log(GPR_INFO,
421
- "[WRR %p] subchannel %s: qps=%f, eps=%f, utilization=%f: "
422
- "error_util_penalty=%f, weight=%f (not updating)",
423
- wrr_.get(), key_.c_str(), qps, eps, utilization,
424
- error_utilization_penalty, weight);
425
- }
426
- return;
427
- }
428
- Timestamp now = Timestamp::Now();
429
- // Grab the lock and update the data.
430
- MutexLock lock(&mu_);
431
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
432
- gpr_log(GPR_INFO,
433
- "[WRR %p] subchannel %s: qps=%f, eps=%f, utilization=%f "
434
- "error_util_penalty=%f : setting weight=%f weight_=%f now=%s "
435
- "last_update_time_=%s non_empty_since_=%s",
436
- wrr_.get(), key_.c_str(), qps, eps, utilization,
437
- error_utilization_penalty, weight, weight_, now.ToString().c_str(),
438
- last_update_time_.ToString().c_str(),
439
- non_empty_since_.ToString().c_str());
440
- }
441
- if (non_empty_since_ == Timestamp::InfFuture()) non_empty_since_ = now;
442
- weight_ = weight;
443
- last_update_time_ = now;
444
- }
445
-
446
- float OldWeightedRoundRobin::AddressWeight::GetWeight(
447
- Timestamp now, Duration weight_expiration_period,
448
- Duration blackout_period) {
449
- MutexLock lock(&mu_);
450
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
451
- gpr_log(GPR_INFO,
452
- "[WRR %p] subchannel %s: getting weight: now=%s "
453
- "weight_expiration_period=%s blackout_period=%s "
454
- "last_update_time_=%s non_empty_since_=%s weight_=%f",
455
- wrr_.get(), key_.c_str(), now.ToString().c_str(),
456
- weight_expiration_period.ToString().c_str(),
457
- blackout_period.ToString().c_str(),
458
- last_update_time_.ToString().c_str(),
459
- non_empty_since_.ToString().c_str(), weight_);
460
- }
461
- // If the most recent update was longer ago than the expiration
462
- // period, reset non_empty_since_ so that we apply the blackout period
463
- // again if we start getting data again in the future, and return 0.
464
- if (now - last_update_time_ >= weight_expiration_period) {
465
- non_empty_since_ = Timestamp::InfFuture();
466
- return 0;
467
- }
468
- // If we don't have at least blackout_period worth of data, return 0.
469
- if (blackout_period > Duration::Zero() &&
470
- now - non_empty_since_ < blackout_period) {
471
- return 0;
472
- }
473
- // Otherwise, return the weight.
474
- return weight_;
475
- }
476
-
477
- void OldWeightedRoundRobin::AddressWeight::ResetNonEmptySince() {
478
- MutexLock lock(&mu_);
479
- non_empty_since_ = Timestamp::InfFuture();
480
- }
481
-
482
- //
483
- // OldWeightedRoundRobin::Picker::SubchannelCallTracker
484
- //
485
-
486
- void OldWeightedRoundRobin::Picker::SubchannelCallTracker::Finish(
487
- FinishArgs args) {
488
- auto* backend_metric_data =
489
- args.backend_metric_accessor->GetBackendMetricData();
490
- double qps = 0;
491
- double eps = 0;
492
- double utilization = 0;
493
- if (backend_metric_data != nullptr) {
494
- qps = backend_metric_data->qps;
495
- eps = backend_metric_data->eps;
496
- utilization = backend_metric_data->application_utilization;
497
- if (utilization <= 0) {
498
- utilization = backend_metric_data->cpu_utilization;
499
- }
500
- }
501
- weight_->MaybeUpdateWeight(qps, eps, utilization, error_utilization_penalty_);
502
- }
503
-
504
- //
505
- // OldWeightedRoundRobin::Picker
506
- //
507
-
508
- OldWeightedRoundRobin::Picker::Picker(
509
- RefCountedPtr<OldWeightedRoundRobin> wrr,
510
- WeightedRoundRobinSubchannelList* subchannel_list)
511
- : wrr_(std::move(wrr)),
512
- config_(wrr_->config_),
513
- last_picked_index_(absl::Uniform<size_t>(wrr_->bit_gen_)) {
514
- for (size_t i = 0; i < subchannel_list->num_subchannels(); ++i) {
515
- WeightedRoundRobinSubchannelData* sd = subchannel_list->subchannel(i);
516
- if (sd->connectivity_state() == GRPC_CHANNEL_READY) {
517
- subchannels_.emplace_back(sd->subchannel()->Ref(), sd->weight());
518
- }
519
- }
520
- global_stats().IncrementWrrSubchannelListSize(
521
- subchannel_list->num_subchannels());
522
- global_stats().IncrementWrrSubchannelReadySize(subchannels_.size());
523
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
524
- gpr_log(GPR_INFO,
525
- "[WRR %p picker %p] created picker from subchannel_list=%p "
526
- "with %" PRIuPTR " subchannels",
527
- wrr_.get(), this, subchannel_list, subchannels_.size());
528
- }
529
- BuildSchedulerAndStartTimerLocked();
530
- }
531
-
532
- OldWeightedRoundRobin::Picker::~Picker() {
533
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
534
- gpr_log(GPR_INFO, "[WRR %p picker %p] destroying picker", wrr_.get(), this);
535
- }
536
- }
537
-
538
- void OldWeightedRoundRobin::Picker::Orphan() {
539
- MutexLock lock(&timer_mu_);
540
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
541
- gpr_log(GPR_INFO, "[WRR %p picker %p] cancelling timer", wrr_.get(), this);
542
- }
543
- wrr_->channel_control_helper()->GetEventEngine()->Cancel(*timer_handle_);
544
- timer_handle_.reset();
545
- }
546
-
547
- OldWeightedRoundRobin::PickResult OldWeightedRoundRobin::Picker::Pick(
548
- PickArgs /*args*/) {
549
- size_t index = PickIndex();
550
- GPR_ASSERT(index < subchannels_.size());
551
- auto& subchannel_info = subchannels_[index];
552
- // Collect per-call utilization data if needed.
553
- std::unique_ptr<SubchannelCallTrackerInterface> subchannel_call_tracker;
554
- if (!config_->enable_oob_load_report()) {
555
- subchannel_call_tracker = std::make_unique<SubchannelCallTracker>(
556
- subchannel_info.weight, config_->error_utilization_penalty());
557
- }
558
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
559
- gpr_log(GPR_INFO,
560
- "[WRR %p picker %p] returning index %" PRIuPTR ", subchannel=%p",
561
- wrr_.get(), this, index, subchannel_info.subchannel.get());
562
- }
563
- return PickResult::Complete(subchannel_info.subchannel,
564
- std::move(subchannel_call_tracker));
565
- }
566
-
567
- size_t OldWeightedRoundRobin::Picker::PickIndex() {
568
- // Grab a ref to the scheduler.
569
- std::shared_ptr<StaticStrideScheduler> scheduler;
570
- {
571
- MutexLock lock(&scheduler_mu_);
572
- scheduler = scheduler_;
573
- }
574
- // If we have a scheduler, use it to do a WRR pick.
575
- if (scheduler != nullptr) return scheduler->Pick();
576
- // We don't have a scheduler (i.e., either all of the weights are 0 or
577
- // there is only one subchannel), so fall back to RR.
578
- return last_picked_index_.fetch_add(1) % subchannels_.size();
579
- }
580
-
581
- void OldWeightedRoundRobin::Picker::BuildSchedulerAndStartTimerLocked() {
582
- // Build scheduler.
583
- const Timestamp now = Timestamp::Now();
584
- std::vector<float> weights;
585
- weights.reserve(subchannels_.size());
586
- for (const auto& subchannel : subchannels_) {
587
- weights.push_back(subchannel.weight->GetWeight(
588
- now, config_->weight_expiration_period(), config_->blackout_period()));
589
- }
590
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
591
- gpr_log(GPR_INFO, "[WRR %p picker %p] new weights: %s", wrr_.get(), this,
592
- absl::StrJoin(weights, " ").c_str());
593
- }
594
- auto scheduler_or = StaticStrideScheduler::Make(
595
- weights, [this]() { return wrr_->scheduler_state_.fetch_add(1); });
596
- std::shared_ptr<StaticStrideScheduler> scheduler;
597
- if (scheduler_or.has_value()) {
598
- scheduler =
599
- std::make_shared<StaticStrideScheduler>(std::move(*scheduler_or));
600
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
601
- gpr_log(GPR_INFO, "[WRR %p picker %p] new scheduler: %p", wrr_.get(),
602
- this, scheduler.get());
603
- }
604
- } else if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
605
- gpr_log(GPR_INFO, "[WRR %p picker %p] no scheduler, falling back to RR",
606
- wrr_.get(), this);
607
- }
608
- {
609
- MutexLock lock(&scheduler_mu_);
610
- scheduler_ = std::move(scheduler);
611
- }
612
- // Start timer.
613
- timer_handle_ = wrr_->channel_control_helper()->GetEventEngine()->RunAfter(
614
- config_->weight_update_period(),
615
- [self = WeakRefAsSubclass<Picker>(),
616
- work_serializer = wrr_->work_serializer()]() mutable {
617
- ApplicationCallbackExecCtx callback_exec_ctx;
618
- ExecCtx exec_ctx;
619
- {
620
- MutexLock lock(&self->timer_mu_);
621
- if (self->timer_handle_.has_value()) {
622
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
623
- gpr_log(GPR_INFO, "[WRR %p picker %p] timer fired",
624
- self->wrr_.get(), self.get());
625
- }
626
- self->BuildSchedulerAndStartTimerLocked();
627
- }
628
- }
629
- if (!IsWorkSerializerDispatchEnabled()) {
630
- // Release the picker ref inside the WorkSerializer.
631
- work_serializer->Run([self = std::move(self)]() {}, DEBUG_LOCATION);
632
- return;
633
- }
634
- self.reset();
635
- });
636
- }
35
+ #include "absl/status/statusor.h"
36
+ #include "absl/strings/str_cat.h"
37
+ #include "absl/strings/str_join.h"
38
+ #include "absl/strings/string_view.h"
39
+ #include "absl/types/optional.h"
40
+ #include "absl/types/variant.h"
637
41
 
638
- //
639
- // WeightedRoundRobin
640
- //
42
+ #include <grpc/event_engine/event_engine.h>
43
+ #include <grpc/impl/connectivity_state.h>
44
+ #include <grpc/support/log.h>
45
+ #include <grpc/support/port_platform.h>
641
46
 
642
- OldWeightedRoundRobin::OldWeightedRoundRobin(Args args)
643
- : LoadBalancingPolicy(std::move(args)) {
644
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
645
- gpr_log(GPR_INFO, "[WRR %p] Created", this);
646
- }
647
- }
47
+ #include "src/core/lib/channel/channel_args.h"
48
+ #include "src/core/lib/channel/metrics.h"
49
+ #include "src/core/lib/config/core_configuration.h"
50
+ #include "src/core/lib/debug/stats.h"
51
+ #include "src/core/lib/debug/stats_data.h"
52
+ #include "src/core/lib/debug/trace.h"
53
+ #include "src/core/lib/experiments/experiments.h"
54
+ #include "src/core/lib/gprpp/debug_location.h"
55
+ #include "src/core/lib/gprpp/orphanable.h"
56
+ #include "src/core/lib/gprpp/ref_counted.h"
57
+ #include "src/core/lib/gprpp/ref_counted_ptr.h"
58
+ #include "src/core/lib/gprpp/sync.h"
59
+ #include "src/core/lib/gprpp/time.h"
60
+ #include "src/core/lib/gprpp/validation_errors.h"
61
+ #include "src/core/lib/gprpp/work_serializer.h"
62
+ #include "src/core/lib/iomgr/exec_ctx.h"
63
+ #include "src/core/lib/iomgr/resolved_address.h"
64
+ #include "src/core/lib/json/json.h"
65
+ #include "src/core/lib/json/json_args.h"
66
+ #include "src/core/lib/json/json_object_loader.h"
67
+ #include "src/core/lib/transport/connectivity_state.h"
68
+ #include "src/core/load_balancing/backend_metric_data.h"
69
+ #include "src/core/load_balancing/endpoint_list.h"
70
+ #include "src/core/load_balancing/lb_policy.h"
71
+ #include "src/core/load_balancing/lb_policy_factory.h"
72
+ #include "src/core/load_balancing/oob_backend_metric.h"
73
+ #include "src/core/load_balancing/subchannel_interface.h"
74
+ #include "src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h"
75
+ #include "src/core/load_balancing/weighted_target/weighted_target.h"
76
+ #include "src/core/resolver/endpoint_addresses.h"
648
77
 
649
- OldWeightedRoundRobin::~OldWeightedRoundRobin() {
650
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
651
- gpr_log(GPR_INFO, "[WRR %p] Destroying Round Robin policy", this);
652
- }
653
- GPR_ASSERT(subchannel_list_ == nullptr);
654
- GPR_ASSERT(latest_pending_subchannel_list_ == nullptr);
655
- }
78
+ namespace grpc_core {
656
79
 
657
- void OldWeightedRoundRobin::ShutdownLocked() {
658
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
659
- gpr_log(GPR_INFO, "[WRR %p] Shutting down", this);
660
- }
661
- shutdown_ = true;
662
- subchannel_list_.reset();
663
- latest_pending_subchannel_list_.reset();
664
- }
80
+ TraceFlag grpc_lb_wrr_trace(false, "weighted_round_robin_lb");
665
81
 
666
- void OldWeightedRoundRobin::ResetBackoffLocked() {
667
- subchannel_list_->ResetBackoffLocked();
668
- if (latest_pending_subchannel_list_ != nullptr) {
669
- latest_pending_subchannel_list_->ResetBackoffLocked();
670
- }
671
- }
82
+ namespace {
672
83
 
673
- absl::Status OldWeightedRoundRobin::UpdateLocked(UpdateArgs args) {
674
- global_stats().IncrementWrrUpdates();
675
- config_ = args.config.TakeAsSubclass<WeightedRoundRobinConfig>();
676
- std::shared_ptr<EndpointAddressesIterator> addresses;
677
- if (args.addresses.ok()) {
678
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
679
- gpr_log(GPR_INFO, "[WRR %p] received update", this);
680
- }
681
- // Weed out duplicate addresses. Also sort the addresses so that if
682
- // the set of the addresses don't change, their indexes in the
683
- // subchannel list don't change, since this avoids unnecessary churn
684
- // in the picker. Note that this does not ensure that if a given
685
- // address remains present that it will have the same index; if,
686
- // for example, an address at the end of the list is replaced with one
687
- // that sorts much earlier in the list, then all of the addresses in
688
- // between those two positions will have changed indexes.
689
- struct AddressLessThan {
690
- bool operator()(const ServerAddress& address1,
691
- const ServerAddress& address2) const {
692
- const grpc_resolved_address& addr1 = address1.address();
693
- const grpc_resolved_address& addr2 = address2.address();
694
- if (addr1.len != addr2.len) return addr1.len < addr2.len;
695
- return memcmp(addr1.addr, addr2.addr, addr1.len) < 0;
696
- }
697
- };
698
- std::set<ServerAddress, AddressLessThan> ordered_addresses;
699
- (*args.addresses)->ForEach([&](const EndpointAddresses& endpoint) {
700
- ordered_addresses.insert(endpoint);
701
- });
702
- addresses = std::make_shared<EndpointAddressesListIterator>(
703
- ServerAddressList(ordered_addresses.begin(), ordered_addresses.end()));
704
- } else {
705
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
706
- gpr_log(GPR_INFO, "[WRR %p] received update with address error: %s", this,
707
- args.addresses.status().ToString().c_str());
708
- }
709
- // If we already have a subchannel list, then keep using the existing
710
- // list, but still report back that the update was not accepted.
711
- if (subchannel_list_ != nullptr) return args.addresses.status();
712
- }
713
- // Create new subchannel list, replacing the previous pending list, if any.
714
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace) &&
715
- latest_pending_subchannel_list_ != nullptr) {
716
- gpr_log(GPR_INFO, "[WRR %p] replacing previous pending subchannel list %p",
717
- this, latest_pending_subchannel_list_.get());
718
- }
719
- latest_pending_subchannel_list_ =
720
- MakeRefCounted<WeightedRoundRobinSubchannelList>(this, addresses.get(),
721
- args.args);
722
- latest_pending_subchannel_list_->StartWatchingLocked(args.args);
723
- // If the new list is empty, immediately promote it to
724
- // subchannel_list_ and report TRANSIENT_FAILURE.
725
- if (latest_pending_subchannel_list_->num_subchannels() == 0) {
726
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace) &&
727
- subchannel_list_ != nullptr) {
728
- gpr_log(GPR_INFO, "[WRR %p] replacing previous subchannel list %p", this,
729
- subchannel_list_.get());
730
- }
731
- subchannel_list_ = std::move(latest_pending_subchannel_list_);
732
- absl::Status status =
733
- args.addresses.ok() ? absl::UnavailableError(absl::StrCat(
734
- "empty address list: ", args.resolution_note))
735
- : args.addresses.status();
736
- channel_control_helper()->UpdateState(
737
- GRPC_CHANNEL_TRANSIENT_FAILURE, status,
738
- MakeRefCounted<TransientFailurePicker>(status));
739
- return status;
740
- }
741
- // Otherwise, if this is the initial update, immediately promote it to
742
- // subchannel_list_.
743
- if (subchannel_list_.get() == nullptr) {
744
- subchannel_list_ = std::move(latest_pending_subchannel_list_);
745
- }
746
- return absl::OkStatus();
747
- }
84
+ constexpr absl::string_view kWeightedRoundRobin = "weighted_round_robin";
748
85
 
749
- RefCountedPtr<OldWeightedRoundRobin::AddressWeight>
750
- OldWeightedRoundRobin::GetOrCreateWeight(const grpc_resolved_address& address) {
751
- auto key = grpc_sockaddr_to_uri(&address);
752
- if (!key.ok()) return nullptr;
753
- MutexLock lock(&address_weight_map_mu_);
754
- auto it = address_weight_map_.find(*key);
755
- if (it != address_weight_map_.end()) {
756
- auto weight = it->second->RefIfNonZero();
757
- if (weight != nullptr) return weight;
758
- }
759
- auto weight = MakeRefCounted<AddressWeight>(
760
- RefAsSubclass<OldWeightedRoundRobin>(DEBUG_LOCATION, "AddressWeight"),
761
- *key);
762
- address_weight_map_.emplace(*key, weight.get());
763
- return weight;
764
- }
86
+ constexpr absl::string_view kMetricLabelLocality = "grpc.lb.locality";
87
+
88
+ const auto kMetricRrFallback = GlobalInstrumentsRegistry::RegisterUInt64Counter(
89
+ "grpc.lb.wrr.rr_fallback",
90
+ "EXPERIMENTAL. Number of scheduler updates in which there were not "
91
+ "enough endpoints with valid weight, which caused the WRR policy to "
92
+ "fall back to RR behavior.",
93
+ "{update}", {kMetricLabelTarget}, {kMetricLabelLocality}, false);
94
+
95
+ const auto kMetricEndpointWeightNotYetUsable =
96
+ GlobalInstrumentsRegistry::RegisterUInt64Counter(
97
+ "grpc.lb.wrr.endpoint_weight_not_yet_usable",
98
+ "EXPERIMENTAL. Number of endpoints from each scheduler update that "
99
+ "don't yet have usable weight information (i.e., either the load "
100
+ "report has not yet been received, or it is within the blackout "
101
+ "period).",
102
+ "{endpoint}", {kMetricLabelTarget}, {kMetricLabelLocality}, false);
103
+
104
+ const auto kMetricEndpointWeightStale =
105
+ GlobalInstrumentsRegistry::RegisterUInt64Counter(
106
+ "grpc.lb.wrr.endpoint_weight_stale",
107
+ "EXPERIMENTAL. Number of endpoints from each scheduler update whose "
108
+ "latest weight is older than the expiration period.",
109
+ "{endpoint}", {kMetricLabelTarget}, {kMetricLabelLocality}, false);
110
+
111
+ const auto kMetricEndpointWeights =
112
+ GlobalInstrumentsRegistry::RegisterDoubleHistogram(
113
+ "grpc.lb.wrr.endpoint_weights",
114
+ "EXPERIMENTAL. The histogram buckets will be endpoint weight ranges. "
115
+ "Each bucket will be a counter that is incremented once for every "
116
+ "endpoint whose weight is within that range. Note that endpoints "
117
+ "without usable weights will have weight 0.",
118
+ "{weight}", {kMetricLabelTarget}, {kMetricLabelLocality}, false);
765
119
 
766
- //
767
- // OldWeightedRoundRobin::WeightedRoundRobinSubchannelList
768
- //
120
+ // Config for WRR policy.
121
+ class WeightedRoundRobinConfig final : public LoadBalancingPolicy::Config {
122
+ public:
123
+ WeightedRoundRobinConfig() = default;
769
124
 
770
- void OldWeightedRoundRobin::WeightedRoundRobinSubchannelList::
771
- UpdateStateCountersLocked(absl::optional<grpc_connectivity_state> old_state,
772
- grpc_connectivity_state new_state) {
773
- if (old_state.has_value()) {
774
- GPR_ASSERT(*old_state != GRPC_CHANNEL_SHUTDOWN);
775
- if (*old_state == GRPC_CHANNEL_READY) {
776
- GPR_ASSERT(num_ready_ > 0);
777
- --num_ready_;
778
- } else if (*old_state == GRPC_CHANNEL_CONNECTING) {
779
- GPR_ASSERT(num_connecting_ > 0);
780
- --num_connecting_;
781
- } else if (*old_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
782
- GPR_ASSERT(num_transient_failure_ > 0);
783
- --num_transient_failure_;
784
- }
785
- }
786
- GPR_ASSERT(new_state != GRPC_CHANNEL_SHUTDOWN);
787
- if (new_state == GRPC_CHANNEL_READY) {
788
- ++num_ready_;
789
- } else if (new_state == GRPC_CHANNEL_CONNECTING) {
790
- ++num_connecting_;
791
- } else if (new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
792
- ++num_transient_failure_;
793
- }
794
- }
125
+ WeightedRoundRobinConfig(const WeightedRoundRobinConfig&) = delete;
126
+ WeightedRoundRobinConfig& operator=(const WeightedRoundRobinConfig&) = delete;
795
127
 
796
- void OldWeightedRoundRobin::WeightedRoundRobinSubchannelList::
797
- MaybeUpdateAggregatedConnectivityStateLocked(absl::Status status_for_tf) {
798
- OldWeightedRoundRobin* p = static_cast<OldWeightedRoundRobin*>(policy());
799
- // If this is latest_pending_subchannel_list_, then swap it into
800
- // subchannel_list_ in the following cases:
801
- // - subchannel_list_ has no READY subchannels.
802
- // - This list has at least one READY subchannel and we have seen the
803
- // initial connectivity state notification for all subchannels.
804
- // - All of the subchannels in this list are in TRANSIENT_FAILURE.
805
- // (This may cause the channel to go from READY to TRANSIENT_FAILURE,
806
- // but we're doing what the control plane told us to do.)
807
- if (p->latest_pending_subchannel_list_.get() == this &&
808
- (p->subchannel_list_->num_ready_ == 0 ||
809
- (num_ready_ > 0 && AllSubchannelsSeenInitialState()) ||
810
- num_transient_failure_ == num_subchannels())) {
811
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
812
- const std::string old_counters_string =
813
- p->subchannel_list_ != nullptr ? p->subchannel_list_->CountersString()
814
- : "";
815
- gpr_log(
816
- GPR_INFO,
817
- "[WRR %p] swapping out subchannel list %p (%s) in favor of %p (%s)",
818
- p, p->subchannel_list_.get(), old_counters_string.c_str(), this,
819
- CountersString().c_str());
820
- }
821
- p->subchannel_list_ = std::move(p->latest_pending_subchannel_list_);
822
- }
823
- // Only set connectivity state if this is the current subchannel list.
824
- if (p->subchannel_list_.get() != this) return;
825
- // First matching rule wins:
826
- // 1) ANY subchannel is READY => policy is READY.
827
- // 2) ANY subchannel is CONNECTING => policy is CONNECTING.
828
- // 3) ALL subchannels are TRANSIENT_FAILURE => policy is TRANSIENT_FAILURE.
829
- if (num_ready_ > 0) {
830
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
831
- gpr_log(GPR_INFO, "[WRR %p] reporting READY with subchannel list %p", p,
832
- this);
833
- }
834
- p->channel_control_helper()->UpdateState(
835
- GRPC_CHANNEL_READY, absl::Status(),
836
- MakeRefCounted<Picker>(p->RefAsSubclass<OldWeightedRoundRobin>(),
837
- this));
838
- } else if (num_connecting_ > 0) {
839
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
840
- gpr_log(GPR_INFO, "[WRR %p] reporting CONNECTING with subchannel list %p",
841
- p, this);
842
- }
843
- p->channel_control_helper()->UpdateState(
844
- GRPC_CHANNEL_CONNECTING, absl::Status(),
845
- MakeRefCounted<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")));
846
- } else if (num_transient_failure_ == num_subchannels()) {
847
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
848
- gpr_log(
849
- GPR_INFO,
850
- "[WRR %p] reporting TRANSIENT_FAILURE with subchannel list %p: %s", p,
851
- this, status_for_tf.ToString().c_str());
852
- }
853
- if (!status_for_tf.ok()) {
854
- last_failure_ = absl::UnavailableError(
855
- absl::StrCat("connections to all backends failing; last error: ",
856
- status_for_tf.ToString()));
857
- }
858
- p->channel_control_helper()->UpdateState(
859
- GRPC_CHANNEL_TRANSIENT_FAILURE, last_failure_,
860
- MakeRefCounted<TransientFailurePicker>(last_failure_));
861
- }
862
- }
128
+ WeightedRoundRobinConfig(WeightedRoundRobinConfig&&) = delete;
129
+ WeightedRoundRobinConfig& operator=(WeightedRoundRobinConfig&&) = delete;
863
130
 
864
- //
865
- // OldWeightedRoundRobin::WeightedRoundRobinSubchannelData::OobWatcher
866
- //
131
+ absl::string_view name() const override { return kWeightedRoundRobin; }
867
132
 
868
- void OldWeightedRoundRobin::WeightedRoundRobinSubchannelData::OobWatcher::
869
- OnBackendMetricReport(const BackendMetricData& backend_metric_data) {
870
- double utilization = backend_metric_data.application_utilization;
871
- if (utilization <= 0) {
872
- utilization = backend_metric_data.cpu_utilization;
133
+ bool enable_oob_load_report() const { return enable_oob_load_report_; }
134
+ Duration oob_reporting_period() const { return oob_reporting_period_; }
135
+ Duration blackout_period() const { return blackout_period_; }
136
+ Duration weight_update_period() const { return weight_update_period_; }
137
+ Duration weight_expiration_period() const {
138
+ return weight_expiration_period_;
873
139
  }
874
- weight_->MaybeUpdateWeight(backend_metric_data.qps, backend_metric_data.eps,
875
- utilization, error_utilization_penalty_);
876
- }
877
-
878
- //
879
- // OldWeightedRoundRobin::WeightedRoundRobinSubchannelData
880
- //
140
+ float error_utilization_penalty() const { return error_utilization_penalty_; }
881
141
 
882
- OldWeightedRoundRobin::WeightedRoundRobinSubchannelData::
883
- WeightedRoundRobinSubchannelData(
884
- SubchannelList<WeightedRoundRobinSubchannelList,
885
- WeightedRoundRobinSubchannelData>* subchannel_list,
886
- const ServerAddress& address, RefCountedPtr<SubchannelInterface> sc)
887
- : SubchannelData(subchannel_list, address, std::move(sc)),
888
- weight_(static_cast<OldWeightedRoundRobin*>(subchannel_list->policy())
889
- ->GetOrCreateWeight(address.address())) {
890
- // Start OOB watch if configured.
891
- OldWeightedRoundRobin* p =
892
- static_cast<OldWeightedRoundRobin*>(subchannel_list->policy());
893
- if (p->config_->enable_oob_load_report()) {
894
- subchannel()->AddDataWatcher(MakeOobBackendMetricWatcher(
895
- p->config_->oob_reporting_period(),
896
- std::make_unique<OobWatcher>(weight_,
897
- p->config_->error_utilization_penalty())));
142
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&) {
143
+ static const auto* loader =
144
+ JsonObjectLoader<WeightedRoundRobinConfig>()
145
+ .OptionalField("enableOobLoadReport",
146
+ &WeightedRoundRobinConfig::enable_oob_load_report_)
147
+ .OptionalField("oobReportingPeriod",
148
+ &WeightedRoundRobinConfig::oob_reporting_period_)
149
+ .OptionalField("blackoutPeriod",
150
+ &WeightedRoundRobinConfig::blackout_period_)
151
+ .OptionalField("weightUpdatePeriod",
152
+ &WeightedRoundRobinConfig::weight_update_period_)
153
+ .OptionalField("weightExpirationPeriod",
154
+ &WeightedRoundRobinConfig::weight_expiration_period_)
155
+ .OptionalField(
156
+ "errorUtilizationPenalty",
157
+ &WeightedRoundRobinConfig::error_utilization_penalty_)
158
+ .Finish();
159
+ return loader;
898
160
  }
899
- }
900
161
 
901
- void OldWeightedRoundRobin::WeightedRoundRobinSubchannelData::
902
- ProcessConnectivityChangeLocked(
903
- absl::optional<grpc_connectivity_state> old_state,
904
- grpc_connectivity_state new_state) {
905
- OldWeightedRoundRobin* p =
906
- static_cast<OldWeightedRoundRobin*>(subchannel_list()->policy());
907
- GPR_ASSERT(subchannel() != nullptr);
908
- // If this is not the initial state notification and the new state is
909
- // TRANSIENT_FAILURE or IDLE, re-resolve.
910
- // Note that we don't want to do this on the initial state notification,
911
- // because that would result in an endless loop of re-resolution.
912
- if (old_state.has_value() && (new_state == GRPC_CHANNEL_TRANSIENT_FAILURE ||
913
- new_state == GRPC_CHANNEL_IDLE)) {
914
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
915
- gpr_log(GPR_INFO,
916
- "[WRR %p] Subchannel %p reported %s; requesting re-resolution", p,
917
- subchannel(), ConnectivityStateName(new_state));
918
- }
919
- p->channel_control_helper()->RequestReresolution();
920
- }
921
- if (new_state == GRPC_CHANNEL_IDLE) {
922
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
923
- gpr_log(GPR_INFO,
924
- "[WRR %p] Subchannel %p reported IDLE; requesting connection", p,
925
- subchannel());
926
- }
927
- subchannel()->RequestConnection();
928
- } else if (new_state == GRPC_CHANNEL_READY) {
929
- // If we transition back to READY state, restart the blackout period.
930
- // Skip this if this is the initial notification for this
931
- // subchannel (which happens whenever we get updated addresses and
932
- // create a new endpoint list). Also skip it if the previous state
933
- // was READY (which should never happen in practice, but we've seen
934
- // at least one bug that caused this in the outlier_detection
935
- // policy, so let's be defensive here).
936
- //
937
- // Note that we cannot guarantee that we will never receive
938
- // lingering callbacks for backend metric reports from the previous
939
- // connection after the new connection has been established, but they
940
- // should be masked by new backend metric reports from the new
941
- // connection by the time the blackout period ends.
942
- if (old_state.has_value() && old_state != GRPC_CHANNEL_READY) {
943
- weight_->ResetNonEmptySince();
162
+ void JsonPostLoad(const Json&, const JsonArgs&, ValidationErrors* errors) {
163
+ // Impose lower bound of 100ms on weightUpdatePeriod.
164
+ weight_update_period_ =
165
+ std::max(weight_update_period_, Duration::Milliseconds(100));
166
+ if (error_utilization_penalty_ < 0) {
167
+ ValidationErrors::ScopedField field(errors, ".errorUtilizationPenalty");
168
+ errors->AddError("must be non-negative");
944
169
  }
945
170
  }
946
- // Update logical connectivity state.
947
- UpdateLogicalConnectivityStateLocked(new_state);
948
- // Update the policy state.
949
- subchannel_list()->MaybeUpdateAggregatedConnectivityStateLocked(
950
- connectivity_status());
951
- }
952
171
 
953
- void OldWeightedRoundRobin::WeightedRoundRobinSubchannelData::
954
- UpdateLogicalConnectivityStateLocked(
955
- grpc_connectivity_state connectivity_state) {
956
- OldWeightedRoundRobin* p =
957
- static_cast<OldWeightedRoundRobin*>(subchannel_list()->policy());
958
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
959
- gpr_log(
960
- GPR_INFO,
961
- "[WRR %p] connectivity changed for subchannel %p, subchannel_list %p "
962
- "(index %" PRIuPTR " of %" PRIuPTR "): prev_state=%s new_state=%s",
963
- p, subchannel(), subchannel_list(), Index(),
964
- subchannel_list()->num_subchannels(),
965
- (logical_connectivity_state_.has_value()
966
- ? ConnectivityStateName(*logical_connectivity_state_)
967
- : "N/A"),
968
- ConnectivityStateName(connectivity_state));
969
- }
970
- // Decide what state to report for aggregation purposes.
971
- // If the last logical state was TRANSIENT_FAILURE, then ignore the
972
- // state change unless the new state is READY.
973
- if (logical_connectivity_state_.has_value() &&
974
- *logical_connectivity_state_ == GRPC_CHANNEL_TRANSIENT_FAILURE &&
975
- connectivity_state != GRPC_CHANNEL_READY) {
976
- return;
977
- }
978
- // If the new state is IDLE, treat it as CONNECTING, since it will
979
- // immediately transition into CONNECTING anyway.
980
- if (connectivity_state == GRPC_CHANNEL_IDLE) {
981
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
982
- gpr_log(GPR_INFO,
983
- "[WRR %p] subchannel %p, subchannel_list %p (index %" PRIuPTR
984
- " of %" PRIuPTR "): treating IDLE as CONNECTING",
985
- p, subchannel(), subchannel_list(), Index(),
986
- subchannel_list()->num_subchannels());
987
- }
988
- connectivity_state = GRPC_CHANNEL_CONNECTING;
989
- }
990
- // If no change, return false.
991
- if (logical_connectivity_state_.has_value() &&
992
- *logical_connectivity_state_ == connectivity_state) {
993
- return;
994
- }
995
- // Otherwise, update counters and logical state.
996
- subchannel_list()->UpdateStateCountersLocked(logical_connectivity_state_,
997
- connectivity_state);
998
- logical_connectivity_state_ = connectivity_state;
999
- }
172
+ private:
173
+ bool enable_oob_load_report_ = false;
174
+ Duration oob_reporting_period_ = Duration::Seconds(10);
175
+ Duration blackout_period_ = Duration::Seconds(10);
176
+ Duration weight_update_period_ = Duration::Seconds(1);
177
+ Duration weight_expiration_period_ = Duration::Minutes(3);
178
+ float error_utilization_penalty_ = 1.0;
179
+ };
1000
180
 
1001
- // New WRR LB policy (with delegation to pick_first)
1002
- class WeightedRoundRobin : public LoadBalancingPolicy {
181
+ // WRR LB policy
182
+ class WeightedRoundRobin final : public LoadBalancingPolicy {
1003
183
  public:
1004
184
  explicit WeightedRoundRobin(Args args);
1005
185
 
@@ -1010,7 +190,7 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
1010
190
 
1011
191
  private:
1012
192
  // Represents the weight for a given address.
1013
- class EndpointWeight : public RefCounted<EndpointWeight> {
193
+ class EndpointWeight final : public RefCounted<EndpointWeight> {
1014
194
  public:
1015
195
  EndpointWeight(RefCountedPtr<WeightedRoundRobin> wrr,
1016
196
  EndpointAddressSet key)
@@ -1021,7 +201,8 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
1021
201
  float error_utilization_penalty);
1022
202
 
1023
203
  float GetWeight(Timestamp now, Duration weight_expiration_period,
1024
- Duration blackout_period);
204
+ Duration blackout_period, uint64_t* num_not_yet_usable,
205
+ uint64_t* num_stale);
1025
206
 
1026
207
  void ResetNonEmptySince();
1027
208
 
@@ -1032,26 +213,31 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
1032
213
  Mutex mu_;
1033
214
  float weight_ ABSL_GUARDED_BY(&mu_) = 0;
1034
215
  Timestamp non_empty_since_ ABSL_GUARDED_BY(&mu_) = Timestamp::InfFuture();
1035
- Timestamp last_update_time_ ABSL_GUARDED_BY(&mu_) = Timestamp::InfPast();
216
+ Timestamp last_update_time_ ABSL_GUARDED_BY(&mu_) = Timestamp::InfFuture();
1036
217
  };
1037
218
 
1038
- class WrrEndpointList : public EndpointList {
219
+ class WrrEndpointList final : public EndpointList {
1039
220
  public:
1040
- class WrrEndpoint : public Endpoint {
221
+ class WrrEndpoint final : public Endpoint {
1041
222
  public:
1042
223
  WrrEndpoint(RefCountedPtr<EndpointList> endpoint_list,
1043
224
  const EndpointAddresses& addresses, const ChannelArgs& args,
1044
- std::shared_ptr<WorkSerializer> work_serializer)
225
+ std::shared_ptr<WorkSerializer> work_serializer,
226
+ std::vector<std::string>* errors)
1045
227
  : Endpoint(std::move(endpoint_list)),
1046
228
  weight_(policy<WeightedRoundRobin>()->GetOrCreateWeight(
1047
229
  addresses.addresses())) {
1048
- Init(addresses, args, std::move(work_serializer));
230
+ absl::Status status = Init(addresses, args, std::move(work_serializer));
231
+ if (!status.ok()) {
232
+ errors->emplace_back(absl::StrCat("endpoint ", addresses.ToString(),
233
+ ": ", status.ToString()));
234
+ }
1049
235
  }
1050
236
 
1051
237
  RefCountedPtr<EndpointWeight> weight() const { return weight_; }
1052
238
 
1053
239
  private:
1054
- class OobWatcher : public OobBackendMetricWatcher {
240
+ class OobWatcher final : public OobBackendMetricWatcher {
1055
241
  public:
1056
242
  OobWatcher(RefCountedPtr<EndpointWeight> weight,
1057
243
  float error_utilization_penalty)
@@ -1081,7 +267,7 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
1081
267
 
1082
268
  WrrEndpointList(RefCountedPtr<WeightedRoundRobin> wrr,
1083
269
  EndpointAddressesIterator* endpoints,
1084
- const ChannelArgs& args)
270
+ const ChannelArgs& args, std::vector<std::string>* errors)
1085
271
  : EndpointList(std::move(wrr),
1086
272
  GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)
1087
273
  ? "WrrEndpointList"
@@ -1091,7 +277,7 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
1091
277
  const EndpointAddresses& addresses, const ChannelArgs& args) {
1092
278
  return MakeOrphanable<WrrEndpoint>(
1093
279
  std::move(endpoint_list), addresses, args,
1094
- policy<WeightedRoundRobin>()->work_serializer());
280
+ policy<WeightedRoundRobin>()->work_serializer(), errors);
1095
281
  });
1096
282
  }
1097
283
 
@@ -1128,7 +314,7 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
1128
314
 
1129
315
  // A picker that performs WRR picks with weights based on
1130
316
  // endpoint-reported utilization and QPS.
1131
- class Picker : public SubchannelPicker {
317
+ class Picker final : public SubchannelPicker {
1132
318
  public:
1133
319
  Picker(RefCountedPtr<WeightedRoundRobin> wrr,
1134
320
  WrrEndpointList* endpoint_list);
@@ -1137,11 +323,9 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
1137
323
 
1138
324
  PickResult Pick(PickArgs args) override;
1139
325
 
1140
- void Orphan() override;
1141
-
1142
326
  private:
1143
327
  // A call tracker that collects per-call endpoint utilization reports.
1144
- class SubchannelCallTracker : public SubchannelCallTrackerInterface {
328
+ class SubchannelCallTracker final : public SubchannelCallTrackerInterface {
1145
329
  public:
1146
330
  SubchannelCallTracker(
1147
331
  RefCountedPtr<EndpointWeight> weight, float error_utilization_penalty,
@@ -1170,6 +354,8 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
1170
354
  RefCountedPtr<EndpointWeight> weight;
1171
355
  };
1172
356
 
357
+ void Orphaned() override;
358
+
1173
359
  // Returns the index into endpoints_ to be picked.
1174
360
  size_t PickIndex();
1175
361
 
@@ -1215,6 +401,8 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
1215
401
  std::map<EndpointAddressSet, EndpointWeight*> endpoint_weight_map_
1216
402
  ABSL_GUARDED_BY(&endpoint_weight_map_mu_);
1217
403
 
404
+ const absl::string_view locality_name_;
405
+
1218
406
  bool shutdown_ = false;
1219
407
 
1220
408
  absl::BitGen bit_gen_;
@@ -1276,8 +464,8 @@ void WeightedRoundRobin::EndpointWeight::MaybeUpdateWeight(
1276
464
  }
1277
465
 
1278
466
  float WeightedRoundRobin::EndpointWeight::GetWeight(
1279
- Timestamp now, Duration weight_expiration_period,
1280
- Duration blackout_period) {
467
+ Timestamp now, Duration weight_expiration_period, Duration blackout_period,
468
+ uint64_t* num_not_yet_usable, uint64_t* num_stale) {
1281
469
  MutexLock lock(&mu_);
1282
470
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
1283
471
  gpr_log(GPR_INFO,
@@ -1294,12 +482,14 @@ float WeightedRoundRobin::EndpointWeight::GetWeight(
1294
482
  // period, reset non_empty_since_ so that we apply the blackout period
1295
483
  // again if we start getting data again in the future, and return 0.
1296
484
  if (now - last_update_time_ >= weight_expiration_period) {
485
+ ++*num_stale;
1297
486
  non_empty_since_ = Timestamp::InfFuture();
1298
487
  return 0;
1299
488
  }
1300
489
  // If we don't have at least blackout_period worth of data, return 0.
1301
490
  if (blackout_period > Duration::Zero() &&
1302
491
  now - non_empty_since_ < blackout_period) {
492
+ ++*num_not_yet_usable;
1303
493
  return 0;
1304
494
  }
1305
495
  // Otherwise, return the weight.
@@ -1370,7 +560,7 @@ WeightedRoundRobin::Picker::~Picker() {
1370
560
  }
1371
561
  }
1372
562
 
1373
- void WeightedRoundRobin::Picker::Orphan() {
563
+ void WeightedRoundRobin::Picker::Orphaned() {
1374
564
  MutexLock lock(&timer_mu_);
1375
565
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
1376
566
  gpr_log(GPR_INFO, "[WRR %p picker %p] cancelling timer", wrr_.get(), this);
@@ -1382,7 +572,7 @@ void WeightedRoundRobin::Picker::Orphan() {
1382
572
 
1383
573
  WeightedRoundRobin::PickResult WeightedRoundRobin::Picker::Pick(PickArgs args) {
1384
574
  size_t index = PickIndex();
1385
- GPR_ASSERT(index < endpoints_.size());
575
+ CHECK(index < endpoints_.size());
1386
576
  auto& endpoint_info = endpoints_[index];
1387
577
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
1388
578
  gpr_log(GPR_INFO,
@@ -1418,14 +608,28 @@ size_t WeightedRoundRobin::Picker::PickIndex() {
1418
608
  }
1419
609
 
1420
610
  void WeightedRoundRobin::Picker::BuildSchedulerAndStartTimerLocked() {
1421
- // Build scheduler.
611
+ auto& stats_plugins = wrr_->channel_control_helper()->GetStatsPluginGroup();
612
+ // Build scheduler, reporting metrics on endpoint weights.
1422
613
  const Timestamp now = Timestamp::Now();
1423
614
  std::vector<float> weights;
1424
615
  weights.reserve(endpoints_.size());
616
+ uint64_t num_not_yet_usable = 0;
617
+ uint64_t num_stale = 0;
1425
618
  for (const auto& endpoint : endpoints_) {
1426
- weights.push_back(endpoint.weight->GetWeight(
1427
- now, config_->weight_expiration_period(), config_->blackout_period()));
1428
- }
619
+ float weight = endpoint.weight->GetWeight(
620
+ now, config_->weight_expiration_period(), config_->blackout_period(),
621
+ &num_not_yet_usable, &num_stale);
622
+ weights.push_back(weight);
623
+ stats_plugins.RecordHistogram(kMetricEndpointWeights, weight,
624
+ {wrr_->channel_control_helper()->GetTarget()},
625
+ {wrr_->locality_name_});
626
+ }
627
+ stats_plugins.AddCounter(
628
+ kMetricEndpointWeightNotYetUsable, num_not_yet_usable,
629
+ {wrr_->channel_control_helper()->GetTarget()}, {wrr_->locality_name_});
630
+ stats_plugins.AddCounter(kMetricEndpointWeightStale, num_stale,
631
+ {wrr_->channel_control_helper()->GetTarget()},
632
+ {wrr_->locality_name_});
1429
633
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
1430
634
  gpr_log(GPR_INFO, "[WRR %p picker %p] new weights: %s", wrr_.get(), this,
1431
635
  absl::StrJoin(weights, " ").c_str());
@@ -1440,9 +644,14 @@ void WeightedRoundRobin::Picker::BuildSchedulerAndStartTimerLocked() {
1440
644
  gpr_log(GPR_INFO, "[WRR %p picker %p] new scheduler: %p", wrr_.get(),
1441
645
  this, scheduler.get());
1442
646
  }
1443
- } else if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
1444
- gpr_log(GPR_INFO, "[WRR %p picker %p] no scheduler, falling back to RR",
1445
- wrr_.get(), this);
647
+ } else {
648
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
649
+ gpr_log(GPR_INFO, "[WRR %p picker %p] no scheduler, falling back to RR",
650
+ wrr_.get(), this);
651
+ }
652
+ stats_plugins.AddCounter(kMetricRrFallback, 1,
653
+ {wrr_->channel_control_helper()->GetTarget()},
654
+ {wrr_->locality_name_});
1446
655
  }
1447
656
  {
1448
657
  MutexLock lock(&scheduler_mu_);
@@ -1483,9 +692,13 @@ void WeightedRoundRobin::Picker::BuildSchedulerAndStartTimerLocked() {
1483
692
  //
1484
693
 
1485
694
  WeightedRoundRobin::WeightedRoundRobin(Args args)
1486
- : LoadBalancingPolicy(std::move(args)) {
695
+ : LoadBalancingPolicy(std::move(args)),
696
+ locality_name_(channel_args()
697
+ .GetString(GRPC_ARG_LB_WEIGHTED_TARGET_CHILD)
698
+ .value_or("")) {
1487
699
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
1488
- gpr_log(GPR_INFO, "[WRR %p] Created", this);
700
+ gpr_log(GPR_INFO, "[WRR %p] Created -- locality_name=\"%s\"", this,
701
+ std::string(locality_name_).c_str());
1489
702
  }
1490
703
  }
1491
704
 
@@ -1493,8 +706,8 @@ WeightedRoundRobin::~WeightedRoundRobin() {
1493
706
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
1494
707
  gpr_log(GPR_INFO, "[WRR %p] Destroying Round Robin policy", this);
1495
708
  }
1496
- GPR_ASSERT(endpoint_list_ == nullptr);
1497
- GPR_ASSERT(latest_pending_endpoint_list_ == nullptr);
709
+ CHECK(endpoint_list_ == nullptr);
710
+ CHECK(latest_pending_endpoint_list_ == nullptr);
1498
711
  }
1499
712
 
1500
713
  void WeightedRoundRobin::ShutdownLocked() {
@@ -1560,8 +773,9 @@ absl::Status WeightedRoundRobin::UpdateLocked(UpdateArgs args) {
1560
773
  gpr_log(GPR_INFO, "[WRR %p] replacing previous pending endpoint list %p",
1561
774
  this, latest_pending_endpoint_list_.get());
1562
775
  }
776
+ std::vector<std::string> errors;
1563
777
  latest_pending_endpoint_list_ = MakeOrphanable<WrrEndpointList>(
1564
- RefAsSubclass<WeightedRoundRobin>(), addresses.get(), args.args);
778
+ RefAsSubclass<WeightedRoundRobin>(), addresses.get(), args.args, &errors);
1565
779
  // If the new list is empty, immediately promote it to
1566
780
  // endpoint_list_ and report TRANSIENT_FAILURE.
1567
781
  if (latest_pending_endpoint_list_->size() == 0) {
@@ -1585,6 +799,10 @@ absl::Status WeightedRoundRobin::UpdateLocked(UpdateArgs args) {
1585
799
  if (endpoint_list_.get() == nullptr) {
1586
800
  endpoint_list_ = std::move(latest_pending_endpoint_list_);
1587
801
  }
802
+ if (!errors.empty()) {
803
+ return absl::UnavailableError(absl::StrCat(
804
+ "errors from children: [", absl::StrJoin(errors, "; "), "]"));
805
+ }
1588
806
  return absl::OkStatus();
1589
807
  }
1590
808
 
@@ -1696,20 +914,20 @@ void WeightedRoundRobin::WrrEndpointList::UpdateStateCountersLocked(
1696
914
  // We treat IDLE the same as CONNECTING, since it will immediately
1697
915
  // transition into that state anyway.
1698
916
  if (old_state.has_value()) {
1699
- GPR_ASSERT(*old_state != GRPC_CHANNEL_SHUTDOWN);
917
+ CHECK(*old_state != GRPC_CHANNEL_SHUTDOWN);
1700
918
  if (*old_state == GRPC_CHANNEL_READY) {
1701
- GPR_ASSERT(num_ready_ > 0);
919
+ CHECK_GT(num_ready_, 0u);
1702
920
  --num_ready_;
1703
921
  } else if (*old_state == GRPC_CHANNEL_CONNECTING ||
1704
922
  *old_state == GRPC_CHANNEL_IDLE) {
1705
- GPR_ASSERT(num_connecting_ > 0);
923
+ CHECK_GT(num_connecting_, 0u);
1706
924
  --num_connecting_;
1707
925
  } else if (*old_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
1708
- GPR_ASSERT(num_transient_failure_ > 0);
926
+ CHECK_GT(num_transient_failure_, 0u);
1709
927
  --num_transient_failure_;
1710
928
  }
1711
929
  }
1712
- GPR_ASSERT(new_state != GRPC_CHANNEL_SHUTDOWN);
930
+ CHECK(new_state != GRPC_CHANNEL_SHUTDOWN);
1713
931
  if (new_state == GRPC_CHANNEL_READY) {
1714
932
  ++num_ready_;
1715
933
  } else if (new_state == GRPC_CHANNEL_CONNECTING ||
@@ -1789,13 +1007,10 @@ void WeightedRoundRobin::WrrEndpointList::
1789
1007
  // factory
1790
1008
  //
1791
1009
 
1792
- class WeightedRoundRobinFactory : public LoadBalancingPolicyFactory {
1010
+ class WeightedRoundRobinFactory final : public LoadBalancingPolicyFactory {
1793
1011
  public:
1794
1012
  OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
1795
1013
  LoadBalancingPolicy::Args args) const override {
1796
- if (!IsWrrDelegateToPickFirstEnabled()) {
1797
- return MakeOrphanable<OldWeightedRoundRobin>(std::move(args));
1798
- }
1799
1014
  return MakeOrphanable<WeightedRoundRobin>(std::move(args));
1800
1015
  }
1801
1016