grpc 1.63.0 → 1.65.2

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 (1196) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +105 -103
  3. data/include/grpc/credentials.h +1222 -0
  4. data/include/grpc/event_engine/event_engine.h +13 -6
  5. data/include/grpc/grpc.h +7 -0
  6. data/include/grpc/grpc_crl_provider.h +1 -0
  7. data/include/grpc/grpc_security.h +0 -1171
  8. data/include/grpc/impl/channel_arg_names.h +7 -6
  9. data/include/grpc/module.modulemap +2 -0
  10. data/include/grpc/passive_listener.h +62 -0
  11. data/include/grpc/support/log.h +7 -17
  12. data/include/grpc/support/port_platform.h +3 -0
  13. data/src/core/{lib/channel → channelz}/channel_trace.cc +57 -63
  14. data/src/core/{lib/channel → channelz}/channel_trace.h +22 -20
  15. data/src/core/{lib/channel → channelz}/channelz.cc +71 -9
  16. data/src/core/{lib/channel → channelz}/channelz.h +52 -13
  17. data/src/core/{lib/channel → channelz}/channelz_registry.cc +11 -9
  18. data/src/core/{lib/channel → channelz}/channelz_registry.h +6 -6
  19. data/src/core/client_channel/backup_poller.cc +4 -5
  20. data/src/core/client_channel/client_channel.cc +1324 -0
  21. data/src/core/client_channel/client_channel.h +243 -0
  22. data/src/core/client_channel/client_channel_filter.cc +312 -759
  23. data/src/core/client_channel/client_channel_filter.h +13 -68
  24. data/src/core/client_channel/client_channel_internal.h +19 -7
  25. data/src/core/client_channel/client_channel_plugin.cc +1 -14
  26. data/src/core/client_channel/client_channel_service_config.h +4 -4
  27. data/src/core/client_channel/config_selector.cc +1 -1
  28. data/src/core/client_channel/config_selector.h +5 -4
  29. data/src/core/client_channel/connector.h +1 -1
  30. data/src/core/client_channel/dynamic_filters.cc +6 -5
  31. data/src/core/client_channel/dynamic_filters.h +1 -3
  32. data/src/core/client_channel/load_balanced_call_destination.cc +336 -0
  33. data/src/core/client_channel/load_balanced_call_destination.h +49 -0
  34. data/src/core/client_channel/local_subchannel_pool.cc +5 -3
  35. data/src/core/client_channel/retry_filter.cc +3 -10
  36. data/src/core/client_channel/retry_filter.h +5 -9
  37. data/src/core/client_channel/retry_filter_legacy_call_data.cc +70 -76
  38. data/src/core/client_channel/retry_filter_legacy_call_data.h +0 -2
  39. data/src/core/client_channel/retry_service_config.cc +4 -5
  40. data/src/core/client_channel/retry_service_config.h +3 -3
  41. data/src/core/client_channel/subchannel.cc +241 -129
  42. data/src/core/client_channel/subchannel.h +31 -19
  43. data/src/core/client_channel/subchannel_pool_interface.cc +0 -2
  44. data/src/core/client_channel/subchannel_pool_interface.h +2 -4
  45. data/src/core/client_channel/subchannel_stream_client.cc +41 -52
  46. data/src/core/client_channel/subchannel_stream_client.h +2 -4
  47. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -13
  48. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +3 -2
  49. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
  50. data/src/core/ext/filters/census/grpc_context.cc +2 -4
  51. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +16 -15
  52. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +12 -11
  53. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +11 -16
  54. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +5 -4
  55. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
  56. data/src/core/ext/filters/http/client/http_client_filter.cc +6 -4
  57. data/src/core/ext/filters/http/client/http_client_filter.h +6 -5
  58. data/src/core/ext/filters/http/client_authority_filter.cc +5 -3
  59. data/src/core/ext/filters/http/client_authority_filter.h +6 -4
  60. data/src/core/ext/filters/http/message_compress/compression_filter.cc +19 -23
  61. data/src/core/ext/filters/http/message_compress/compression_filter.h +10 -8
  62. data/src/core/ext/filters/http/server/http_server_filter.cc +4 -4
  63. data/src/core/ext/filters/http/server/http_server_filter.h +6 -5
  64. data/src/core/ext/filters/message_size/message_size_filter.cc +16 -28
  65. data/src/core/ext/filters/message_size/message_size_filter.h +14 -12
  66. data/src/core/ext/filters/rbac/rbac_filter.cc +13 -11
  67. data/src/core/ext/filters/rbac/rbac_filter.h +6 -5
  68. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
  69. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
  70. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +14 -18
  71. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +4 -2
  72. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
  73. data/src/core/ext/transport/chttp2/alpn/alpn.cc +5 -4
  74. data/src/core/ext/transport/chttp2/alpn/alpn.h +2 -2
  75. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +23 -38
  76. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -8
  77. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +233 -158
  78. data/src/core/ext/transport/chttp2/server/chttp2_server.h +36 -3
  79. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +6 -6
  80. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +1 -2
  81. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +8 -7
  82. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -2
  83. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +190 -165
  84. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +10 -11
  85. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +3 -3
  86. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +2 -2
  87. data/src/core/ext/transport/chttp2/transport/decode_huff.h +2 -2
  88. data/src/core/ext/transport/chttp2/transport/flow_control.cc +6 -8
  89. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -6
  90. data/src/core/ext/transport/chttp2/transport/frame.cc +4 -4
  91. data/src/core/ext/transport/chttp2/transport/frame.h +2 -2
  92. data/src/core/ext/transport/chttp2/transport/frame_data.cc +3 -3
  93. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -2
  94. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +5 -5
  95. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -2
  96. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -9
  97. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -2
  98. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +4 -5
  99. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -2
  100. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +10 -7
  101. data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -2
  102. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -4
  103. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -2
  104. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +2 -2
  105. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +9 -7
  106. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +10 -4
  107. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +10 -9
  108. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -2
  109. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +4 -3
  110. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +3 -3
  111. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +29 -31
  112. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  113. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +8 -13
  114. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -2
  115. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +3 -3
  116. data/src/core/ext/transport/chttp2/transport/http2_settings.h +3 -3
  117. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +2 -2
  118. data/src/core/ext/transport/chttp2/transport/internal.h +31 -23
  119. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +4 -3
  120. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +2 -2
  121. data/src/core/ext/transport/chttp2/transport/parsing.cc +29 -39
  122. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +1 -2
  123. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +2 -2
  124. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +3 -5
  125. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +1 -4
  126. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +30 -15
  127. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +7 -6
  128. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +10 -11
  129. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -2
  130. data/src/core/ext/transport/chttp2/transport/varint.h +4 -3
  131. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +4 -3
  132. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +2 -2
  133. data/src/core/ext/transport/chttp2/transport/writing.cc +59 -47
  134. data/src/core/ext/transport/inproc/inproc_transport.cc +65 -41
  135. data/src/core/ext/transport/inproc/inproc_transport.h +2 -5
  136. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +20 -23
  137. data/src/core/ext/transport/inproc/legacy_inproc_transport.h +1 -4
  138. data/src/core/{lib/transport → handshaker/endpoint_info}/endpoint_info_handshaker.cc +6 -6
  139. data/src/core/{lib/transport → handshaker/endpoint_info}/endpoint_info_handshaker.h +3 -3
  140. data/src/core/{lib/transport → handshaker}/handshaker.cc +14 -20
  141. data/src/core/{lib/transport → handshaker}/handshaker.h +4 -5
  142. data/src/core/{lib/transport → handshaker}/handshaker_factory.h +19 -3
  143. data/src/core/{lib/transport → handshaker}/handshaker_registry.cc +3 -3
  144. data/src/core/{lib/transport → handshaker}/handshaker_registry.h +6 -6
  145. data/src/core/{lib/transport → handshaker/http_connect}/http_connect_handshaker.cc +16 -25
  146. data/src/core/{lib/transport → handshaker/http_connect}/http_connect_handshaker.h +3 -3
  147. data/src/core/{client_channel → handshaker/http_connect}/http_proxy_mapper.cc +16 -18
  148. data/src/core/{client_channel → handshaker/http_connect}/http_proxy_mapper.h +6 -6
  149. data/src/core/{lib/handshaker → handshaker}/proxy_mapper.h +5 -5
  150. data/src/core/{lib/handshaker → handshaker}/proxy_mapper_registry.cc +3 -3
  151. data/src/core/{lib/handshaker → handshaker}/proxy_mapper_registry.h +6 -6
  152. data/src/core/{lib/security/transport → handshaker/security}/secure_endpoint.cc +42 -36
  153. data/src/core/{lib/security/transport → handshaker/security}/secure_endpoint.h +4 -7
  154. data/src/core/{lib/security/transport → handshaker/security}/security_handshaker.cc +35 -47
  155. data/src/core/{lib/security/transport → handshaker/security}/security_handshaker.h +5 -6
  156. data/src/core/{lib/transport → handshaker/tcp_connect}/tcp_connect_handshaker.cc +10 -9
  157. data/src/core/{lib/transport → handshaker/tcp_connect}/tcp_connect_handshaker.h +3 -3
  158. data/src/core/lib/address_utils/parse_address.cc +30 -40
  159. data/src/core/lib/address_utils/parse_address.h +2 -2
  160. data/src/core/lib/address_utils/sockaddr_utils.cc +20 -15
  161. data/src/core/lib/address_utils/sockaddr_utils.h +2 -2
  162. data/src/core/lib/avl/avl.h +3 -3
  163. data/src/core/lib/backoff/backoff.cc +2 -2
  164. data/src/core/lib/backoff/backoff.h +2 -2
  165. data/src/core/lib/backoff/random_early_detection.cc +2 -2
  166. data/src/core/lib/backoff/random_early_detection.h +2 -2
  167. data/src/core/lib/channel/call_finalization.h +2 -2
  168. data/src/core/lib/channel/channel_args.cc +17 -21
  169. data/src/core/lib/channel/channel_args.h +20 -10
  170. data/src/core/lib/channel/channel_args_preconditioning.cc +2 -2
  171. data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
  172. data/src/core/lib/channel/channel_stack.cc +13 -70
  173. data/src/core/lib/channel/channel_stack.h +14 -39
  174. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  175. data/src/core/lib/channel/channel_stack_builder.h +2 -7
  176. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -150
  177. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -4
  178. data/src/core/lib/channel/connected_channel.cc +40 -694
  179. data/src/core/lib/channel/promise_based_filter.cc +111 -122
  180. data/src/core/lib/channel/promise_based_filter.h +219 -531
  181. data/src/core/lib/channel/status_util.cc +3 -3
  182. data/src/core/lib/channel/status_util.h +1 -2
  183. data/src/core/lib/compression/compression.cc +2 -3
  184. data/src/core/lib/compression/compression_internal.cc +3 -3
  185. data/src/core/lib/compression/compression_internal.h +1 -2
  186. data/src/core/lib/compression/message_compress.cc +15 -14
  187. data/src/core/lib/compression/message_compress.h +1 -2
  188. data/src/core/lib/config/config_vars.cc +5 -10
  189. data/src/core/lib/config/config_vars.h +3 -7
  190. data/src/core/lib/config/config_vars_non_generated.cc +2 -2
  191. data/src/core/lib/config/core_configuration.cc +9 -8
  192. data/src/core/lib/config/core_configuration.h +8 -8
  193. data/src/core/lib/config/load_config.cc +4 -4
  194. data/src/core/lib/config/load_config.h +2 -2
  195. data/src/core/lib/debug/event_log.cc +3 -3
  196. data/src/core/lib/debug/event_log.h +3 -3
  197. data/src/core/lib/debug/trace.cc +44 -61
  198. data/src/core/lib/debug/trace.h +2 -97
  199. data/src/core/lib/debug/trace_flags.cc +255 -0
  200. data/src/core/lib/debug/trace_flags.h +133 -0
  201. data/src/core/lib/debug/trace_impl.h +115 -0
  202. data/src/core/lib/event_engine/ares_resolver.cc +23 -26
  203. data/src/core/lib/event_engine/ares_resolver.h +3 -5
  204. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +4 -2
  205. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +3 -3
  206. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +19 -23
  207. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +2 -1
  208. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +1 -2
  209. data/src/core/lib/event_engine/channel_args_endpoint_config.h +1 -2
  210. data/src/core/lib/event_engine/common_closures.h +1 -2
  211. data/src/core/lib/event_engine/default_event_engine.cc +1 -2
  212. data/src/core/lib/event_engine/default_event_engine.h +1 -2
  213. data/src/core/lib/event_engine/default_event_engine_factory.cc +1 -2
  214. data/src/core/lib/event_engine/default_event_engine_factory.h +1 -2
  215. data/src/core/lib/event_engine/event_engine.cc +29 -5
  216. data/src/core/lib/event_engine/event_engine_context.h +1 -2
  217. data/src/core/lib/event_engine/extensions/can_track_errors.h +2 -2
  218. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +2 -2
  219. data/src/core/lib/event_engine/extensions/supports_fd.h +8 -2
  220. data/src/core/lib/event_engine/extensions/tcp_trace.h +43 -0
  221. data/src/core/lib/event_engine/forkable.cc +11 -11
  222. data/src/core/lib/event_engine/forkable.h +1 -13
  223. data/src/core/lib/event_engine/grpc_polled_fd.h +1 -2
  224. data/src/core/lib/event_engine/handle_containers.h +1 -2
  225. data/src/core/lib/event_engine/memory_allocator_factory.h +1 -2
  226. data/src/core/lib/event_engine/poller.h +1 -2
  227. data/src/core/lib/event_engine/posix.h +1 -2
  228. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +19 -19
  229. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +1 -2
  230. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +11 -11
  231. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +1 -2
  232. data/src/core/lib/event_engine/posix_engine/event_poller.h +1 -2
  233. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -2
  234. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +2 -2
  235. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +1 -2
  236. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +5 -5
  237. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +2 -2
  238. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +3 -3
  239. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +2 -2
  240. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +1 -1
  241. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +2 -2
  242. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +43 -58
  243. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +14 -13
  244. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +34 -17
  245. data/src/core/lib/event_engine/posix_engine/posix_engine.h +3 -2
  246. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +1 -2
  247. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +17 -18
  248. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +1 -2
  249. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +24 -28
  250. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -2
  251. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +22 -20
  252. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -3
  253. data/src/core/lib/event_engine/posix_engine/timer.cc +2 -3
  254. data/src/core/lib/event_engine/posix_engine/timer.h +1 -2
  255. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +2 -2
  256. data/src/core/lib/event_engine/posix_engine/timer_heap.h +2 -2
  257. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +9 -11
  258. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -2
  259. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
  260. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -2
  261. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +2 -2
  262. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -2
  263. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +2 -2
  264. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -2
  265. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +2 -2
  266. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -2
  267. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +2 -2
  268. data/src/core/lib/event_engine/query_extensions.h +3 -2
  269. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +1 -2
  270. data/src/core/lib/event_engine/resolved_address.cc +5 -4
  271. data/src/core/lib/event_engine/resolved_address_internal.h +1 -2
  272. data/src/core/lib/event_engine/shim.cc +3 -3
  273. data/src/core/lib/event_engine/slice.cc +4 -3
  274. data/src/core/lib/event_engine/slice_buffer.cc +1 -2
  275. data/src/core/lib/event_engine/tcp_socket_utils.cc +18 -16
  276. data/src/core/lib/event_engine/tcp_socket_utils.h +1 -2
  277. data/src/core/lib/event_engine/thread_local.cc +2 -2
  278. data/src/core/lib/event_engine/thread_local.h +1 -1
  279. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -2
  280. data/src/core/lib/event_engine/thread_pool/thread_count.h +2 -3
  281. data/src/core/lib/event_engine/thread_pool/thread_pool.h +1 -2
  282. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +2 -2
  283. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +27 -28
  284. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +4 -8
  285. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +16 -15
  286. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +5 -5
  287. data/src/core/lib/event_engine/time_util.cc +1 -2
  288. data/src/core/lib/event_engine/time_util.h +1 -2
  289. data/src/core/lib/event_engine/trace.h +7 -19
  290. data/src/core/lib/event_engine/utils.cc +1 -2
  291. data/src/core/lib/event_engine/utils.h +1 -2
  292. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +31 -30
  293. data/src/core/lib/event_engine/windows/iocp.cc +10 -8
  294. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  295. data/src/core/lib/event_engine/windows/win_socket.cc +32 -22
  296. data/src/core/lib/event_engine/windows/win_socket.h +4 -5
  297. data/src/core/lib/event_engine/windows/windows_endpoint.cc +24 -25
  298. data/src/core/lib/event_engine/windows/windows_engine.cc +205 -90
  299. data/src/core/lib/event_engine/windows/windows_engine.h +136 -25
  300. data/src/core/lib/event_engine/windows/windows_listener.cc +19 -29
  301. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +2 -2
  302. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +1 -2
  303. data/src/core/lib/event_engine/work_queue/work_queue.h +1 -2
  304. data/src/core/lib/experiments/config.cc +16 -14
  305. data/src/core/lib/experiments/config.h +2 -2
  306. data/src/core/lib/experiments/experiments.cc +57 -158
  307. data/src/core/lib/experiments/experiments.h +35 -52
  308. data/src/core/lib/gprpp/atomic_utils.h +2 -2
  309. data/src/core/lib/gprpp/bitset.h +3 -3
  310. data/src/core/lib/gprpp/chunked_vector.h +6 -5
  311. data/src/core/lib/gprpp/construct_destruct.h +2 -2
  312. data/src/core/lib/gprpp/crash.cc +3 -5
  313. data/src/core/lib/gprpp/crash.h +2 -2
  314. data/src/core/lib/gprpp/debug_location.h +2 -2
  315. data/src/core/lib/gprpp/directory_reader.h +2 -2
  316. data/src/core/lib/gprpp/down_cast.h +3 -3
  317. data/src/core/lib/gprpp/dual_ref_counted.h +54 -41
  318. data/src/core/lib/gprpp/dump_args.cc +54 -0
  319. data/src/core/lib/gprpp/dump_args.h +69 -0
  320. data/src/core/lib/gprpp/env.h +2 -2
  321. data/src/core/lib/gprpp/examine_stack.cc +2 -2
  322. data/src/core/lib/gprpp/examine_stack.h +2 -2
  323. data/src/core/lib/gprpp/fork.cc +1 -2
  324. data/src/core/lib/gprpp/fork.h +2 -2
  325. data/src/core/lib/gprpp/glob.cc +70 -0
  326. data/src/core/lib/gprpp/glob.h +29 -0
  327. data/src/core/lib/gprpp/host_port.cc +6 -4
  328. data/src/core/lib/gprpp/host_port.h +2 -2
  329. data/src/core/lib/gprpp/linux/env.cc +2 -2
  330. data/src/core/lib/gprpp/load_file.cc +1 -2
  331. data/src/core/lib/gprpp/load_file.h +2 -2
  332. data/src/core/lib/gprpp/manual_constructor.h +2 -2
  333. data/src/core/lib/gprpp/match.h +2 -2
  334. data/src/core/lib/gprpp/memory.h +1 -2
  335. data/src/core/lib/gprpp/mpscq.cc +2 -2
  336. data/src/core/lib/gprpp/mpscq.h +5 -4
  337. data/src/core/lib/gprpp/no_destruct.h +2 -2
  338. data/src/core/lib/gprpp/notification.h +2 -2
  339. data/src/core/lib/gprpp/orphanable.h +2 -2
  340. data/src/core/lib/gprpp/overload.h +2 -2
  341. data/src/core/lib/gprpp/per_cpu.cc +2 -3
  342. data/src/core/lib/gprpp/per_cpu.h +1 -2
  343. data/src/core/lib/gprpp/posix/directory_reader.cc +2 -2
  344. data/src/core/lib/gprpp/posix/stat.cc +8 -7
  345. data/src/core/lib/gprpp/posix/thd.cc +18 -19
  346. data/src/core/lib/gprpp/ref_counted.h +35 -26
  347. data/src/core/lib/gprpp/ref_counted_ptr.h +2 -2
  348. data/src/core/lib/gprpp/ref_counted_string.cc +1 -2
  349. data/src/core/lib/gprpp/ref_counted_string.h +2 -2
  350. data/src/core/lib/gprpp/single_set_ptr.h +9 -6
  351. data/src/core/lib/gprpp/sorted_pack.h +2 -2
  352. data/src/core/lib/gprpp/stat.h +2 -2
  353. data/src/core/lib/gprpp/status_helper.cc +14 -33
  354. data/src/core/lib/gprpp/status_helper.h +5 -33
  355. data/src/core/lib/gprpp/strerror.cc +2 -2
  356. data/src/core/lib/gprpp/strerror.h +2 -2
  357. data/src/core/lib/gprpp/sync.h +5 -5
  358. data/src/core/lib/gprpp/table.h +2 -2
  359. data/src/core/lib/gprpp/tchar.cc +2 -2
  360. data/src/core/lib/gprpp/thd.h +7 -7
  361. data/src/core/lib/gprpp/time.cc +9 -10
  362. data/src/core/lib/gprpp/time.h +4 -4
  363. data/src/core/lib/gprpp/time_averaged_stats.cc +2 -2
  364. data/src/core/lib/gprpp/time_util.cc +5 -4
  365. data/src/core/lib/gprpp/time_util.h +1 -2
  366. data/src/core/lib/gprpp/unique_type_name.h +3 -3
  367. data/src/core/lib/gprpp/uuid_v4.cc +2 -2
  368. data/src/core/lib/gprpp/uuid_v4.h +2 -2
  369. data/src/core/lib/gprpp/validation_errors.cc +12 -3
  370. data/src/core/lib/gprpp/validation_errors.h +13 -2
  371. data/src/core/lib/gprpp/windows/stat.cc +6 -5
  372. data/src/core/lib/gprpp/windows/thd.cc +7 -4
  373. data/src/core/lib/gprpp/work_serializer.cc +53 -62
  374. data/src/core/lib/gprpp/work_serializer.h +1 -2
  375. data/src/core/lib/iomgr/buffer_list.cc +5 -4
  376. data/src/core/lib/iomgr/buffer_list.h +1 -2
  377. data/src/core/lib/iomgr/call_combiner.cc +23 -31
  378. data/src/core/lib/iomgr/call_combiner.h +2 -5
  379. data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
  380. data/src/core/lib/iomgr/closure.cc +2 -2
  381. data/src/core/lib/iomgr/closure.h +6 -7
  382. data/src/core/lib/iomgr/combiner.cc +13 -14
  383. data/src/core/lib/iomgr/combiner.h +1 -4
  384. data/src/core/lib/iomgr/endpoint.cc +1 -7
  385. data/src/core/lib/iomgr/endpoint.h +1 -4
  386. data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -46
  387. data/src/core/lib/iomgr/endpoint_pair_posix.cc +6 -5
  388. data/src/core/lib/iomgr/endpoint_pair_windows.cc +15 -15
  389. data/src/core/lib/iomgr/error.cc +16 -24
  390. data/src/core/lib/iomgr/error.h +4 -4
  391. data/src/core/lib/iomgr/ev_apple.cc +3 -5
  392. data/src/core/lib/iomgr/ev_epoll1_linux.cc +58 -56
  393. data/src/core/lib/iomgr/ev_poll_posix.cc +47 -38
  394. data/src/core/lib/iomgr/ev_posix.cc +9 -11
  395. data/src/core/lib/iomgr/ev_posix.h +11 -8
  396. data/src/core/lib/iomgr/event_engine_shims/closure.cc +3 -4
  397. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -2
  398. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +17 -31
  399. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -2
  400. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +1 -2
  401. data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +1 -2
  402. data/src/core/lib/iomgr/exec_ctx.cc +7 -7
  403. data/src/core/lib/iomgr/exec_ctx.h +7 -5
  404. data/src/core/lib/iomgr/executor.cc +13 -23
  405. data/src/core/lib/iomgr/executor.h +1 -1
  406. data/src/core/lib/iomgr/fork_posix.cc +8 -10
  407. data/src/core/lib/iomgr/fork_windows.cc +3 -1
  408. data/src/core/lib/iomgr/grpc_if_nametoindex.h +2 -2
  409. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
  410. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
  411. data/src/core/lib/iomgr/internal_errqueue.cc +5 -4
  412. data/src/core/lib/iomgr/iocp_windows.cc +13 -9
  413. data/src/core/lib/iomgr/iocp_windows.h +0 -1
  414. data/src/core/lib/iomgr/iomgr.cc +14 -19
  415. data/src/core/lib/iomgr/iomgr.h +2 -2
  416. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  417. data/src/core/lib/iomgr/iomgr_internal.h +2 -2
  418. data/src/core/lib/iomgr/iomgr_windows.cc +4 -2
  419. data/src/core/lib/iomgr/lockfree_event.cc +7 -8
  420. data/src/core/lib/iomgr/lockfree_event.h +1 -2
  421. data/src/core/lib/iomgr/polling_entity.cc +5 -5
  422. data/src/core/lib/iomgr/pollset.cc +2 -2
  423. data/src/core/lib/iomgr/pollset.h +0 -3
  424. data/src/core/lib/iomgr/pollset_set.cc +2 -2
  425. data/src/core/lib/iomgr/pollset_set_windows.cc +2 -2
  426. data/src/core/lib/iomgr/pollset_windows.cc +0 -2
  427. data/src/core/lib/iomgr/pollset_windows.h +0 -1
  428. data/src/core/lib/iomgr/python_util.h +1 -2
  429. data/src/core/lib/iomgr/resolve_address.cc +1 -2
  430. data/src/core/lib/iomgr/resolve_address.h +1 -2
  431. data/src/core/lib/iomgr/resolve_address_impl.h +2 -2
  432. data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
  433. data/src/core/lib/iomgr/resolve_address_posix.h +2 -2
  434. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
  435. data/src/core/lib/iomgr/resolve_address_windows.h +2 -2
  436. data/src/core/lib/iomgr/resolved_address.h +2 -2
  437. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +3 -1
  438. data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
  439. data/src/core/lib/iomgr/socket_factory_posix.h +1 -2
  440. data/src/core/lib/iomgr/socket_mutator.cc +2 -3
  441. data/src/core/lib/iomgr/socket_mutator.h +1 -2
  442. data/src/core/lib/iomgr/socket_utils.h +2 -2
  443. data/src/core/lib/iomgr/socket_utils_common_posix.cc +28 -33
  444. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
  445. data/src/core/lib/iomgr/socket_utils_posix.h +1 -2
  446. data/src/core/lib/iomgr/socket_windows.cc +8 -9
  447. data/src/core/lib/iomgr/tcp_client.cc +2 -2
  448. data/src/core/lib/iomgr/tcp_client.h +1 -2
  449. data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
  450. data/src/core/lib/iomgr/tcp_client_posix.cc +14 -19
  451. data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
  452. data/src/core/lib/iomgr/tcp_posix.cc +99 -125
  453. data/src/core/lib/iomgr/tcp_posix.h +0 -2
  454. data/src/core/lib/iomgr/tcp_server.cc +2 -2
  455. data/src/core/lib/iomgr/tcp_server.h +1 -2
  456. data/src/core/lib/iomgr/tcp_server_posix.cc +35 -38
  457. data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -2
  458. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +10 -12
  459. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -8
  460. data/src/core/lib/iomgr/tcp_server_windows.cc +25 -30
  461. data/src/core/lib/iomgr/tcp_windows.cc +33 -47
  462. data/src/core/lib/iomgr/timer.cc +2 -2
  463. data/src/core/lib/iomgr/timer.h +1 -2
  464. data/src/core/lib/iomgr/timer_generic.cc +20 -23
  465. data/src/core/lib/iomgr/timer_generic.h +0 -1
  466. data/src/core/lib/iomgr/timer_heap.cc +2 -3
  467. data/src/core/lib/iomgr/timer_manager.cc +21 -33
  468. data/src/core/lib/iomgr/timer_manager.h +2 -2
  469. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -2
  470. data/src/core/lib/iomgr/unix_sockets_posix.h +1 -2
  471. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +3 -1
  472. data/src/core/lib/iomgr/vsock.cc +3 -3
  473. data/src/core/lib/iomgr/vsock.h +1 -2
  474. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
  475. data/src/core/lib/matchers/matchers.cc +2 -2
  476. data/src/core/lib/matchers/matchers.h +2 -2
  477. data/src/core/lib/promise/activity.cc +4 -3
  478. data/src/core/lib/promise/activity.h +34 -11
  479. data/src/core/lib/promise/all_ok.h +2 -2
  480. data/src/core/lib/promise/arena_promise.h +2 -2
  481. data/src/core/lib/promise/cancel_callback.h +24 -0
  482. data/src/core/lib/promise/context.h +14 -3
  483. data/src/core/lib/promise/detail/basic_seq.h +1 -2
  484. data/src/core/lib/promise/detail/join_state.h +365 -408
  485. data/src/core/lib/promise/detail/promise_factory.h +2 -2
  486. data/src/core/lib/promise/detail/promise_like.h +15 -8
  487. data/src/core/lib/promise/detail/seq_state.h +1192 -1192
  488. data/src/core/lib/promise/detail/status.h +4 -3
  489. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +2 -2
  490. data/src/core/lib/promise/for_each.h +91 -30
  491. data/src/core/lib/promise/if.h +2 -2
  492. data/src/core/lib/promise/interceptor_list.h +9 -10
  493. data/src/core/lib/promise/latch.h +17 -17
  494. data/src/core/lib/promise/loop.h +2 -2
  495. data/src/core/lib/promise/map.h +19 -2
  496. data/src/core/lib/promise/observable.h +182 -0
  497. data/src/core/lib/promise/party.cc +22 -23
  498. data/src/core/lib/promise/party.h +19 -17
  499. data/src/core/lib/promise/pipe.h +31 -50
  500. data/src/core/lib/promise/poll.h +6 -5
  501. data/src/core/lib/promise/prioritized_race.h +2 -2
  502. data/src/core/lib/promise/promise.h +3 -2
  503. data/src/core/lib/promise/race.h +2 -2
  504. data/src/core/lib/promise/seq.h +2 -2
  505. data/src/core/lib/promise/sleep.cc +1 -2
  506. data/src/core/lib/promise/sleep.h +1 -2
  507. data/src/core/lib/promise/status_flag.h +10 -8
  508. data/src/core/lib/promise/try_join.h +4 -3
  509. data/src/core/lib/promise/try_seq.h +4 -3
  510. data/src/core/lib/resource_quota/api.cc +1 -2
  511. data/src/core/lib/resource_quota/api.h +1 -2
  512. data/src/core/lib/resource_quota/arena.cc +57 -81
  513. data/src/core/lib/resource_quota/arena.h +119 -211
  514. data/src/core/lib/resource_quota/connection_quota.cc +8 -9
  515. data/src/core/lib/resource_quota/connection_quota.h +2 -2
  516. data/src/core/lib/resource_quota/memory_quota.cc +20 -21
  517. data/src/core/lib/resource_quota/memory_quota.h +6 -7
  518. data/src/core/lib/resource_quota/periodic_update.cc +3 -3
  519. data/src/core/lib/resource_quota/periodic_update.h +2 -2
  520. data/src/core/lib/resource_quota/resource_quota.cc +2 -2
  521. data/src/core/lib/resource_quota/resource_quota.h +2 -3
  522. data/src/core/lib/resource_quota/thread_quota.cc +4 -3
  523. data/src/core/lib/resource_quota/thread_quota.h +2 -2
  524. data/src/core/lib/security/authorization/audit_logging.cc +6 -6
  525. data/src/core/lib/security/authorization/audit_logging.h +1 -2
  526. data/src/core/lib/security/authorization/authorization_engine.h +2 -2
  527. data/src/core/lib/security/authorization/authorization_policy_provider.h +2 -3
  528. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +2 -3
  529. data/src/core/lib/security/authorization/evaluate_args.cc +8 -11
  530. data/src/core/lib/security/authorization/evaluate_args.h +1 -2
  531. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +4 -3
  532. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -2
  533. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +9 -11
  534. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +8 -8
  535. data/src/core/lib/security/authorization/matchers.cc +4 -5
  536. data/src/core/lib/security/authorization/matchers.h +2 -2
  537. data/src/core/lib/security/authorization/rbac_policy.cc +2 -2
  538. data/src/core/lib/security/authorization/rbac_policy.h +1 -2
  539. data/src/core/lib/security/authorization/stdout_logger.cc +4 -3
  540. data/src/core/lib/security/authorization/stdout_logger.h +1 -2
  541. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +4 -4
  542. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +6 -6
  543. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +2 -2
  544. data/src/core/lib/security/context/security_context.cc +17 -16
  545. data/src/core/lib/security/context/security_context.h +33 -10
  546. data/src/core/lib/security/credentials/alts/alts_credentials.cc +1 -2
  547. data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -3
  548. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +4 -3
  549. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
  550. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -6
  551. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +4 -5
  552. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +2 -2
  553. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -2
  554. data/src/core/lib/security/credentials/call_creds_util.cc +3 -3
  555. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  556. data/src/core/lib/security/credentials/channel_creds_registry.h +4 -4
  557. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +7 -5
  558. data/src/core/lib/security/credentials/composite/composite_credentials.cc +9 -8
  559. data/src/core/lib/security/credentials/composite/composite_credentials.h +3 -3
  560. data/src/core/lib/security/credentials/credentials.cc +10 -9
  561. data/src/core/lib/security/credentials/credentials.h +5 -4
  562. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +9 -8
  563. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +4 -4
  564. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -2
  565. data/src/core/lib/security/credentials/external/aws_request_signer.h +2 -2
  566. data/src/core/lib/security/credentials/external/external_account_credentials.cc +16 -17
  567. data/src/core/lib/security/credentials/external/external_account_credentials.h +5 -5
  568. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +3 -4
  569. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +2 -2
  570. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -7
  571. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +3 -3
  572. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  573. data/src/core/lib/security/credentials/fake/fake_credentials.h +3 -3
  574. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +4 -5
  575. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +19 -18
  576. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
  577. data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -5
  578. data/src/core/lib/security/credentials/iam/iam_credentials.h +3 -3
  579. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  580. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +2 -2
  581. data/src/core/lib/security/credentials/jwt/json_token.cc +19 -19
  582. data/src/core/lib/security/credentials/jwt/json_token.h +2 -3
  583. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +10 -8
  584. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +3 -3
  585. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +65 -69
  586. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  587. data/src/core/lib/security/credentials/local/local_credentials.cc +1 -2
  588. data/src/core/lib/security/credentials/local/local_credentials.h +3 -3
  589. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  590. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +6 -6
  591. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +9 -10
  592. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -5
  593. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +28 -34
  594. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +6 -4
  595. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +26 -25
  596. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +2 -2
  597. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +2 -2
  598. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +28 -36
  599. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +4 -4
  600. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +3 -3
  601. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +5 -4
  602. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -22
  603. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +1 -0
  604. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +5 -7
  605. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +1 -2
  606. data/src/core/lib/security/credentials/tls/tls_credentials.cc +15 -18
  607. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  608. data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -6
  609. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -2
  610. data/src/core/lib/security/credentials/xds/xds_credentials.cc +8 -8
  611. data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
  612. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +27 -30
  613. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +2 -2
  614. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +20 -17
  615. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
  616. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +6 -5
  617. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +3 -3
  618. data/src/core/lib/security/security_connector/load_system_roots.h +1 -2
  619. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +8 -8
  620. data/src/core/lib/security/security_connector/load_system_roots_supported.h +1 -2
  621. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
  622. data/src/core/lib/security/security_connector/local/local_security_connector.cc +19 -23
  623. data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
  624. data/src/core/lib/security/security_connector/security_connector.cc +8 -10
  625. data/src/core/lib/security/security_connector/security_connector.h +4 -6
  626. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +23 -25
  627. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +2 -2
  628. data/src/core/lib/security/security_connector/ssl_utils.cc +29 -30
  629. data/src/core/lib/security/security_connector/ssl_utils.h +1 -2
  630. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +42 -53
  631. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +3 -3
  632. data/src/core/lib/security/transport/auth_filters.h +14 -13
  633. data/src/core/lib/security/transport/client_auth_filter.cc +13 -18
  634. data/src/core/lib/security/transport/server_auth_filter.cc +10 -13
  635. data/src/core/lib/security/util/json_util.cc +1 -2
  636. data/src/core/lib/security/util/json_util.h +1 -1
  637. data/src/core/lib/slice/percent_encoding.cc +4 -3
  638. data/src/core/lib/slice/slice.cc +11 -10
  639. data/src/core/lib/slice/slice.h +5 -5
  640. data/src/core/lib/slice/slice_buffer.cc +15 -14
  641. data/src/core/lib/slice/slice_buffer.h +1 -2
  642. data/src/core/lib/slice/slice_internal.h +3 -3
  643. data/src/core/lib/slice/slice_refcount.h +3 -6
  644. data/src/core/lib/slice/slice_string_helpers.cc +3 -3
  645. data/src/core/lib/slice/slice_string_helpers.h +1 -2
  646. data/src/core/lib/surface/api_trace.h +2 -5
  647. data/src/core/lib/surface/byte_buffer.cc +1 -2
  648. data/src/core/lib/surface/byte_buffer_reader.cc +4 -3
  649. data/src/core/lib/surface/call.cc +102 -3899
  650. data/src/core/lib/surface/call.h +158 -90
  651. data/src/core/lib/surface/call_details.cc +1 -2
  652. data/src/core/lib/surface/call_log_batch.cc +2 -3
  653. data/src/core/lib/surface/call_test_only.h +1 -2
  654. data/src/core/lib/surface/call_utils.cc +276 -0
  655. data/src/core/lib/surface/call_utils.h +449 -0
  656. data/src/core/lib/surface/channel.cc +17 -11
  657. data/src/core/lib/surface/channel.h +12 -10
  658. data/src/core/lib/surface/channel_create.cc +18 -9
  659. data/src/core/lib/surface/channel_create.h +5 -4
  660. data/src/core/lib/surface/channel_init.cc +27 -83
  661. data/src/core/lib/surface/channel_init.h +27 -100
  662. data/src/core/lib/surface/channel_stack_type.cc +2 -2
  663. data/src/core/lib/surface/client_call.cc +419 -0
  664. data/src/core/lib/surface/client_call.h +180 -0
  665. data/src/core/lib/surface/completion_queue.cc +45 -51
  666. data/src/core/lib/surface/completion_queue.h +1 -10
  667. data/src/core/lib/surface/completion_queue_factory.cc +9 -8
  668. data/src/core/lib/surface/completion_queue_factory.h +1 -2
  669. data/src/core/lib/surface/event_string.cc +2 -2
  670. data/src/core/lib/surface/event_string.h +1 -2
  671. data/src/core/lib/surface/filter_stack_call.cc +1157 -0
  672. data/src/core/lib/surface/filter_stack_call.h +369 -0
  673. data/src/core/lib/surface/init.cc +8 -8
  674. data/src/core/lib/surface/init_internally.cc +2 -2
  675. data/src/core/lib/surface/lame_client.cc +10 -13
  676. data/src/core/lib/surface/lame_client.h +6 -11
  677. data/src/core/lib/surface/legacy_channel.cc +52 -39
  678. data/src/core/lib/surface/legacy_channel.h +11 -21
  679. data/src/core/lib/surface/metadata_array.cc +1 -2
  680. data/src/core/lib/surface/server_call.cc +222 -0
  681. data/src/core/lib/surface/server_call.h +167 -0
  682. data/src/core/lib/surface/validate_metadata.cc +1 -2
  683. data/src/core/lib/surface/validate_metadata.h +3 -3
  684. data/src/core/lib/surface/version.cc +3 -4
  685. data/src/core/lib/transport/bdp_estimator.cc +7 -7
  686. data/src/core/lib/transport/bdp_estimator.h +6 -8
  687. data/src/core/lib/transport/{call_size_estimator.cc → call_arena_allocator.cc} +3 -3
  688. data/src/core/lib/transport/{call_size_estimator.h → call_arena_allocator.h} +29 -6
  689. data/src/core/lib/transport/call_destination.h +76 -0
  690. data/src/core/lib/transport/call_filters.cc +54 -21
  691. data/src/core/lib/transport/call_filters.h +240 -84
  692. data/src/core/lib/transport/call_final_info.cc +2 -2
  693. data/src/core/lib/transport/call_final_info.h +1 -2
  694. data/src/core/lib/transport/call_spine.cc +17 -19
  695. data/src/core/lib/transport/call_spine.h +238 -215
  696. data/src/core/lib/transport/connectivity_state.cc +9 -12
  697. data/src/core/lib/transport/connectivity_state.h +1 -4
  698. data/src/core/lib/transport/error_utils.cc +1 -2
  699. data/src/core/lib/transport/error_utils.h +1 -2
  700. data/src/core/lib/transport/interception_chain.cc +155 -0
  701. data/src/core/lib/transport/interception_chain.h +236 -0
  702. data/src/core/lib/transport/message.cc +1 -2
  703. data/src/core/lib/transport/metadata.cc +2 -2
  704. data/src/core/lib/transport/metadata_batch.cc +2 -2
  705. data/src/core/lib/transport/metadata_batch.h +43 -5
  706. data/src/core/lib/transport/metadata_compression_traits.h +2 -2
  707. data/src/core/lib/transport/metadata_info.cc +2 -2
  708. data/src/core/lib/transport/metadata_info.h +1 -1
  709. data/src/core/lib/transport/parsed_metadata.cc +2 -2
  710. data/src/core/lib/transport/parsed_metadata.h +1 -2
  711. data/src/core/lib/transport/simple_slice_based_metadata.h +2 -2
  712. data/src/core/lib/transport/status_conversion.cc +2 -2
  713. data/src/core/lib/transport/status_conversion.h +1 -2
  714. data/src/core/lib/transport/timeout_encoding.cc +5 -5
  715. data/src/core/lib/transport/timeout_encoding.h +2 -2
  716. data/src/core/lib/transport/transport.cc +4 -8
  717. data/src/core/lib/transport/transport.h +80 -74
  718. data/src/core/lib/transport/transport_op_string.cc +1 -2
  719. data/src/core/lib/uri/uri_parser.cc +3 -3
  720. data/src/core/lib/uri/uri_parser.h +2 -2
  721. data/src/core/load_balancing/address_filtering.cc +2 -2
  722. data/src/core/load_balancing/address_filtering.h +2 -2
  723. data/src/core/load_balancing/backend_metric_data.h +2 -2
  724. data/src/core/load_balancing/backend_metric_parser.cc +2 -2
  725. data/src/core/load_balancing/backend_metric_parser.h +2 -2
  726. data/src/core/load_balancing/child_policy_handler.cc +14 -14
  727. data/src/core/load_balancing/child_policy_handler.h +2 -2
  728. data/src/core/load_balancing/delegating_helper.h +2 -3
  729. data/src/core/load_balancing/endpoint_list.cc +11 -13
  730. data/src/core/load_balancing/endpoint_list.h +16 -10
  731. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +29 -30
  732. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +20 -8
  733. data/src/core/load_balancing/grpclb/grpclb.cc +65 -70
  734. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +3 -3
  735. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.h +1 -2
  736. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +1 -2
  737. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +1 -2
  738. data/src/core/load_balancing/grpclb/load_balancer_api.cc +4 -6
  739. data/src/core/load_balancing/grpclb/load_balancer_api.h +2 -3
  740. data/src/core/load_balancing/health_check_client.cc +14 -18
  741. data/src/core/load_balancing/health_check_client.h +2 -2
  742. data/src/core/load_balancing/health_check_client_internal.h +1 -2
  743. data/src/core/load_balancing/lb_policy.cc +7 -10
  744. data/src/core/load_balancing/lb_policy.h +20 -5
  745. data/src/core/load_balancing/lb_policy_factory.h +3 -3
  746. data/src/core/load_balancing/lb_policy_registry.cc +5 -6
  747. data/src/core/load_balancing/lb_policy_registry.h +3 -3
  748. data/src/core/load_balancing/oob_backend_metric.cc +6 -9
  749. data/src/core/load_balancing/oob_backend_metric.h +2 -2
  750. data/src/core/load_balancing/oob_backend_metric_internal.h +1 -2
  751. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +36 -38
  752. data/src/core/load_balancing/outlier_detection/outlier_detection.h +5 -5
  753. data/src/core/load_balancing/pick_first/pick_first.cc +1141 -156
  754. data/src/core/load_balancing/priority/priority.cc +41 -38
  755. data/src/core/load_balancing/ring_hash/ring_hash.cc +45 -30
  756. data/src/core/load_balancing/ring_hash/ring_hash.h +5 -5
  757. data/src/core/load_balancing/rls/rls.cc +106 -99
  758. data/src/core/load_balancing/round_robin/round_robin.cc +43 -35
  759. data/src/core/load_balancing/subchannel_interface.h +1 -2
  760. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +4 -4
  761. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +2 -2
  762. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +79 -58
  763. data/src/core/load_balancing/weighted_target/weighted_target.cc +29 -32
  764. data/src/core/load_balancing/weighted_target/weighted_target.h +1 -1
  765. data/src/core/load_balancing/xds/cds.cc +25 -28
  766. data/src/core/load_balancing/xds/xds_cluster_impl.cc +28 -28
  767. data/src/core/load_balancing/xds/xds_cluster_manager.cc +17 -20
  768. data/src/core/load_balancing/xds/xds_override_host.cc +46 -47
  769. data/src/core/load_balancing/xds/xds_override_host.h +5 -5
  770. data/src/core/load_balancing/xds/xds_wrr_locality.cc +12 -15
  771. data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -10
  772. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +1 -2
  773. data/src/core/resolver/binder/binder_resolver.cc +7 -6
  774. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +8 -8
  775. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +2 -2
  776. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -3
  777. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -3
  778. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +36 -35
  779. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +20 -27
  780. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -7
  781. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +1 -1
  782. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -2
  783. data/src/core/resolver/dns/dns_resolver_plugin.cc +10 -10
  784. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +9 -14
  785. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +3 -3
  786. data/src/core/resolver/dns/event_engine/service_config_helper.cc +7 -7
  787. data/src/core/resolver/dns/event_engine/service_config_helper.h +2 -2
  788. data/src/core/resolver/dns/native/dns_resolver.cc +11 -13
  789. data/src/core/resolver/endpoint_addresses.cc +5 -5
  790. data/src/core/resolver/endpoint_addresses.h +2 -2
  791. data/src/core/resolver/fake/fake_resolver.cc +5 -5
  792. data/src/core/resolver/fake/fake_resolver.h +2 -3
  793. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +22 -23
  794. data/src/core/resolver/polling_resolver.cc +35 -40
  795. data/src/core/resolver/polling_resolver.h +1 -2
  796. data/src/core/resolver/resolver.cc +3 -7
  797. data/src/core/resolver/resolver.h +2 -4
  798. data/src/core/resolver/resolver_factory.h +3 -3
  799. data/src/core/resolver/resolver_registry.cc +11 -13
  800. data/src/core/resolver/resolver_registry.h +3 -3
  801. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +5 -6
  802. data/src/core/resolver/xds/xds_dependency_manager.cc +27 -27
  803. data/src/core/resolver/xds/xds_dependency_manager.h +7 -7
  804. data/src/core/resolver/xds/xds_resolver.cc +32 -39
  805. data/src/core/resolver/xds/xds_resolver_attributes.h +2 -2
  806. data/src/core/{lib/surface → server}/server.cc +306 -424
  807. data/src/core/{lib/surface → server}/server.h +43 -26
  808. data/src/core/{lib/channel → server}/server_call_tracer_filter.cc +16 -20
  809. data/src/core/{lib/channel → server}/server_call_tracer_filter.h +3 -3
  810. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector.h +6 -6
  811. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector_filter.cc +39 -40
  812. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector_filter.h +3 -3
  813. data/src/core/{lib/surface → server}/server_interface.h +6 -4
  814. data/src/core/{ext/xds → server}/xds_channel_stack_modifier.cc +4 -4
  815. data/src/core/{ext/xds → server}/xds_channel_stack_modifier.h +5 -6
  816. data/src/core/{ext/xds → server}/xds_server_config_fetcher.cc +24 -26
  817. data/src/core/service_config/service_config.h +2 -3
  818. data/src/core/service_config/service_config_call_data.h +15 -13
  819. data/src/core/service_config/service_config_channel_arg_filter.cc +12 -11
  820. data/src/core/service_config/service_config_impl.cc +7 -7
  821. data/src/core/service_config/service_config_impl.h +4 -4
  822. data/src/core/service_config/service_config_parser.cc +4 -8
  823. data/src/core/service_config/service_config_parser.h +3 -3
  824. data/src/core/{lib/channel → telemetry}/call_tracer.cc +25 -35
  825. data/src/core/{lib/channel → telemetry}/call_tracer.h +33 -11
  826. data/src/core/{lib/debug → telemetry}/histogram_view.cc +2 -2
  827. data/src/core/{lib/debug → telemetry}/histogram_view.h +5 -5
  828. data/src/core/telemetry/metrics.cc +178 -0
  829. data/src/core/telemetry/metrics.h +562 -0
  830. data/src/core/{lib/debug → telemetry}/stats.cc +3 -3
  831. data/src/core/{lib/debug → telemetry}/stats.h +7 -7
  832. data/src/core/{lib/debug → telemetry}/stats_data.cc +3 -3
  833. data/src/core/{lib/debug → telemetry}/stats_data.h +6 -6
  834. data/src/core/{lib/channel → telemetry}/tcp_tracer.h +5 -5
  835. data/src/core/tsi/alts/crypt/aes_gcm.cc +1 -2
  836. data/src/core/tsi/alts/crypt/gsec.cc +1 -2
  837. data/src/core/tsi/alts/crypt/gsec.h +1 -2
  838. data/src/core/tsi/alts/frame_protector/alts_counter.cc +1 -2
  839. data/src/core/tsi/alts/frame_protector/alts_counter.h +1 -2
  840. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +1 -2
  841. data/src/core/tsi/alts/frame_protector/alts_crypter.h +1 -2
  842. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -15
  843. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +2 -2
  844. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +1 -2
  845. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +1 -2
  846. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +1 -2
  847. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -2
  848. data/src/core/tsi/alts/frame_protector/frame_handler.cc +1 -2
  849. data/src/core/tsi/alts/frame_protector/frame_handler.h +2 -2
  850. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +63 -64
  851. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -2
  852. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +5 -4
  853. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -2
  854. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +54 -53
  855. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -2
  856. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +7 -5
  857. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -2
  858. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +4 -3
  859. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -2
  860. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +10 -8
  861. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +2 -2
  862. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +6 -5
  863. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +2 -2
  864. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +1 -2
  865. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +10 -6
  866. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +1 -2
  867. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +2 -2
  868. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -7
  869. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +2 -2
  870. data/src/core/tsi/fake_transport_security.cc +20 -21
  871. data/src/core/tsi/local_transport_security.cc +7 -7
  872. data/src/core/tsi/local_transport_security.h +1 -2
  873. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +6 -5
  874. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +1 -2
  875. data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -2
  876. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +15 -14
  877. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +1 -2
  878. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +3 -4
  879. data/src/core/tsi/ssl_transport_security.cc +96 -100
  880. data/src/core/tsi/ssl_transport_security.h +1 -2
  881. data/src/core/tsi/ssl_transport_security_utils.cc +85 -28
  882. data/src/core/tsi/ssl_transport_security_utils.h +12 -2
  883. data/src/core/tsi/ssl_types.h +2 -2
  884. data/src/core/tsi/transport_security.cc +1 -6
  885. data/src/core/tsi/transport_security.h +2 -4
  886. data/src/core/tsi/transport_security_grpc.cc +2 -2
  887. data/src/core/tsi/transport_security_grpc.h +1 -2
  888. data/src/core/tsi/transport_security_interface.h +2 -6
  889. data/src/core/{lib/gpr → util}/alloc.cc +3 -1
  890. data/src/core/{lib/gpr → util}/alloc.h +3 -3
  891. data/src/core/{lib/gpr → util}/android/log.cc +0 -19
  892. data/src/core/{lib/gpr → util}/atm.cc +1 -1
  893. data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +26 -26
  894. data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +9 -9
  895. data/src/core/{lib/http → util/http_client}/format_request.cc +2 -2
  896. data/src/core/{lib/http → util/http_client}/format_request.h +4 -4
  897. data/src/core/{lib/http → util/http_client}/httpcli.cc +12 -13
  898. data/src/core/{lib/http → util/http_client}/httpcli.h +5 -5
  899. data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +10 -10
  900. data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +3 -3
  901. data/src/core/{lib/http → util/http_client}/parser.cc +6 -7
  902. data/src/core/{lib/http → util/http_client}/parser.h +3 -5
  903. data/src/core/{lib → util}/json/json.h +3 -3
  904. data/src/core/{lib → util}/json/json_args.h +3 -3
  905. data/src/core/{lib → util}/json/json_channel_args.h +4 -4
  906. data/src/core/{lib → util}/json/json_object_loader.cc +1 -1
  907. data/src/core/{lib → util}/json/json_object_loader.h +5 -5
  908. data/src/core/{lib → util}/json/json_reader.cc +4 -3
  909. data/src/core/{lib → util}/json/json_reader.h +4 -4
  910. data/src/core/{lib → util}/json/json_util.cc +3 -3
  911. data/src/core/{lib → util}/json/json_util.h +4 -4
  912. data/src/core/{lib → util}/json/json_writer.cc +1 -1
  913. data/src/core/{lib → util}/json/json_writer.h +4 -4
  914. data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
  915. data/src/core/util/log.cc +167 -0
  916. data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
  917. data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
  918. data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
  919. data/src/core/{lib/gpr → util}/posix/sync.cc +25 -23
  920. data/src/core/{lib/gpr → util}/posix/time.cc +10 -7
  921. data/src/core/{lib/gpr → util}/posix/tmpfile.cc +5 -3
  922. data/src/core/{lib/gpr → util}/spinlock.h +3 -3
  923. data/src/core/{lib/gpr → util}/string.cc +2 -2
  924. data/src/core/{lib/gpr → util}/string.h +3 -3
  925. data/src/core/{lib/gpr → util}/sync.cc +5 -3
  926. data/src/core/{lib/gpr → util}/time.cc +10 -8
  927. data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
  928. data/src/core/{lib/gpr → util}/time_precise.h +3 -3
  929. data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
  930. data/src/core/{lib/gpr → util}/useful.h +3 -3
  931. data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
  932. data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
  933. data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
  934. data/src/core/{lib/gpr → util}/windows/sync.cc +3 -1
  935. data/src/core/{lib/gpr → util}/windows/time.cc +5 -2
  936. data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
  937. data/src/core/{ext/xds → xds/grpc}/certificate_provider_store.cc +5 -6
  938. data/src/core/{ext/xds → xds/grpc}/certificate_provider_store.h +8 -9
  939. data/src/core/{ext/xds → xds/grpc}/file_watcher_certificate_provider_factory.cc +5 -6
  940. data/src/core/{ext/xds → xds/grpc}/file_watcher_certificate_provider_factory.h +7 -8
  941. data/src/core/{ext/xds → xds/grpc}/upb_utils.h +5 -5
  942. data/src/core/{ext/xds → xds/grpc}/xds_audit_logger_registry.cc +4 -4
  943. data/src/core/{ext/xds → xds/grpc}/xds_audit_logger_registry.h +7 -7
  944. data/src/core/{ext/xds → xds/grpc}/xds_bootstrap_grpc.cc +7 -8
  945. data/src/core/{ext/xds → xds/grpc}/xds_bootstrap_grpc.h +14 -14
  946. data/src/core/{ext/xds → xds/grpc}/xds_certificate_provider.cc +5 -5
  947. data/src/core/{ext/xds → xds/grpc}/xds_certificate_provider.h +5 -6
  948. data/src/core/{ext/xds → xds/grpc}/xds_client_grpc.cc +51 -34
  949. data/src/core/{ext/xds → xds/grpc}/xds_client_grpc.h +10 -11
  950. data/src/core/{ext/xds → xds/grpc}/xds_cluster.cc +22 -14
  951. data/src/core/{ext/xds → xds/grpc}/xds_cluster.h +12 -13
  952. data/src/core/{ext/xds → xds/grpc}/xds_cluster_specifier_plugin.cc +6 -6
  953. data/src/core/{ext/xds → xds/grpc}/xds_cluster_specifier_plugin.h +7 -7
  954. data/src/core/{ext/xds → xds/grpc}/xds_common_types.cc +6 -7
  955. data/src/core/{ext/xds → xds/grpc}/xds_common_types.h +7 -7
  956. data/src/core/{ext/xds → xds/grpc}/xds_endpoint.cc +11 -12
  957. data/src/core/{ext/xds → xds/grpc}/xds_endpoint.h +9 -9
  958. data/src/core/{ext/xds → xds/grpc}/xds_health_status.cc +3 -3
  959. data/src/core/{ext/xds → xds/grpc}/xds_health_status.h +5 -5
  960. data/src/core/{ext/xds → xds/grpc}/xds_http_fault_filter.cc +6 -7
  961. data/src/core/{ext/xds → xds/grpc}/xds_http_fault_filter.h +8 -8
  962. data/src/core/{ext/xds → xds/grpc}/xds_http_filters.cc +8 -9
  963. data/src/core/{ext/xds → xds/grpc}/xds_http_filters.h +9 -9
  964. data/src/core/{ext/xds → xds/grpc}/xds_http_rbac_filter.cc +9 -10
  965. data/src/core/{ext/xds → xds/grpc}/xds_http_rbac_filter.h +8 -8
  966. data/src/core/{ext/xds → xds/grpc}/xds_http_stateful_session_filter.cc +7 -8
  967. data/src/core/{ext/xds → xds/grpc}/xds_http_stateful_session_filter.h +8 -8
  968. data/src/core/{ext/xds → xds/grpc}/xds_lb_policy_registry.cc +3 -4
  969. data/src/core/{ext/xds → xds/grpc}/xds_lb_policy_registry.h +7 -7
  970. data/src/core/{ext/xds → xds/grpc}/xds_listener.cc +12 -14
  971. data/src/core/{ext/xds → xds/grpc}/xds_listener.h +12 -12
  972. data/src/core/{ext/xds → xds/grpc}/xds_route_config.cc +23 -24
  973. data/src/core/{ext/xds → xds/grpc}/xds_route_config.h +11 -11
  974. data/src/core/{ext/xds → xds/grpc}/xds_routing.cc +6 -6
  975. data/src/core/{ext/xds → xds/grpc}/xds_routing.h +8 -8
  976. data/src/core/{ext/xds → xds/grpc}/xds_transport_grpc.cc +16 -16
  977. data/src/core/{ext/xds → xds/grpc}/xds_transport_grpc.h +7 -8
  978. data/src/core/{ext/xds → xds/xds_client}/xds_api.cc +9 -14
  979. data/src/core/{ext/xds → xds/xds_client}/xds_api.h +7 -7
  980. data/src/core/{ext/xds → xds/xds_client}/xds_bootstrap.cc +4 -4
  981. data/src/core/{ext/xds → xds/xds_client}/xds_bootstrap.h +6 -6
  982. data/src/core/{ext/xds → xds/xds_client}/xds_channel_args.h +3 -3
  983. data/src/core/{ext/xds → xds/xds_client}/xds_client.cc +60 -62
  984. data/src/core/{ext/xds → xds/xds_client}/xds_client.h +10 -14
  985. data/src/core/{ext/xds → xds/xds_client}/xds_client_stats.cc +23 -22
  986. data/src/core/{ext/xds → xds/xds_client}/xds_client_stats.h +8 -8
  987. data/src/core/{ext/xds → xds/xds_client}/xds_metrics.h +7 -5
  988. data/src/core/{ext/xds → xds/xds_client}/xds_resource_type.h +6 -6
  989. data/src/core/{ext/xds → xds/xds_client}/xds_resource_type_impl.h +7 -7
  990. data/src/core/{ext/xds → xds/xds_client}/xds_transport.h +6 -6
  991. data/src/ruby/bin/math_pb.rb +1 -22
  992. data/src/ruby/ext/grpc/rb_call.c +8 -1
  993. data/src/ruby/ext/grpc/rb_call_credentials.c +1 -0
  994. data/src/ruby/ext/grpc/rb_call_credentials.h +1 -0
  995. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  996. data/src/ruby/ext/grpc/rb_channel_credentials.c +1 -0
  997. data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
  998. data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
  999. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +130 -130
  1000. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +198 -197
  1001. data/src/ruby/ext/grpc/rb_server.c +40 -22
  1002. data/src/ruby/ext/grpc/rb_server_credentials.c +1 -0
  1003. data/src/ruby/ext/grpc/rb_server_credentials.h +1 -0
  1004. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +1 -0
  1005. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +1 -0
  1006. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +1 -0
  1007. data/src/ruby/lib/grpc/version.rb +1 -1
  1008. data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
  1009. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
  1010. data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
  1011. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
  1012. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
  1013. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
  1014. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
  1015. data/third_party/abseil-cpp/absl/log/check.h +209 -0
  1016. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +150 -0
  1017. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +118 -0
  1018. data/third_party/abseil-cpp/absl/log/internal/check_op.h +420 -0
  1019. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
  1020. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +13 -18
  1021. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +25 -10
  1022. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +3 -18
  1023. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +3 -2
  1024. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +1 -1
  1025. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +19 -15
  1026. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +7 -0
  1027. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.c +48 -66
  1028. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +7 -3
  1029. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +20 -28
  1030. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +9 -4
  1031. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +2 -2
  1032. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
  1033. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +4 -1
  1034. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.c +0 -15
  1035. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +7 -61
  1036. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +7 -7
  1037. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
  1038. data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1539 -0
  1039. data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
  1040. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +36 -20
  1041. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +3 -4
  1042. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
  1043. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +81 -60
  1044. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +41 -120
  1045. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +13 -13
  1046. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +7 -0
  1047. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c +137 -0
  1048. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c +120 -0
  1049. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +30 -0
  1050. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +3 -4
  1051. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +30 -0
  1052. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +1 -4
  1053. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +30 -0
  1054. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +1 -4
  1055. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +6 -7
  1056. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +21 -0
  1057. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +31 -7
  1058. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -2
  1059. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +1 -1
  1060. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +3 -3
  1061. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
  1062. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +46 -2
  1063. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +8 -5
  1064. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
  1065. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +1 -1
  1066. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +2 -2
  1067. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +14 -7
  1068. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +2 -1
  1069. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +0 -3
  1070. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +11 -7
  1071. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +5 -0
  1072. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +5 -1
  1073. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
  1074. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +2 -1
  1075. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +11 -11
  1076. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +22 -8
  1077. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +6 -4
  1078. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +3 -6
  1079. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +78 -29
  1080. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +4 -4
  1081. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +3 -3
  1082. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -4
  1083. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +7 -0
  1084. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -0
  1085. data/third_party/boringssl-with-bazel/src/crypto/internal.h +62 -27
  1086. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +1 -1
  1087. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +2 -1
  1088. data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -9
  1089. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -17
  1090. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +44 -41
  1091. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +13 -12
  1092. data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +7 -6
  1093. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +26 -33
  1094. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +1 -1
  1095. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +4 -5
  1096. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
  1097. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c +9 -4
  1098. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c +2 -2
  1099. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c +1 -1
  1100. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c +2 -0
  1101. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
  1102. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
  1103. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +21 -25
  1104. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +8 -25
  1105. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +2 -2
  1106. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +1 -6
  1107. data/third_party/boringssl-with-bazel/{err_data.c → src/gen/crypto/err_data.c} +487 -485
  1108. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -1
  1109. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +85 -42
  1110. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +12 -4
  1111. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +10 -11
  1112. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +17 -1
  1113. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -3
  1114. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +13 -0
  1115. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +25 -14
  1116. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +1 -0
  1117. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +15 -3
  1118. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +131 -0
  1119. data/third_party/boringssl-with-bazel/src/include/openssl/{kyber.h → experimental/kyber.h} +10 -0
  1120. data/third_party/boringssl-with-bazel/src/{crypto/spx/internal.h → include/openssl/experimental/spx.h} +24 -13
  1121. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +2 -2
  1122. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +63 -53
  1123. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +19 -10
  1124. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +26 -12
  1125. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +358 -102
  1126. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +10 -3
  1127. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +13 -10
  1128. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -2
  1129. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2931 -2453
  1130. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -8
  1131. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +4 -4
  1132. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
  1133. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +19 -18
  1134. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +3 -9
  1135. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +64 -58
  1136. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +1 -1
  1137. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +17 -7
  1138. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +69 -16
  1139. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +145 -114
  1140. data/third_party/boringssl-with-bazel/src/ssl/internal.h +243 -189
  1141. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +1 -1
  1142. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
  1143. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +59 -385
  1144. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +21 -19
  1145. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +423 -0
  1146. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +2 -2
  1147. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +2 -1
  1148. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +108 -81
  1149. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +116 -93
  1150. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +6 -14
  1151. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +1 -1
  1152. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +48 -116
  1153. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +21 -27
  1154. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +36 -3
  1155. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +53 -18
  1156. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +1 -1
  1157. metadata +207 -196
  1158. data/src/core/client_channel/client_channel_channelz.cc +0 -93
  1159. data/src/core/client_channel/client_channel_channelz.h +0 -85
  1160. data/src/core/ext/filters/deadline/deadline_filter.cc +0 -407
  1161. data/src/core/ext/filters/deadline/deadline_filter.h +0 -85
  1162. data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
  1163. data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
  1164. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
  1165. data/src/core/lib/channel/channel_stack_trace.cc +0 -19
  1166. data/src/core/lib/channel/channel_stack_trace.h +0 -24
  1167. data/src/core/lib/channel/context.h +0 -77
  1168. data/src/core/lib/channel/metrics.cc +0 -396
  1169. data/src/core/lib/channel/metrics.h +0 -406
  1170. data/src/core/lib/event_engine/trace.cc +0 -25
  1171. data/src/core/lib/gpr/log.cc +0 -166
  1172. data/src/core/lib/gpr/log_internal.h +0 -55
  1173. data/src/core/lib/iomgr/ev_windows.cc +0 -30
  1174. data/src/core/lib/promise/trace.cc +0 -20
  1175. data/src/core/lib/promise/trace.h +0 -24
  1176. data/src/core/lib/resource_quota/trace.cc +0 -19
  1177. data/src/core/lib/resource_quota/trace.h +0 -24
  1178. data/src/core/lib/security/transport/tsi_error.cc +0 -31
  1179. data/src/core/lib/security/transport/tsi_error.h +0 -30
  1180. data/src/core/lib/slice/slice_refcount.cc +0 -20
  1181. data/src/core/lib/surface/api_trace.cc +0 -25
  1182. data/src/core/lib/surface/call_trace.h +0 -24
  1183. data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
  1184. data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
  1185. data/src/core/lib/transport/batch_builder.cc +0 -170
  1186. data/src/core/lib/transport/batch_builder.h +0 -476
  1187. data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
  1188. data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
  1189. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
  1190. data/third_party/boringssl-with-bazel/src/include/openssl/pki/certificate.h +0 -83
  1191. data/third_party/boringssl-with-bazel/src/include/openssl/pki/signature_verify_cache.h +0 -41
  1192. /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
  1193. /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
  1194. /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
  1195. /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
  1196. /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
@@ -30,6 +30,7 @@
30
30
  #include <vector>
31
31
 
32
32
  #include "absl/cleanup/cleanup.h"
33
+ #include "absl/log/check.h"
33
34
  #include "absl/status/status.h"
34
35
  #include "absl/status/statusor.h"
35
36
  #include "absl/strings/cord.h"
@@ -49,8 +50,8 @@
49
50
  #include <grpc/support/string_util.h>
50
51
  #include <grpc/support/time.h>
51
52
 
53
+ #include "src/core/channelz/channel_trace.h"
52
54
  #include "src/core/client_channel/backup_poller.h"
53
- #include "src/core/client_channel/client_channel_channelz.h"
54
55
  #include "src/core/client_channel/client_channel_internal.h"
55
56
  #include "src/core/client_channel/client_channel_service_config.h"
56
57
  #include "src/core/client_channel/config_selector.h"
@@ -60,15 +61,13 @@
60
61
  #include "src/core/client_channel/retry_filter.h"
61
62
  #include "src/core/client_channel/subchannel.h"
62
63
  #include "src/core/client_channel/subchannel_interface_internal.h"
63
- #include "src/core/ext/filters/deadline/deadline_filter.h"
64
+ #include "src/core/handshaker/proxy_mapper_registry.h"
64
65
  #include "src/core/lib/channel/channel_args.h"
65
66
  #include "src/core/lib/channel/channel_stack.h"
66
- #include "src/core/lib/channel/channel_trace.h"
67
67
  #include "src/core/lib/channel/status_util.h"
68
68
  #include "src/core/lib/config/core_configuration.h"
69
69
  #include "src/core/lib/debug/trace.h"
70
70
  #include "src/core/lib/experiments/experiments.h"
71
- #include "src/core/lib/gpr/useful.h"
72
71
  #include "src/core/lib/gprpp/crash.h"
73
72
  #include "src/core/lib/gprpp/debug_location.h"
74
73
  #include "src/core/lib/gprpp/manual_constructor.h"
@@ -76,12 +75,10 @@
76
75
  #include "src/core/lib/gprpp/sync.h"
77
76
  #include "src/core/lib/gprpp/unique_type_name.h"
78
77
  #include "src/core/lib/gprpp/work_serializer.h"
79
- #include "src/core/lib/handshaker/proxy_mapper_registry.h"
80
78
  #include "src/core/lib/iomgr/exec_ctx.h"
81
79
  #include "src/core/lib/iomgr/polling_entity.h"
82
80
  #include "src/core/lib/iomgr/pollset_set.h"
83
81
  #include "src/core/lib/iomgr/resolved_address.h"
84
- #include "src/core/lib/json/json.h"
85
82
  #include "src/core/lib/promise/cancel_callback.h"
86
83
  #include "src/core/lib/promise/context.h"
87
84
  #include "src/core/lib/promise/latch.h"
@@ -105,6 +102,8 @@
105
102
  #include "src/core/resolver/resolver_registry.h"
106
103
  #include "src/core/service_config/service_config_call_data.h"
107
104
  #include "src/core/service_config/service_config_impl.h"
105
+ #include "src/core/util/json/json.h"
106
+ #include "src/core/util/useful.h"
108
107
 
109
108
  //
110
109
  // Client channel filter
@@ -114,10 +113,6 @@ namespace grpc_core {
114
113
 
115
114
  using internal::ClientChannelMethodParsedConfig;
116
115
 
117
- TraceFlag grpc_client_channel_trace(false, "client_channel");
118
- TraceFlag grpc_client_channel_call_trace(false, "client_channel_call");
119
- TraceFlag grpc_client_channel_lb_call_trace(false, "client_channel_lb_call");
120
-
121
116
  //
122
117
  // ClientChannelFilter::CallData definition
123
118
  //
@@ -160,7 +155,6 @@ class ClientChannelFilter::CallData {
160
155
  virtual Arena* arena() const = 0;
161
156
  virtual grpc_polling_entity* pollent() = 0;
162
157
  virtual grpc_metadata_batch* send_initial_metadata() = 0;
163
- virtual grpc_call_context_element* call_context() const = 0;
164
158
 
165
159
  // Helper function for CheckResolution(). Returns true if the call
166
160
  // can continue (i.e., there is a valid resolution result, or there is
@@ -210,22 +204,19 @@ class ClientChannelFilter::FilterBasedCallData final
210
204
  const grpc_call_element_args& args);
211
205
  ~FilterBasedCallData() override;
212
206
 
213
- grpc_call_element* elem() const { return deadline_state_.elem; }
214
- grpc_call_stack* owning_call() const { return deadline_state_.call_stack; }
215
- CallCombiner* call_combiner() const { return deadline_state_.call_combiner; }
207
+ grpc_call_element* elem() const { return elem_; }
208
+ grpc_call_stack* owning_call() const { return owning_call_; }
209
+ CallCombiner* call_combiner() const { return call_combiner_; }
216
210
 
217
211
  ClientChannelFilter* chand() const override {
218
212
  return static_cast<ClientChannelFilter*>(elem()->channel_data);
219
213
  }
220
- Arena* arena() const override { return deadline_state_.arena; }
214
+ Arena* arena() const override { return arena_; }
221
215
  grpc_polling_entity* pollent() override { return pollent_; }
222
216
  grpc_metadata_batch* send_initial_metadata() override {
223
217
  return pending_batches_[0]
224
218
  ->payload->send_initial_metadata.send_initial_metadata;
225
219
  }
226
- grpc_call_context_element* call_context() const override {
227
- return call_context_;
228
- }
229
220
 
230
221
  // Returns the index into pending_batches_ to be used for batch.
231
222
  static size_t GetBatchIndex(grpc_transport_stream_op_batch* batch);
@@ -270,10 +261,7 @@ class ClientChannelFilter::FilterBasedCallData final
270
261
  void ResetDeadline(Duration timeout) override {
271
262
  const Timestamp per_method_deadline =
272
263
  Timestamp::FromCycleCounterRoundUp(call_start_time_) + timeout;
273
- if (per_method_deadline < deadline_) {
274
- deadline_ = per_method_deadline;
275
- grpc_deadline_state_reset(&deadline_state_, deadline_);
276
- }
264
+ arena_->GetContext<Call>()->UpdateDeadline(per_method_deadline);
277
265
  }
278
266
 
279
267
  void CreateDynamicCall();
@@ -282,12 +270,13 @@ class ClientChannelFilter::FilterBasedCallData final
282
270
  void* arg, grpc_error_handle error);
283
271
 
284
272
  grpc_slice path_; // Request path.
285
- grpc_call_context_element* call_context_;
286
273
  gpr_cycle_counter call_start_time_;
287
274
  Timestamp deadline_;
288
275
 
289
- // State for handling deadlines.
290
- grpc_deadline_state deadline_state_;
276
+ Arena* const arena_;
277
+ grpc_call_element* const elem_;
278
+ grpc_call_stack* const owning_call_;
279
+ CallCombiner* const call_combiner_;
291
280
 
292
281
  grpc_polling_entity* pollent_ = nullptr;
293
282
 
@@ -311,121 +300,12 @@ class ClientChannelFilter::FilterBasedCallData final
311
300
  grpc_error_handle cancel_error_;
312
301
  };
313
302
 
314
- class ClientChannelFilter::PromiseBasedCallData final
315
- : public ClientChannelFilter::CallData {
316
- public:
317
- explicit PromiseBasedCallData(ClientChannelFilter* chand) : chand_(chand) {}
318
-
319
- ~PromiseBasedCallData() override {
320
- if (was_queued_ && client_initial_metadata_ != nullptr) {
321
- MutexLock lock(&chand_->resolution_mu_);
322
- RemoveCallFromResolverQueuedCallsLocked();
323
- chand_->resolver_queued_calls_.erase(this);
324
- }
325
- }
326
-
327
- ArenaPromise<absl::StatusOr<CallArgs>> MakeNameResolutionPromise(
328
- CallArgs call_args) {
329
- pollent_ = NowOrNever(call_args.polling_entity->WaitAndCopy()).value();
330
- client_initial_metadata_ = std::move(call_args.client_initial_metadata);
331
- // If we're still in IDLE, we need to start resolving.
332
- if (GPR_UNLIKELY(chand_->CheckConnectivityState(false) ==
333
- GRPC_CHANNEL_IDLE)) {
334
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
335
- gpr_log(GPR_INFO, "chand=%p calld=%p: %striggering exit idle", chand_,
336
- this, GetContext<Activity>()->DebugTag().c_str());
337
- }
338
- // Bounce into the control plane work serializer to start resolving.
339
- GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ExitIdle");
340
- chand_->work_serializer_->Run(
341
- [chand = chand_]()
342
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
343
- chand->CheckConnectivityState(/*try_to_connect=*/true);
344
- GRPC_CHANNEL_STACK_UNREF(chand->owning_stack_, "ExitIdle");
345
- },
346
- DEBUG_LOCATION);
347
- }
348
- return [this, call_args = std::move(
349
- call_args)]() mutable -> Poll<absl::StatusOr<CallArgs>> {
350
- auto result = CheckResolution(was_queued_);
351
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
352
- gpr_log(GPR_INFO, "chand=%p calld=%p: %sCheckResolution returns %s",
353
- chand_, this, GetContext<Activity>()->DebugTag().c_str(),
354
- result.has_value() ? result->ToString().c_str() : "Pending");
355
- }
356
- if (!result.has_value()) return Pending{};
357
- if (!result->ok()) return *result;
358
- call_args.client_initial_metadata = std::move(client_initial_metadata_);
359
- return std::move(call_args);
360
- };
361
- }
362
-
363
- private:
364
- ClientChannelFilter* chand() const override { return chand_; }
365
- Arena* arena() const override { return GetContext<Arena>(); }
366
- grpc_polling_entity* pollent() override { return &pollent_; }
367
- grpc_metadata_batch* send_initial_metadata() override {
368
- return client_initial_metadata_.get();
369
- }
370
- grpc_call_context_element* call_context() const override {
371
- return GetContext<grpc_call_context_element>();
372
- }
373
-
374
- void OnAddToQueueLocked() override
375
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::resolution_mu_) {
376
- waker_ = GetContext<Activity>()->MakeNonOwningWaker();
377
- was_queued_ = true;
378
- }
379
-
380
- void RetryCheckResolutionLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
381
- &ClientChannelFilter::resolution_mu_) override {
382
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
383
- gpr_log(GPR_INFO, "chand=%p calld=%p: RetryCheckResolutionLocked(): %s",
384
- chand_, this, waker_.ActivityDebugTag().c_str());
385
- }
386
- waker_.WakeupAsync();
387
- }
388
-
389
- void ResetDeadline(Duration timeout) override {
390
- CallContext* call_context = GetContext<CallContext>();
391
- const Timestamp per_method_deadline =
392
- Timestamp::FromCycleCounterRoundUp(call_context->call_start_time()) +
393
- timeout;
394
- call_context->UpdateDeadline(per_method_deadline);
395
- }
396
-
397
- ClientChannelFilter* chand_;
398
- grpc_polling_entity pollent_;
399
- ClientMetadataHandle client_initial_metadata_;
400
- bool was_queued_ = false;
401
- Waker waker_ ABSL_GUARDED_BY(&ClientChannelFilter::resolution_mu_);
402
- };
403
-
404
303
  //
405
304
  // Filter vtable
406
305
  //
407
306
 
408
- const grpc_channel_filter ClientChannelFilter::kFilterVtableWithPromises = {
307
+ const grpc_channel_filter ClientChannelFilter::kFilter = {
409
308
  ClientChannelFilter::FilterBasedCallData::StartTransportStreamOpBatch,
410
- ClientChannelFilter::MakeCallPromise,
411
- /* init_call: */ nullptr,
412
- ClientChannelFilter::StartTransportOp,
413
- sizeof(ClientChannelFilter::FilterBasedCallData),
414
- ClientChannelFilter::FilterBasedCallData::Init,
415
- ClientChannelFilter::FilterBasedCallData::SetPollent,
416
- ClientChannelFilter::FilterBasedCallData::Destroy,
417
- sizeof(ClientChannelFilter),
418
- ClientChannelFilter::Init,
419
- grpc_channel_stack_no_post_init,
420
- ClientChannelFilter::Destroy,
421
- ClientChannelFilter::GetChannelInfo,
422
- "client-channel",
423
- };
424
-
425
- const grpc_channel_filter ClientChannelFilter::kFilterVtableWithoutPromises = {
426
- ClientChannelFilter::FilterBasedCallData::StartTransportStreamOpBatch,
427
- nullptr,
428
- /* init_call: */ nullptr,
429
309
  ClientChannelFilter::StartTransportOp,
430
310
  sizeof(ClientChannelFilter::FilterBasedCallData),
431
311
  ClientChannelFilter::FilterBasedCallData::Init,
@@ -445,10 +325,9 @@ const grpc_channel_filter ClientChannelFilter::kFilterVtableWithoutPromises = {
445
325
 
446
326
  namespace {
447
327
 
448
- ClientChannelServiceConfigCallData* GetServiceConfigCallData(
449
- grpc_call_context_element* context) {
450
- return static_cast<ClientChannelServiceConfigCallData*>(
451
- context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
328
+ ClientChannelServiceConfigCallData* GetServiceConfigCallData(Arena* arena) {
329
+ return DownCast<ClientChannelServiceConfigCallData*>(
330
+ arena->GetContext<ServiceConfigCallData>());
452
331
  }
453
332
 
454
333
  class DynamicTerminationFilter final {
@@ -459,8 +338,8 @@ class DynamicTerminationFilter final {
459
338
 
460
339
  static grpc_error_handle Init(grpc_channel_element* elem,
461
340
  grpc_channel_element_args* args) {
462
- GPR_ASSERT(args->is_last);
463
- GPR_ASSERT(elem->filter == &kFilterVtable);
341
+ CHECK(args->is_last);
342
+ CHECK(elem->filter == &kFilterVtable);
464
343
  new (elem->channel_data) DynamicTerminationFilter(args->channel_args);
465
344
  return absl::OkStatus();
466
345
  }
@@ -476,19 +355,6 @@ class DynamicTerminationFilter final {
476
355
  static void GetChannelInfo(grpc_channel_element* /*elem*/,
477
356
  const grpc_channel_info* /*info*/) {}
478
357
 
479
- static ArenaPromise<ServerMetadataHandle> MakeCallPromise(
480
- grpc_channel_element* elem, CallArgs call_args, NextPromiseFactory) {
481
- auto* chand = static_cast<DynamicTerminationFilter*>(elem->channel_data);
482
- return chand->chand_->CreateLoadBalancedCallPromise(
483
- std::move(call_args),
484
- []() {
485
- auto* service_config_call_data =
486
- GetServiceConfigCallData(GetContext<grpc_call_context_element>());
487
- service_config_call_data->Commit();
488
- },
489
- /*is_transparent_retry=*/false);
490
- }
491
-
492
358
  private:
493
359
  explicit DynamicTerminationFilter(const ChannelArgs& args)
494
360
  : chand_(args.GetObject<ClientChannelFilter>()) {}
@@ -532,21 +398,18 @@ class DynamicTerminationFilter::CallData final {
532
398
  auto* calld = static_cast<CallData*>(elem->call_data);
533
399
  auto* chand = static_cast<DynamicTerminationFilter*>(elem->channel_data);
534
400
  ClientChannelFilter* client_channel = chand->chand_;
535
- grpc_call_element_args args = {calld->owning_call_, nullptr,
536
- calld->call_context_, calld->path_,
537
- /*start_time=*/0, calld->deadline_,
538
- calld->arena_, calld->call_combiner_};
539
- auto* service_config_call_data =
540
- GetServiceConfigCallData(calld->call_context_);
401
+ grpc_call_element_args args = {calld->owning_call_, nullptr,
402
+ calld->path_,
403
+ /*start_time=*/0, calld->deadline_,
404
+ calld->arena_, calld->call_combiner_};
405
+ auto* service_config_call_data = GetServiceConfigCallData(calld->arena_);
541
406
  calld->lb_call_ = client_channel->CreateLoadBalancedCall(
542
407
  args, pollent, nullptr,
543
408
  [service_config_call_data]() { service_config_call_data->Commit(); },
544
409
  /*is_transparent_retry=*/false);
545
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
546
- gpr_log(GPR_INFO,
547
- "chand=%p dynamic_termination_calld=%p: create lb_call=%p", chand,
548
- client_channel, calld->lb_call_.get());
549
- }
410
+ GRPC_TRACE_LOG(client_channel_call, INFO)
411
+ << "chand=" << chand << " dynamic_termination_calld=" << client_channel
412
+ << ": create lb_call=" << calld->lb_call_.get();
550
413
  }
551
414
 
552
415
  private:
@@ -555,8 +418,7 @@ class DynamicTerminationFilter::CallData final {
555
418
  deadline_(args.deadline),
556
419
  arena_(args.arena),
557
420
  owning_call_(args.call_stack),
558
- call_combiner_(args.call_combiner),
559
- call_context_(args.context) {}
421
+ call_combiner_(args.call_combiner) {}
560
422
 
561
423
  ~CallData() { CSliceUnref(path_); }
562
424
 
@@ -565,15 +427,12 @@ class DynamicTerminationFilter::CallData final {
565
427
  Arena* arena_;
566
428
  grpc_call_stack* owning_call_;
567
429
  CallCombiner* call_combiner_;
568
- grpc_call_context_element* call_context_;
569
430
 
570
431
  OrphanablePtr<ClientChannelFilter::FilterBasedLoadBalancedCall> lb_call_;
571
432
  };
572
433
 
573
434
  const grpc_channel_filter DynamicTerminationFilter::kFilterVtable = {
574
435
  DynamicTerminationFilter::CallData::StartTransportStreamOpBatch,
575
- DynamicTerminationFilter::MakeCallPromise,
576
- /* init_call: */ nullptr,
577
436
  DynamicTerminationFilter::StartTransportOp,
578
437
  sizeof(DynamicTerminationFilter::CallData),
579
438
  DynamicTerminationFilter::CallData::Init,
@@ -601,9 +460,8 @@ class ClientChannelFilter::ResolverResultHandler final
601
460
  }
602
461
 
603
462
  ~ResolverResultHandler() override {
604
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
605
- gpr_log(GPR_INFO, "chand=%p: resolver shutdown complete", chand_);
606
- }
463
+ GRPC_TRACE_LOG(client_channel, INFO)
464
+ << "chand=" << chand_ << ": resolver shutdown complete";
607
465
  GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ResolverResultHandler");
608
466
  }
609
467
 
@@ -633,18 +491,18 @@ class ClientChannelFilter::SubchannelWrapper final
633
491
  public:
634
492
  SubchannelWrapper(ClientChannelFilter* chand,
635
493
  RefCountedPtr<Subchannel> subchannel)
636
- : SubchannelInterface(GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)
494
+ : SubchannelInterface(GRPC_TRACE_FLAG_ENABLED(client_channel)
637
495
  ? "SubchannelWrapper"
638
496
  : nullptr),
639
497
  chand_(chand),
640
498
  subchannel_(std::move(subchannel)) {
641
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
642
- gpr_log(GPR_INFO,
643
- "chand=%p: creating subchannel wrapper %p for subchannel %p",
644
- chand, this, subchannel_.get());
645
- }
499
+ GRPC_TRACE_LOG(client_channel, INFO)
500
+ << "chand=" << chand << ": creating subchannel wrapper " << this
501
+ << " for subchannel " << subchannel_.get();
646
502
  GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "SubchannelWrapper");
647
- GPR_DEBUG_ASSERT(chand_->work_serializer_->RunningInWorkSerializer());
503
+ #ifndef NDEBUG
504
+ DCHECK(chand_->work_serializer_->RunningInWorkSerializer());
505
+ #endif
648
506
  if (chand_->channelz_node_ != nullptr) {
649
507
  auto* subchannel_node = subchannel_->channelz_node();
650
508
  if (subchannel_node != nullptr) {
@@ -661,18 +519,16 @@ class ClientChannelFilter::SubchannelWrapper final
661
519
  }
662
520
 
663
521
  ~SubchannelWrapper() override {
664
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
665
- gpr_log(GPR_INFO,
666
- "chand=%p: destroying subchannel wrapper %p for subchannel %p",
667
- chand_, this, subchannel_.get());
668
- }
522
+ GRPC_TRACE_LOG(client_channel, INFO)
523
+ << "chand=" << chand_ << ": destroying subchannel wrapper " << this
524
+ << "for subchannel " << subchannel_.get();
669
525
  if (!IsWorkSerializerDispatchEnabled()) {
670
526
  chand_->subchannel_wrappers_.erase(this);
671
527
  if (chand_->channelz_node_ != nullptr) {
672
528
  auto* subchannel_node = subchannel_->channelz_node();
673
529
  if (subchannel_node != nullptr) {
674
530
  auto it = chand_->subchannel_refcount_map_.find(subchannel_.get());
675
- GPR_ASSERT(it != chand_->subchannel_refcount_map_.end());
531
+ CHECK(it != chand_->subchannel_refcount_map_.end());
676
532
  --it->second;
677
533
  if (it->second == 0) {
678
534
  chand_->channelz_node_->RemoveChildSubchannel(
@@ -699,7 +555,7 @@ class ClientChannelFilter::SubchannelWrapper final
699
555
  if (subchannel_node != nullptr) {
700
556
  auto it =
701
557
  chand_->subchannel_refcount_map_.find(subchannel_.get());
702
- GPR_ASSERT(it != chand_->subchannel_refcount_map_.end());
558
+ CHECK(it != chand_->subchannel_refcount_map_.end());
703
559
  --it->second;
704
560
  if (it->second == 0) {
705
561
  chand_->channelz_node_->RemoveChildSubchannel(
@@ -717,7 +573,7 @@ class ClientChannelFilter::SubchannelWrapper final
717
573
  std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
718
574
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
719
575
  auto& watcher_wrapper = watcher_map_[watcher.get()];
720
- GPR_ASSERT(watcher_wrapper == nullptr);
576
+ CHECK_EQ(watcher_wrapper, nullptr);
721
577
  watcher_wrapper = new WatcherWrapper(
722
578
  std::move(watcher),
723
579
  RefAsSubclass<SubchannelWrapper>(DEBUG_LOCATION, "WatcherWrapper"));
@@ -729,7 +585,7 @@ class ClientChannelFilter::SubchannelWrapper final
729
585
  void CancelConnectivityStateWatch(ConnectivityStateWatcherInterface* watcher)
730
586
  override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
731
587
  auto it = watcher_map_.find(watcher);
732
- GPR_ASSERT(it != watcher_map_.end());
588
+ CHECK(it != watcher_map_.end());
733
589
  subchannel_->CancelConnectivityStateWatch(it->second);
734
590
  watcher_map_.erase(it);
735
591
  }
@@ -746,7 +602,7 @@ class ClientChannelFilter::SubchannelWrapper final
746
602
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
747
603
  static_cast<InternalSubchannelDataWatcherInterface*>(watcher.get())
748
604
  ->SetSubchannel(subchannel_.get());
749
- GPR_ASSERT(data_watchers_.insert(std::move(watcher)).second);
605
+ CHECK(data_watchers_.insert(std::move(watcher)).second);
750
606
  }
751
607
 
752
608
  void CancelDataWatcher(DataWatcherInterface* watcher) override
@@ -798,12 +654,11 @@ class ClientChannelFilter::SubchannelWrapper final
798
654
  void OnConnectivityStateChange(
799
655
  RefCountedPtr<ConnectivityStateWatcherInterface> self,
800
656
  grpc_connectivity_state state, const absl::Status& status) override {
801
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
802
- gpr_log(GPR_INFO,
803
- "chand=%p: connectivity change for subchannel wrapper %p "
804
- "subchannel %p; hopping into work_serializer",
805
- parent_->chand_, parent_.get(), parent_->subchannel_.get());
806
- }
657
+ GRPC_TRACE_LOG(client_channel, INFO)
658
+ << "chand=" << parent_->chand_
659
+ << ": connectivity change for subchannel wrapper " << parent_.get()
660
+ << " subchannel " << parent_->subchannel_.get()
661
+ << "hopping into work_serializer";
807
662
  self.release(); // Held by callback.
808
663
  parent_->chand_->work_serializer_->Run(
809
664
  [this, state, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
@@ -822,15 +677,13 @@ class ClientChannelFilter::SubchannelWrapper final
822
677
  void ApplyUpdateInControlPlaneWorkSerializer(grpc_connectivity_state state,
823
678
  const absl::Status& status)
824
679
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
825
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
826
- gpr_log(GPR_INFO,
827
- "chand=%p: processing connectivity change in work serializer "
828
- "for subchannel wrapper %p subchannel %p watcher=%p "
829
- "state=%s status=%s",
830
- parent_->chand_, parent_.get(), parent_->subchannel_.get(),
831
- watcher_.get(), ConnectivityStateName(state),
832
- status.ToString().c_str());
833
- }
680
+ GRPC_TRACE_LOG(client_channel, INFO)
681
+ << "chand=" << parent_->chand_
682
+ << ": processing connectivity change in work serializer for "
683
+ "subchannel wrapper "
684
+ << parent_.get() << " subchannel " << parent_->subchannel_.get()
685
+ << " watcher=" << watcher_.get()
686
+ << " state=" << ConnectivityStateName(state) << " status=" << status;
834
687
  absl::optional<absl::Cord> keepalive_throttling =
835
688
  status.GetPayload(kKeepaliveThrottlingKey);
836
689
  if (keepalive_throttling.has_value()) {
@@ -839,10 +692,10 @@ class ClientChannelFilter::SubchannelWrapper final
839
692
  &new_keepalive_time)) {
840
693
  if (new_keepalive_time > parent_->chand_->keepalive_time_) {
841
694
  parent_->chand_->keepalive_time_ = new_keepalive_time;
842
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
843
- gpr_log(GPR_INFO, "chand=%p: throttling keepalive time to %d",
844
- parent_->chand_, parent_->chand_->keepalive_time_);
845
- }
695
+ GRPC_TRACE_LOG(client_channel, INFO)
696
+ << "chand=" << parent_->chand_
697
+ << ": throttling keepalive time to "
698
+ << parent_->chand_->keepalive_time_;
846
699
  // Propagate the new keepalive time to all subchannels. This is so
847
700
  // that new transports created by any subchannel (and not just the
848
701
  // subchannel that received the GOAWAY), use the new keepalive time.
@@ -922,7 +775,7 @@ ClientChannelFilter::ExternalConnectivityWatcher::ExternalConnectivityWatcher(
922
775
  {
923
776
  MutexLock lock(&chand_->external_watchers_mu_);
924
777
  // Will be deleted when the watch is complete.
925
- GPR_ASSERT(chand->external_watchers_[on_complete] == nullptr);
778
+ CHECK(chand->external_watchers_[on_complete] == nullptr);
926
779
  // Store a ref to the watcher in the external_watchers_ map.
927
780
  chand->external_watchers_[on_complete] =
928
781
  RefAsSubclass<ExternalConnectivityWatcher>(
@@ -1107,7 +960,7 @@ class ClientChannelFilter::ClientChannelControlHelper final
1107
960
  const ChannelArgs& args) override
1108
961
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
1109
962
  if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
1110
- ChannelArgs subchannel_args = ClientChannelFilter::MakeSubchannelArgs(
963
+ ChannelArgs subchannel_args = Subchannel::MakeSubchannelArgs(
1111
964
  args, per_address_args, chand_->subchannel_pool_,
1112
965
  chand_->default_authority_);
1113
966
  // Create subchannel.
@@ -1125,14 +978,13 @@ class ClientChannelFilter::ClientChannelControlHelper final
1125
978
  RefCountedPtr<LoadBalancingPolicy::SubchannelPicker> picker)
1126
979
  override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
1127
980
  if (chand_->resolver_ == nullptr) return; // Shutting down.
1128
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1129
- const char* extra = chand_->disconnect_error_.ok()
1130
- ? ""
1131
- : " (ignoring -- channel shutting down)";
1132
- gpr_log(GPR_INFO, "chand=%p: update: state=%s status=(%s) picker=%p%s",
1133
- chand_, ConnectivityStateName(state), status.ToString().c_str(),
1134
- picker.get(), extra);
1135
- }
981
+ GRPC_TRACE_LOG(client_channel, INFO)
982
+ << "chand=" << chand_
983
+ << ": update: state=" << ConnectivityStateName(state) << " status=("
984
+ << status << ") picker=" << picker.get()
985
+ << (chand_->disconnect_error_.ok()
986
+ ? ""
987
+ : " (ignoring -- channel shutting down)");
1136
988
  // Do update only if not shutting down.
1137
989
  if (chand_->disconnect_error_.ok()) {
1138
990
  chand_->UpdateStateAndPickerLocked(state, status, "helper",
@@ -1143,9 +995,8 @@ class ClientChannelFilter::ClientChannelControlHelper final
1143
995
  void RequestReresolution() override
1144
996
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
1145
997
  if (chand_->resolver_ == nullptr) return; // Shutting down.
1146
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1147
- gpr_log(GPR_INFO, "chand=%p: started name re-resolving", chand_);
1148
- }
998
+ GRPC_TRACE_LOG(client_channel, INFO)
999
+ << "chand=" << chand_ << ": started name re-resolving";
1149
1000
  chand_->resolver_->RequestReresolutionLocked();
1150
1001
  }
1151
1002
 
@@ -1200,9 +1051,8 @@ class ClientChannelFilter::ClientChannelControlHelper final
1200
1051
 
1201
1052
  grpc_error_handle ClientChannelFilter::Init(grpc_channel_element* elem,
1202
1053
  grpc_channel_element_args* args) {
1203
- GPR_ASSERT(args->is_last);
1204
- GPR_ASSERT(elem->filter == &kFilterVtableWithPromises ||
1205
- elem->filter == &kFilterVtableWithoutPromises);
1054
+ CHECK(args->is_last);
1055
+ CHECK(elem->filter == &kFilter);
1206
1056
  grpc_error_handle error;
1207
1057
  new (elem->channel_data) ClientChannelFilter(args, &error);
1208
1058
  return error;
@@ -1228,9 +1078,6 @@ RefCountedPtr<SubchannelPoolInterface> GetSubchannelPool(
1228
1078
  ClientChannelFilter::ClientChannelFilter(grpc_channel_element_args* args,
1229
1079
  grpc_error_handle* error)
1230
1080
  : channel_args_(args->channel_args),
1231
- deadline_checking_enabled_(
1232
- channel_args_.GetBool(GRPC_ARG_ENABLE_DEADLINE_CHECKS)
1233
- .value_or(!channel_args_.WantMinimalStack())),
1234
1081
  owning_stack_(args->channel_stack),
1235
1082
  client_channel_factory_(channel_args_.GetObject<ClientChannelFactory>()),
1236
1083
  channelz_node_(channel_args_.GetObject<channelz::ChannelNode>()),
@@ -1241,10 +1088,9 @@ ClientChannelFilter::ClientChannelFilter(grpc_channel_element_args* args,
1241
1088
  std::make_shared<WorkSerializer>(*args->channel_stack->event_engine)),
1242
1089
  state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
1243
1090
  subchannel_pool_(GetSubchannelPool(channel_args_)) {
1244
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1245
- gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
1246
- this, owning_stack_);
1247
- }
1091
+ GRPC_TRACE_LOG(client_channel, INFO)
1092
+ << "chand=" << this << ": creating client_channel for channel stack "
1093
+ << owning_stack_;
1248
1094
  // Start backup polling.
1249
1095
  grpc_client_channel_start_backup_polling(interested_parties_);
1250
1096
  // Check client channel factory.
@@ -1313,30 +1159,14 @@ ClientChannelFilter::ClientChannelFilter(grpc_channel_element_args* args,
1313
1159
  }
1314
1160
 
1315
1161
  ClientChannelFilter::~ClientChannelFilter() {
1316
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1317
- gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
1318
- }
1162
+ GRPC_TRACE_LOG(client_channel, INFO)
1163
+ << "chand=" << this << ": destroying channel";
1319
1164
  DestroyResolverAndLbPolicyLocked();
1320
1165
  // Stop backup polling.
1321
1166
  grpc_client_channel_stop_backup_polling(interested_parties_);
1322
1167
  grpc_pollset_set_destroy(interested_parties_);
1323
1168
  }
1324
1169
 
1325
- ArenaPromise<ServerMetadataHandle> ClientChannelFilter::MakeCallPromise(
1326
- grpc_channel_element* elem, CallArgs call_args, NextPromiseFactory) {
1327
- auto* chand = static_cast<ClientChannelFilter*>(elem->channel_data);
1328
- // TODO(roth): Is this the right lifetime story for calld?
1329
- auto* calld = GetContext<Arena>()->ManagedNew<PromiseBasedCallData>(chand);
1330
- return TrySeq(
1331
- // Name resolution.
1332
- calld->MakeNameResolutionPromise(std::move(call_args)),
1333
- // Dynamic filter stack.
1334
- [calld](CallArgs call_args) mutable {
1335
- return calld->dynamic_filters()->channel_stack()->MakeClientCallPromise(
1336
- std::move(call_args));
1337
- });
1338
- }
1339
-
1340
1170
  OrphanablePtr<ClientChannelFilter::FilterBasedLoadBalancedCall>
1341
1171
  ClientChannelFilter::CreateLoadBalancedCall(
1342
1172
  const grpc_call_element_args& args, grpc_polling_entity* pollent,
@@ -1349,42 +1179,6 @@ ClientChannelFilter::CreateLoadBalancedCall(
1349
1179
  std::move(on_commit), is_transparent_retry));
1350
1180
  }
1351
1181
 
1352
- ArenaPromise<ServerMetadataHandle>
1353
- ClientChannelFilter::CreateLoadBalancedCallPromise(
1354
- CallArgs call_args, absl::AnyInvocable<void()> on_commit,
1355
- bool is_transparent_retry) {
1356
- OrphanablePtr<PromiseBasedLoadBalancedCall> lb_call(
1357
- GetContext<Arena>()->New<PromiseBasedLoadBalancedCall>(
1358
- this, std::move(on_commit), is_transparent_retry));
1359
- auto* call_ptr = lb_call.get();
1360
- return call_ptr->MakeCallPromise(std::move(call_args), std::move(lb_call));
1361
- }
1362
-
1363
- ChannelArgs ClientChannelFilter::MakeSubchannelArgs(
1364
- const ChannelArgs& channel_args, const ChannelArgs& address_args,
1365
- const RefCountedPtr<SubchannelPoolInterface>& subchannel_pool,
1366
- const std::string& channel_default_authority) {
1367
- // Note that we start with the channel-level args and then apply the
1368
- // per-address args, so that if a value is present in both, the one
1369
- // in the channel-level args is used. This is particularly important
1370
- // for the GRPC_ARG_DEFAULT_AUTHORITY arg, which we want to allow
1371
- // resolvers to set on a per-address basis only if the application
1372
- // did not explicitly set it at the channel level.
1373
- return channel_args.UnionWith(address_args)
1374
- .SetObject(subchannel_pool)
1375
- // If we haven't already set the default authority arg (i.e., it
1376
- // was not explicitly set by the application nor overridden by
1377
- // the resolver), add it from the channel's default.
1378
- .SetIfUnset(GRPC_ARG_DEFAULT_AUTHORITY, channel_default_authority)
1379
- // Remove channel args that should not affect subchannel
1380
- // uniqueness.
1381
- .Remove(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME)
1382
- .Remove(GRPC_ARG_INHIBIT_HEALTH_CHECKING)
1383
- .Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE)
1384
- // Remove all keys with the no-subchannel prefix.
1385
- .RemoveAllKeysWithPrefix(GRPC_ARG_NO_SUBCHANNEL_PREFIX);
1386
- }
1387
-
1388
1182
  void ClientChannelFilter::ReprocessQueuedResolverCalls() {
1389
1183
  for (CallData* calld : resolver_queued_calls_) {
1390
1184
  calld->RemoveCallFromResolverQueuedCallsLocked();
@@ -1448,7 +1242,7 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
1448
1242
  // - A channel arg, in which case we check that the specified policy exists
1449
1243
  // and accepts an empty config. If not, we revert to using pick_first
1450
1244
  // lb_policy
1451
- GPR_ASSERT(lb_policy_config.ok());
1245
+ CHECK(lb_policy_config.ok());
1452
1246
  return std::move(*lb_policy_config);
1453
1247
  }
1454
1248
 
@@ -1458,9 +1252,8 @@ void ClientChannelFilter::OnResolverResultChangedLocked(
1458
1252
  Resolver::Result result) {
1459
1253
  // Handle race conditions.
1460
1254
  if (resolver_ == nullptr) return;
1461
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1462
- gpr_log(GPR_INFO, "chand=%p: got resolver result", this);
1463
- }
1255
+ GRPC_TRACE_LOG(client_channel, INFO)
1256
+ << "chand=" << this << ": got resolver result";
1464
1257
  // Grab resolver result health callback.
1465
1258
  auto resolver_callback = std::move(result.result_health_callback);
1466
1259
  absl::Status resolver_result_status;
@@ -1494,19 +1287,16 @@ void ClientChannelFilter::OnResolverResultChangedLocked(
1494
1287
  RefCountedPtr<ServiceConfig> service_config;
1495
1288
  RefCountedPtr<ConfigSelector> config_selector;
1496
1289
  if (!result.service_config.ok()) {
1497
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1498
- gpr_log(GPR_INFO, "chand=%p: resolver returned service config error: %s",
1499
- this, result.service_config.status().ToString().c_str());
1500
- }
1290
+ GRPC_TRACE_LOG(client_channel, INFO)
1291
+ << "chand=" << this << ": resolver returned service config error: "
1292
+ << result.service_config.status();
1501
1293
  // If the service config was invalid, then fallback to the
1502
1294
  // previously returned service config.
1503
1295
  if (saved_service_config_ != nullptr) {
1504
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1505
- gpr_log(GPR_INFO,
1506
- "chand=%p: resolver returned invalid service config. "
1507
- "Continuing to use previous service config.",
1508
- this);
1509
- }
1296
+ GRPC_TRACE_LOG(client_channel, INFO)
1297
+ << "chand=" << this
1298
+ << ": resolver returned invalid service config. "
1299
+ "Continuing to use previous service config.";
1510
1300
  service_config = saved_service_config_;
1511
1301
  config_selector = saved_config_selector_;
1512
1302
  } else {
@@ -1520,12 +1310,10 @@ void ClientChannelFilter::OnResolverResultChangedLocked(
1520
1310
  }
1521
1311
  } else if (*result.service_config == nullptr) {
1522
1312
  // Resolver did not return any service config.
1523
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1524
- gpr_log(GPR_INFO,
1525
- "chand=%p: resolver returned no service config. Using default "
1526
- "service config for channel.",
1527
- this);
1528
- }
1313
+ GRPC_TRACE_LOG(client_channel, INFO)
1314
+ << "chand=" << this
1315
+ << ": resolver returned no service config. Using default service "
1316
+ "config for channel.";
1529
1317
  service_config = default_service_config_;
1530
1318
  } else {
1531
1319
  // Use ServiceConfig and ConfigSelector returned by resolver.
@@ -1557,8 +1345,9 @@ void ClientChannelFilter::OnResolverResultChangedLocked(
1557
1345
  UpdateServiceConfigInControlPlaneLocked(
1558
1346
  std::move(service_config), std::move(config_selector),
1559
1347
  std::string(lb_policy_config->name()));
1560
- } else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1561
- gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
1348
+ } else {
1349
+ GRPC_TRACE_LOG(client_channel, INFO)
1350
+ << "chand=" << this << ": service config not changed";
1562
1351
  }
1563
1352
  // Create or update LB policy, as needed.
1564
1353
  resolver_result_status = CreateOrUpdateLbPolicyLocked(
@@ -1592,10 +1381,8 @@ void ClientChannelFilter::OnResolverResultChangedLocked(
1592
1381
 
1593
1382
  void ClientChannelFilter::OnResolverErrorLocked(absl::Status status) {
1594
1383
  if (resolver_ == nullptr) return;
1595
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1596
- gpr_log(GPR_INFO, "chand=%p: resolver transient failure: %s", this,
1597
- status.ToString().c_str());
1598
- }
1384
+ GRPC_TRACE_LOG(client_channel, INFO)
1385
+ << "chand=" << this << ": resolver transient failure: " << status;
1599
1386
  // If we already have an LB policy from a previous resolution
1600
1387
  // result, then we continue to let it set the connectivity state.
1601
1388
  // Otherwise, we go into TRANSIENT_FAILURE.
@@ -1641,10 +1428,8 @@ absl::Status ClientChannelFilter::CreateOrUpdateLbPolicyLocked(
1641
1428
  lb_policy_ = CreateLbPolicyLocked(update_args.args);
1642
1429
  }
1643
1430
  // Update the policy.
1644
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1645
- gpr_log(GPR_INFO, "chand=%p: Updating child policy %p", this,
1646
- lb_policy_.get());
1647
- }
1431
+ GRPC_TRACE_LOG(client_channel, INFO)
1432
+ << "chand=" << this << ": Updating child policy " << lb_policy_.get();
1648
1433
  return lb_policy_->UpdateLocked(std::move(update_args));
1649
1434
  }
1650
1435
 
@@ -1666,11 +1451,9 @@ OrphanablePtr<LoadBalancingPolicy> ClientChannelFilter::CreateLbPolicyLocked(
1666
1451
  lb_policy_args.args = args;
1667
1452
  OrphanablePtr<LoadBalancingPolicy> lb_policy =
1668
1453
  MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
1669
- &grpc_client_channel_trace);
1670
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1671
- gpr_log(GPR_INFO, "chand=%p: created new LB policy %p", this,
1672
- lb_policy.get());
1673
- }
1454
+ &client_channel_trace);
1455
+ GRPC_TRACE_LOG(client_channel, INFO)
1456
+ << "chand=" << this << ": created new LB policy " << lb_policy.get();
1674
1457
  grpc_pollset_set_add_pollset_set(lb_policy->interested_parties(),
1675
1458
  interested_parties_);
1676
1459
  return lb_policy;
@@ -1680,10 +1463,9 @@ void ClientChannelFilter::UpdateServiceConfigInControlPlaneLocked(
1680
1463
  RefCountedPtr<ServiceConfig> service_config,
1681
1464
  RefCountedPtr<ConfigSelector> config_selector, std::string lb_policy_name) {
1682
1465
  std::string service_config_json(service_config->json_string());
1683
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1684
- gpr_log(GPR_INFO, "chand=%p: using service config: \"%s\"", this,
1685
- service_config_json.c_str());
1686
- }
1466
+ GRPC_TRACE_LOG(client_channel, INFO)
1467
+ << "chand=" << this << ": using service config: \"" << service_config_json
1468
+ << "\"";
1687
1469
  // Save service config.
1688
1470
  saved_service_config_ = std::move(service_config);
1689
1471
  // Swap out the data used by GetChannelInfo().
@@ -1694,10 +1476,9 @@ void ClientChannelFilter::UpdateServiceConfigInControlPlaneLocked(
1694
1476
  }
1695
1477
  // Save config selector.
1696
1478
  saved_config_selector_ = std::move(config_selector);
1697
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1698
- gpr_log(GPR_INFO, "chand=%p: using ConfigSelector %p", this,
1699
- saved_config_selector_.get());
1700
- }
1479
+ GRPC_TRACE_LOG(client_channel, INFO)
1480
+ << "chand=" << this << ": using ConfigSelector "
1481
+ << saved_config_selector_.get();
1701
1482
  }
1702
1483
 
1703
1484
  void ClientChannelFilter::UpdateServiceConfigInDataPlaneLocked() {
@@ -1705,10 +1486,9 @@ void ClientChannelFilter::UpdateServiceConfigInDataPlaneLocked() {
1705
1486
  RefCountedPtr<ServiceConfig> service_config = saved_service_config_;
1706
1487
  // Grab ref to config selector. Use default if resolver didn't supply one.
1707
1488
  RefCountedPtr<ConfigSelector> config_selector = saved_config_selector_;
1708
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1709
- gpr_log(GPR_INFO, "chand=%p: switching to ConfigSelector %p", this,
1710
- saved_config_selector_.get());
1711
- }
1489
+ GRPC_TRACE_LOG(client_channel, INFO)
1490
+ << "chand=" << this << ": switching to ConfigSelector "
1491
+ << saved_config_selector_.get();
1712
1492
  if (config_selector == nullptr) {
1713
1493
  config_selector =
1714
1494
  MakeRefCounted<DefaultConfigSelector>(saved_service_config_);
@@ -1728,7 +1508,7 @@ void ClientChannelFilter::UpdateServiceConfigInDataPlaneLocked() {
1728
1508
  }
1729
1509
  RefCountedPtr<DynamicFilters> dynamic_filters =
1730
1510
  DynamicFilters::Create(new_args, std::move(filters));
1731
- GPR_ASSERT(dynamic_filters != nullptr);
1511
+ CHECK(dynamic_filters != nullptr);
1732
1512
  // Grab data plane lock to update service config.
1733
1513
  //
1734
1514
  // We defer unreffing the old values (and deallocating memory) until
@@ -1750,30 +1530,26 @@ void ClientChannelFilter::UpdateServiceConfigInDataPlaneLocked() {
1750
1530
  }
1751
1531
 
1752
1532
  void ClientChannelFilter::CreateResolverLocked() {
1753
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1754
- gpr_log(GPR_INFO, "chand=%p: starting name resolution for %s", this,
1755
- uri_to_resolve_.c_str());
1756
- }
1533
+ GRPC_TRACE_LOG(client_channel, INFO)
1534
+ << "chand=" << this << ": starting name resolution for "
1535
+ << uri_to_resolve_;
1757
1536
  resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
1758
1537
  uri_to_resolve_, channel_args_, interested_parties_, work_serializer_,
1759
1538
  std::make_unique<ResolverResultHandler>(this));
1760
1539
  // Since the validity of the args was checked when the channel was created,
1761
1540
  // CreateResolver() must return a non-null result.
1762
- GPR_ASSERT(resolver_ != nullptr);
1541
+ CHECK(resolver_ != nullptr);
1763
1542
  UpdateStateLocked(GRPC_CHANNEL_CONNECTING, absl::Status(),
1764
1543
  "started resolving");
1765
1544
  resolver_->StartLocked();
1766
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1767
- gpr_log(GPR_INFO, "chand=%p: created resolver=%p", this, resolver_.get());
1768
- }
1545
+ GRPC_TRACE_LOG(client_channel, INFO)
1546
+ << "chand=" << this << ": created resolver=" << resolver_.get();
1769
1547
  }
1770
1548
 
1771
1549
  void ClientChannelFilter::DestroyResolverAndLbPolicyLocked() {
1772
1550
  if (resolver_ != nullptr) {
1773
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1774
- gpr_log(GPR_INFO, "chand=%p: shutting down resolver=%p", this,
1775
- resolver_.get());
1776
- }
1551
+ GRPC_TRACE_LOG(client_channel, INFO)
1552
+ << "chand=" << this << ": shutting down resolver=" << resolver_.get();
1777
1553
  resolver_.reset();
1778
1554
  // Clear resolution state.
1779
1555
  saved_service_config_.reset();
@@ -1793,10 +1569,9 @@ void ClientChannelFilter::DestroyResolverAndLbPolicyLocked() {
1793
1569
  }
1794
1570
  // Clear LB policy if set.
1795
1571
  if (lb_policy_ != nullptr) {
1796
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1797
- gpr_log(GPR_INFO, "chand=%p: shutting down lb_policy=%p", this,
1798
- lb_policy_.get());
1799
- }
1572
+ GRPC_TRACE_LOG(client_channel, INFO)
1573
+ << "chand=" << this
1574
+ << ": shutting down lb_policy=" << lb_policy_.get();
1800
1575
  grpc_pollset_set_del_pollset_set(lb_policy_->interested_parties(),
1801
1576
  interested_parties_);
1802
1577
  lb_policy_.reset();
@@ -1868,7 +1643,7 @@ T HandlePickResult(
1868
1643
  }
1869
1644
  auto* drop_pick =
1870
1645
  absl::get_if<LoadBalancingPolicy::PickResult::Drop>(&result->result);
1871
- GPR_ASSERT(drop_pick != nullptr);
1646
+ CHECK_NE(drop_pick, nullptr);
1872
1647
  return drop_func(drop_pick);
1873
1648
  }
1874
1649
 
@@ -1942,10 +1717,9 @@ void ClientChannelFilter::StartTransportOpLocked(grpc_transport_op* op) {
1942
1717
  }
1943
1718
  // Disconnect or enter IDLE.
1944
1719
  if (!op->disconnect_with_error.ok()) {
1945
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1946
- gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
1947
- StatusToString(op->disconnect_with_error).c_str());
1948
- }
1720
+ GRPC_TRACE_LOG(client_channel, INFO)
1721
+ << "chand=" << this << ": disconnect_with_error: "
1722
+ << StatusToString(op->disconnect_with_error);
1949
1723
  DestroyResolverAndLbPolicyLocked();
1950
1724
  intptr_t value;
1951
1725
  if (grpc_error_get_int(op->disconnect_with_error,
@@ -1962,7 +1736,7 @@ void ClientChannelFilter::StartTransportOpLocked(grpc_transport_op* op) {
1962
1736
  }
1963
1737
  } else {
1964
1738
  // Disconnect.
1965
- GPR_ASSERT(disconnect_error_.ok());
1739
+ CHECK(disconnect_error_.ok());
1966
1740
  disconnect_error_ = op->disconnect_with_error;
1967
1741
  UpdateStateAndPickerLocked(
1968
1742
  GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API",
@@ -1980,7 +1754,7 @@ void ClientChannelFilter::StartTransportOpLocked(grpc_transport_op* op) {
1980
1754
  void ClientChannelFilter::StartTransportOp(grpc_channel_element* elem,
1981
1755
  grpc_transport_op* op) {
1982
1756
  auto* chand = static_cast<ClientChannelFilter*>(elem->channel_data);
1983
- GPR_ASSERT(op->set_accept_stream == false);
1757
+ CHECK(op->set_accept_stream == false);
1984
1758
  // Handle bind_pollset.
1985
1759
  if (op->bind_pollset != nullptr) {
1986
1760
  grpc_pollset_set_add_pollset(chand->interested_parties_, op->bind_pollset);
@@ -2050,11 +1824,9 @@ void ClientChannelFilter::RemoveConnectivityWatcher(
2050
1824
  //
2051
1825
 
2052
1826
  void ClientChannelFilter::CallData::RemoveCallFromResolverQueuedCallsLocked() {
2053
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2054
- gpr_log(GPR_INFO,
2055
- "chand=%p calld=%p: removing from resolver queued picks list",
2056
- chand(), this);
2057
- }
1827
+ GRPC_TRACE_LOG(client_channel_call, INFO)
1828
+ << "chand=" << chand() << " calld=" << this
1829
+ << ": removing from resolver queued picks list";
2058
1830
  // Remove call's pollent from channel's interested_parties.
2059
1831
  grpc_polling_entity_del_from_pollset_set(pollent(),
2060
1832
  chand()->interested_parties_);
@@ -2065,12 +1837,10 @@ void ClientChannelFilter::CallData::RemoveCallFromResolverQueuedCallsLocked() {
2065
1837
  }
2066
1838
 
2067
1839
  void ClientChannelFilter::CallData::AddCallToResolverQueuedCallsLocked() {
2068
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2069
- gpr_log(
2070
- GPR_INFO,
2071
- "chand=%p calld=%p: adding to resolver queued picks list; pollent=%s",
2072
- chand(), this, grpc_polling_entity_string(pollent()).c_str());
2073
- }
1840
+ GRPC_TRACE_LOG(client_channel_call, INFO)
1841
+ << "chand=" << chand() << " calld=" << this
1842
+ << ": adding to resolver queued picks list; pollent="
1843
+ << grpc_polling_entity_string(pollent());
2074
1844
  // Add call's pollent to channel's interested_parties, so that I/O
2075
1845
  // can be done under the call's CQ.
2076
1846
  grpc_polling_entity_add_to_pollset_set(pollent(),
@@ -2082,10 +1852,9 @@ void ClientChannelFilter::CallData::AddCallToResolverQueuedCallsLocked() {
2082
1852
 
2083
1853
  grpc_error_handle ClientChannelFilter::CallData::ApplyServiceConfigToCallLocked(
2084
1854
  const absl::StatusOr<RefCountedPtr<ConfigSelector>>& config_selector) {
2085
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2086
- gpr_log(GPR_INFO, "chand=%p calld=%p: applying service config to call",
2087
- chand(), this);
2088
- }
1855
+ GRPC_TRACE_LOG(client_channel_call, INFO)
1856
+ << "chand=" << chand() << " calld=" << this
1857
+ << ": applying service config to call";
2089
1858
  if (!config_selector.ok()) return config_selector.status();
2090
1859
  // Create a ClientChannelServiceConfigCallData for the call. This stores
2091
1860
  // a ref to the ServiceConfig and caches the right set of parsed configs
@@ -2093,7 +1862,7 @@ grpc_error_handle ClientChannelFilter::CallData::ApplyServiceConfigToCallLocked(
2093
1862
  // itself in the call context, so that it can be accessed by filters
2094
1863
  // below us in the stack, and it will be cleaned up when the call ends.
2095
1864
  auto* service_config_call_data =
2096
- arena()->New<ClientChannelServiceConfigCallData>(arena(), call_context());
1865
+ arena()->New<ClientChannelServiceConfigCallData>(arena());
2097
1866
  // Use the ConfigSelector to determine the config for the call.
2098
1867
  absl::Status call_config_status =
2099
1868
  (*config_selector)
@@ -2110,8 +1879,7 @@ grpc_error_handle ClientChannelFilter::CallData::ApplyServiceConfigToCallLocked(
2110
1879
  if (method_params != nullptr) {
2111
1880
  // If the deadline from the service config is shorter than the one
2112
1881
  // from the client API, reset the deadline timer.
2113
- if (chand()->deadline_checking_enabled_ &&
2114
- method_params->timeout() != Duration::Zero()) {
1882
+ if (method_params->timeout() != Duration::Zero()) {
2115
1883
  ResetDeadline(method_params->timeout());
2116
1884
  }
2117
1885
  // If the service config set wait_for_ready and the application
@@ -2151,17 +1919,14 @@ absl::optional<absl::Status> ClientChannelFilter::CallData::CheckResolution(
2151
1919
  }
2152
1920
  // Handle errors.
2153
1921
  if (!error.ok()) {
2154
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2155
- gpr_log(GPR_INFO,
2156
- "chand=%p calld=%p: error applying config to call: error=%s",
2157
- chand(), this, StatusToString(error).c_str());
2158
- }
1922
+ GRPC_TRACE_LOG(client_channel_call, INFO)
1923
+ << "chand=" << chand() << " calld=" << this
1924
+ << ": error applying config to call: error=" << StatusToString(error);
2159
1925
  return error;
2160
1926
  }
2161
1927
  // If the call was queued, add trace annotation.
2162
1928
  if (was_queued) {
2163
- auto* call_tracer = static_cast<CallTracerAnnotationInterface*>(
2164
- call_context()[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value);
1929
+ auto* call_tracer = arena()->GetContext<CallTracerAnnotationInterface>();
2165
1930
  if (call_tracer != nullptr) {
2166
1931
  call_tracer->RecordAnnotation("Delayed name resolution complete.");
2167
1932
  }
@@ -2179,20 +1944,18 @@ bool ClientChannelFilter::CallData::CheckResolutionLocked(
2179
1944
  absl::Status resolver_error = chand()->resolver_transient_failure_error_;
2180
1945
  if (!resolver_error.ok() &&
2181
1946
  !send_initial_metadata()->GetOrCreatePointer(WaitForReady())->value) {
2182
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2183
- gpr_log(GPR_INFO, "chand=%p calld=%p: resolution failed, failing call",
2184
- chand(), this);
2185
- }
1947
+ GRPC_TRACE_LOG(client_channel_call, INFO)
1948
+ << "chand=" << chand() << " calld=" << this
1949
+ << ": resolution failed, failing call";
2186
1950
  *config_selector = absl_status_to_grpc_error(resolver_error);
2187
1951
  return true;
2188
1952
  }
2189
1953
  // Either the resolver has not yet returned a result, or it has
2190
1954
  // returned transient failure but the call is wait_for_ready. In
2191
1955
  // either case, queue the call.
2192
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2193
- gpr_log(GPR_INFO, "chand=%p calld=%p: no resolver result yet", chand(),
2194
- this);
2195
- }
1956
+ GRPC_TRACE_LOG(client_channel_call, INFO)
1957
+ << "chand=" << chand() << " calld=" << this
1958
+ << ": no resolver result yet";
2196
1959
  return false;
2197
1960
  }
2198
1961
  // Result found.
@@ -2208,25 +1971,21 @@ bool ClientChannelFilter::CallData::CheckResolutionLocked(
2208
1971
  ClientChannelFilter::FilterBasedCallData::FilterBasedCallData(
2209
1972
  grpc_call_element* elem, const grpc_call_element_args& args)
2210
1973
  : path_(CSliceRef(args.path)),
2211
- call_context_(args.context),
2212
1974
  call_start_time_(args.start_time),
2213
1975
  deadline_(args.deadline),
2214
- deadline_state_(
2215
- elem, args,
2216
- GPR_LIKELY(static_cast<ClientChannelFilter*>(elem->channel_data)
2217
- ->deadline_checking_enabled_)
2218
- ? args.deadline
2219
- : Timestamp::InfFuture()) {
2220
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2221
- gpr_log(GPR_INFO, "chand=%p calld=%p: created call", chand(), this);
2222
- }
1976
+ arena_(args.arena),
1977
+ elem_(elem),
1978
+ owning_call_(args.call_stack),
1979
+ call_combiner_(args.call_combiner) {
1980
+ GRPC_TRACE_LOG(client_channel_call, INFO)
1981
+ << "chand=" << chand() << " calld=" << this << ": created call";
2223
1982
  }
2224
1983
 
2225
1984
  ClientChannelFilter::FilterBasedCallData::~FilterBasedCallData() {
2226
1985
  CSliceUnref(path_);
2227
1986
  // Make sure there are no remaining pending batches.
2228
1987
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
2229
- GPR_ASSERT(pending_batches_[i] == nullptr);
1988
+ CHECK_EQ(pending_batches_[i], nullptr);
2230
1989
  }
2231
1990
  }
2232
1991
 
@@ -2255,15 +2014,11 @@ void ClientChannelFilter::FilterBasedCallData::StartTransportStreamOpBatch(
2255
2014
  grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
2256
2015
  auto* calld = static_cast<FilterBasedCallData*>(elem->call_data);
2257
2016
  auto* chand = static_cast<ClientChannelFilter*>(elem->channel_data);
2258
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace) &&
2259
- !GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
2017
+ if (GRPC_TRACE_FLAG_ENABLED(client_channel_call) &&
2018
+ !GRPC_TRACE_FLAG_ENABLED(channel)) {
2260
2019
  gpr_log(GPR_INFO, "chand=%p calld=%p: batch started from above: %s", chand,
2261
2020
  calld, grpc_transport_stream_op_batch_string(batch, false).c_str());
2262
2021
  }
2263
- if (GPR_LIKELY(chand->deadline_checking_enabled_)) {
2264
- grpc_deadline_state_client_start_transport_stream_op_batch(
2265
- &calld->deadline_state_, batch);
2266
- }
2267
2022
  // Intercept recv_trailing_metadata to commit the call, in case we wind up
2268
2023
  // failing the call before we get down to the retry or LB call layer.
2269
2024
  if (batch->recv_trailing_metadata) {
@@ -2279,10 +2034,9 @@ void ClientChannelFilter::FilterBasedCallData::StartTransportStreamOpBatch(
2279
2034
  // Note that once we have done so, we do not need to acquire the channel's
2280
2035
  // resolution mutex, which is more efficient (especially for streaming calls).
2281
2036
  if (calld->dynamic_call_ != nullptr) {
2282
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2283
- gpr_log(GPR_INFO, "chand=%p calld=%p: starting batch on dynamic_call=%p",
2284
- chand, calld, calld->dynamic_call_.get());
2285
- }
2037
+ GRPC_TRACE_LOG(client_channel_call, INFO)
2038
+ << "chand=" << chand << " calld=" << calld
2039
+ << ": starting batch on dynamic_call=" << calld->dynamic_call_.get();
2286
2040
  calld->dynamic_call_->StartTransportStreamOpBatch(batch);
2287
2041
  return;
2288
2042
  }
@@ -2290,10 +2044,10 @@ void ClientChannelFilter::FilterBasedCallData::StartTransportStreamOpBatch(
2290
2044
  //
2291
2045
  // If we've previously been cancelled, immediately fail any new batches.
2292
2046
  if (GPR_UNLIKELY(!calld->cancel_error_.ok())) {
2293
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2294
- gpr_log(GPR_INFO, "chand=%p calld=%p: failing batch with error: %s",
2295
- chand, calld, StatusToString(calld->cancel_error_).c_str());
2296
- }
2047
+ GRPC_TRACE_LOG(client_channel_call, INFO)
2048
+ << "chand=" << chand << " calld=" << calld
2049
+ << ": failing batch with error: "
2050
+ << StatusToString(calld->cancel_error_);
2297
2051
  // Note: This will release the call combiner.
2298
2052
  grpc_transport_stream_op_batch_finish_with_failure(
2299
2053
  batch, calld->cancel_error_, calld->call_combiner());
@@ -2307,10 +2061,9 @@ void ClientChannelFilter::FilterBasedCallData::StartTransportStreamOpBatch(
2307
2061
  // is in the past when the call starts), we can return the right
2308
2062
  // error to the caller when the first batch does get passed down.
2309
2063
  calld->cancel_error_ = batch->payload->cancel_stream.cancel_error;
2310
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2311
- gpr_log(GPR_INFO, "chand=%p calld=%p: recording cancel_error=%s", chand,
2312
- calld, StatusToString(calld->cancel_error_).c_str());
2313
- }
2064
+ GRPC_TRACE_LOG(client_channel_call, INFO)
2065
+ << "chand=" << chand << " calld=" << calld
2066
+ << ": recording cancel_error=" << StatusToString(calld->cancel_error_);
2314
2067
  // Fail all pending batches.
2315
2068
  calld->PendingBatchesFail(calld->cancel_error_, NoYieldCallCombiner);
2316
2069
  // Note: This will release the call combiner.
@@ -2324,19 +2077,15 @@ void ClientChannelFilter::FilterBasedCallData::StartTransportStreamOpBatch(
2324
2077
  // channel's resolution mutex to apply the service config to the call,
2325
2078
  // after which we will create a dynamic call.
2326
2079
  if (GPR_LIKELY(batch->send_initial_metadata)) {
2327
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2328
- gpr_log(GPR_INFO,
2329
- "chand=%p calld=%p: grabbing resolution mutex to apply service "
2330
- "config",
2331
- chand, calld);
2332
- }
2080
+ GRPC_TRACE_LOG(client_channel_call, INFO)
2081
+ << "chand=" << chand << " calld=" << calld
2082
+ << ": grabbing resolution mutex to apply service ";
2333
2083
  // If we're still in IDLE, we need to start resolving.
2334
2084
  if (GPR_UNLIKELY(chand->CheckConnectivityState(false) ==
2335
2085
  GRPC_CHANNEL_IDLE)) {
2336
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2337
- gpr_log(GPR_INFO, "chand=%p calld=%p: triggering exit idle", chand,
2338
- calld);
2339
- }
2086
+ GRPC_TRACE_LOG(client_channel_call, INFO)
2087
+ << "chand=" << chand << " calld=" << calld
2088
+ << ": triggering exit idle";
2340
2089
  // Bounce into the control plane work serializer to start resolving.
2341
2090
  GRPC_CHANNEL_STACK_REF(chand->owning_stack_, "ExitIdle");
2342
2091
  chand->work_serializer_->Run(
@@ -2349,11 +2098,9 @@ void ClientChannelFilter::FilterBasedCallData::StartTransportStreamOpBatch(
2349
2098
  calld->TryCheckResolution(/*was_queued=*/false);
2350
2099
  } else {
2351
2100
  // For all other batches, release the call combiner.
2352
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2353
- gpr_log(GPR_INFO,
2354
- "chand=%p calld=%p: saved batch, yielding call combiner", chand,
2355
- calld);
2356
- }
2101
+ GRPC_TRACE_LOG(client_channel_call, INFO)
2102
+ << "chand=" << chand << " calld=" << calld
2103
+ << ": saved batch, yielding call combiner";
2357
2104
  GRPC_CALL_COMBINER_STOP(calld->call_combiner(),
2358
2105
  "batch does not include send_initial_metadata");
2359
2106
  }
@@ -2382,13 +2129,11 @@ size_t ClientChannelFilter::FilterBasedCallData::GetBatchIndex(
2382
2129
  void ClientChannelFilter::FilterBasedCallData::PendingBatchesAdd(
2383
2130
  grpc_transport_stream_op_batch* batch) {
2384
2131
  const size_t idx = GetBatchIndex(batch);
2385
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2386
- gpr_log(GPR_INFO,
2387
- "chand=%p calld=%p: adding pending batch at index %" PRIuPTR,
2388
- chand(), this, idx);
2389
- }
2132
+ GRPC_TRACE_LOG(client_channel_call, INFO)
2133
+ << "chand=" << chand() << " calld=" << this
2134
+ << ": adding pending batch at index " << idx;
2390
2135
  grpc_transport_stream_op_batch*& pending = pending_batches_[idx];
2391
- GPR_ASSERT(pending == nullptr);
2136
+ CHECK_EQ(pending, nullptr);
2392
2137
  pending = batch;
2393
2138
  }
2394
2139
 
@@ -2408,8 +2153,8 @@ void ClientChannelFilter::FilterBasedCallData::FailPendingBatchInCallCombiner(
2408
2153
  void ClientChannelFilter::FilterBasedCallData::PendingBatchesFail(
2409
2154
  grpc_error_handle error,
2410
2155
  YieldCallCombinerPredicate yield_call_combiner_predicate) {
2411
- GPR_ASSERT(!error.ok());
2412
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2156
+ CHECK(!error.ok());
2157
+ if (GRPC_TRACE_FLAG_ENABLED(client_channel_call)) {
2413
2158
  size_t num_batches = 0;
2414
2159
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
2415
2160
  if (pending_batches_[i] != nullptr) ++num_batches;
@@ -2452,7 +2197,7 @@ void ClientChannelFilter::FilterBasedCallData::ResumePendingBatchInCallCombiner(
2452
2197
  // This is called via the call combiner, so access to calld is synchronized.
2453
2198
  void ClientChannelFilter::FilterBasedCallData::PendingBatchesResume() {
2454
2199
  // Retries not enabled; send down batches as-is.
2455
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2200
+ if (GRPC_TRACE_FLAG_ENABLED(client_channel_call)) {
2456
2201
  size_t num_batches = 0;
2457
2202
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
2458
2203
  if (pending_batches_[i] != nullptr) ++num_batches;
@@ -2498,13 +2243,13 @@ class ClientChannelFilter::FilterBasedCallData::ResolverQueuedCallCanceller
2498
2243
  auto* chand = calld->chand();
2499
2244
  {
2500
2245
  MutexLock lock(&chand->resolution_mu_);
2501
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2502
- gpr_log(GPR_INFO,
2503
- "chand=%p calld=%p: cancelling resolver queued pick: "
2504
- "error=%s self=%p calld->resolver_pick_canceller=%p",
2505
- chand, calld, StatusToString(error).c_str(), self,
2506
- calld->resolver_call_canceller_);
2507
- }
2246
+ GRPC_TRACE_LOG(client_channel_call, INFO)
2247
+ << "chand=" << chand << " calld=" << calld
2248
+ << ": cancelling resolver queued pick: "
2249
+ "error="
2250
+ << StatusToString(error) << " self=" << self
2251
+ << " calld->resolver_pick_canceller="
2252
+ << calld->resolver_call_canceller_;
2508
2253
  if (calld->resolver_call_canceller_ == self && !error.ok()) {
2509
2254
  // Remove pick from list of queued picks.
2510
2255
  calld->RemoveCallFromResolverQueuedCallsLocked();
@@ -2552,24 +2297,19 @@ void ClientChannelFilter::FilterBasedCallData::RetryCheckResolutionLocked() {
2552
2297
  }
2553
2298
 
2554
2299
  void ClientChannelFilter::FilterBasedCallData::CreateDynamicCall() {
2555
- DynamicFilters::Call::Args args = {dynamic_filters(), pollent_, path_,
2556
- call_start_time_, deadline_, arena(),
2557
- call_context_, call_combiner()};
2300
+ DynamicFilters::Call::Args args = {dynamic_filters(), pollent_, path_,
2301
+ call_start_time_, deadline_, arena(),
2302
+ call_combiner()};
2558
2303
  grpc_error_handle error;
2559
2304
  DynamicFilters* channel_stack = args.channel_stack.get();
2560
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2561
- gpr_log(
2562
- GPR_INFO,
2563
- "chand=%p calld=%p: creating dynamic call stack on channel_stack=%p",
2564
- chand(), this, channel_stack);
2565
- }
2305
+ GRPC_TRACE_LOG(client_channel_call, INFO)
2306
+ << "chand=" << chand() << " calld=" << this
2307
+ << ": creating dynamic call stack on channel_stack=" << channel_stack;
2566
2308
  dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
2567
2309
  if (!error.ok()) {
2568
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2569
- gpr_log(GPR_INFO,
2570
- "chand=%p calld=%p: failed to create dynamic call: error=%s",
2571
- chand(), this, StatusToString(error).c_str());
2572
- }
2310
+ GRPC_TRACE_LOG(client_channel_call, INFO)
2311
+ << "chand=" << chand() << " calld=" << this
2312
+ << ": failed to create dynamic call: error=" << StatusToString(error);
2573
2313
  PendingBatchesFail(error, YieldCallCombiner);
2574
2314
  return;
2575
2315
  }
@@ -2581,15 +2321,11 @@ void ClientChannelFilter::FilterBasedCallData::
2581
2321
  void* arg, grpc_error_handle error) {
2582
2322
  auto* calld = static_cast<FilterBasedCallData*>(arg);
2583
2323
  auto* chand = calld->chand();
2584
- auto* service_config_call_data =
2585
- GetServiceConfigCallData(calld->call_context());
2586
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2587
- gpr_log(GPR_INFO,
2588
- "chand=%p calld=%p: got recv_trailing_metadata_ready: error=%s "
2589
- "service_config_call_data=%p",
2590
- chand, calld, StatusToString(error).c_str(),
2591
- service_config_call_data);
2592
- }
2324
+ auto* service_config_call_data = GetServiceConfigCallData(calld->arena());
2325
+ GRPC_TRACE_LOG(client_channel_call, INFO)
2326
+ << "chand=" << chand << " calld=" << calld
2327
+ << ": got recv_trailing_metadata_ready: error=" << StatusToString(error)
2328
+ << " service_config_call_data=" << service_config_call_data;
2593
2329
  if (service_config_call_data != nullptr) {
2594
2330
  service_config_call_data->Commit();
2595
2331
  }
@@ -2607,7 +2343,7 @@ class ClientChannelFilter::LoadBalancedCall::LbCallState final
2607
2343
  public:
2608
2344
  explicit LbCallState(LoadBalancedCall* lb_call) : lb_call_(lb_call) {}
2609
2345
 
2610
- void* Alloc(size_t size) override { return lb_call_->arena()->Alloc(size); }
2346
+ void* Alloc(size_t size) override { return lb_call_->arena_->Alloc(size); }
2611
2347
 
2612
2348
  // Internal API to allow first-party LB policies to access per-call
2613
2349
  // attributes set by the ConfigSelector.
@@ -2702,8 +2438,7 @@ class ClientChannelFilter::LoadBalancedCall::Metadata final
2702
2438
  ServiceConfigCallData::CallAttributeInterface*
2703
2439
  ClientChannelFilter::LoadBalancedCall::LbCallState::GetCallAttribute(
2704
2440
  UniqueTypeName type) const {
2705
- auto* service_config_call_data =
2706
- GetServiceConfigCallData(lb_call_->call_context_);
2441
+ auto* service_config_call_data = GetServiceConfigCallData(lb_call_->arena_);
2707
2442
  return service_config_call_data->GetCallAttribute(type);
2708
2443
  }
2709
2444
 
@@ -2729,7 +2464,7 @@ class ClientChannelFilter::LoadBalancedCall::BackendMetricAccessor final
2729
2464
  recv_trailing_metadata_ != nullptr) {
2730
2465
  if (const auto* md = recv_trailing_metadata_->get_pointer(
2731
2466
  EndpointLoadMetricsBinMetadata())) {
2732
- BackendMetricAllocator allocator(lb_call_->arena());
2467
+ BackendMetricAllocator allocator(lb_call_->arena_);
2733
2468
  lb_call_->backend_metric_data_ =
2734
2469
  ParseBackendMetricData(md->as_string_view(), &allocator);
2735
2470
  }
@@ -2764,31 +2499,28 @@ class ClientChannelFilter::LoadBalancedCall::BackendMetricAccessor final
2764
2499
 
2765
2500
  namespace {
2766
2501
 
2767
- void CreateCallAttemptTracer(grpc_call_context_element* context,
2768
- bool is_transparent_retry) {
2769
- auto* call_tracer = static_cast<ClientCallTracer*>(
2770
- context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value);
2502
+ void CreateCallAttemptTracer(Arena* arena, bool is_transparent_retry) {
2503
+ auto* call_tracer = DownCast<ClientCallTracer*>(
2504
+ arena->GetContext<CallTracerAnnotationInterface>());
2771
2505
  if (call_tracer == nullptr) return;
2772
2506
  auto* tracer = call_tracer->StartNewAttempt(is_transparent_retry);
2773
- context[GRPC_CONTEXT_CALL_TRACER].value = tracer;
2507
+ arena->SetContext<CallTracerInterface>(tracer);
2774
2508
  }
2775
2509
 
2776
2510
  } // namespace
2777
2511
 
2778
2512
  ClientChannelFilter::LoadBalancedCall::LoadBalancedCall(
2779
- ClientChannelFilter* chand, grpc_call_context_element* call_context,
2513
+ ClientChannelFilter* chand, Arena* arena,
2780
2514
  absl::AnyInvocable<void()> on_commit, bool is_transparent_retry)
2781
- : InternallyRefCounted(
2782
- GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)
2783
- ? "LoadBalancedCall"
2784
- : nullptr),
2515
+ : InternallyRefCounted(GRPC_TRACE_FLAG_ENABLED(client_channel_lb_call)
2516
+ ? "LoadBalancedCall"
2517
+ : nullptr),
2785
2518
  chand_(chand),
2786
2519
  on_commit_(std::move(on_commit)),
2787
- call_context_(call_context) {
2788
- CreateCallAttemptTracer(call_context, is_transparent_retry);
2789
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2790
- gpr_log(GPR_INFO, "chand=%p lb_call=%p: created", chand_, this);
2791
- }
2520
+ arena_(arena) {
2521
+ CreateCallAttemptTracer(arena, is_transparent_retry);
2522
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2523
+ << "chand=" << chand_ << " lb_call=" << this << ": created";
2792
2524
  }
2793
2525
 
2794
2526
  ClientChannelFilter::LoadBalancedCall::~LoadBalancedCall() {
@@ -2829,10 +2561,9 @@ void ClientChannelFilter::LoadBalancedCall::RecordLatency() {
2829
2561
 
2830
2562
  void ClientChannelFilter::LoadBalancedCall::
2831
2563
  RemoveCallFromLbQueuedCallsLocked() {
2832
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2833
- gpr_log(GPR_INFO, "chand=%p lb_call=%p: removing from queued picks list",
2834
- chand_, this);
2835
- }
2564
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2565
+ << "chand=" << chand_ << " lb_call=" << this
2566
+ << ": removing from queued picks list";
2836
2567
  // Remove pollset_set linkage.
2837
2568
  grpc_polling_entity_del_from_pollset_set(pollent(),
2838
2569
  chand_->interested_parties_);
@@ -2843,10 +2574,9 @@ void ClientChannelFilter::LoadBalancedCall::
2843
2574
  }
2844
2575
 
2845
2576
  void ClientChannelFilter::LoadBalancedCall::AddCallToLbQueuedCallsLocked() {
2846
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2847
- gpr_log(GPR_INFO, "chand=%p lb_call=%p: adding to queued picks list",
2848
- chand_, this);
2849
- }
2577
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2578
+ << "chand=" << chand_ << " lb_call=" << this
2579
+ << ": adding to queued picks list";
2850
2580
  // Add call's pollent to channel's interested_parties, so that I/O
2851
2581
  // can be done under the call's CQ.
2852
2582
  grpc_polling_entity_add_to_pollset_set(pollent(),
@@ -2888,10 +2618,9 @@ ClientChannelFilter::LoadBalancedCall::PickSubchannel(bool was_queued) {
2888
2618
  };
2889
2619
  }
2890
2620
  // Grab mutex and take a ref to the picker.
2891
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2892
- gpr_log(GPR_INFO, "chand=%p lb_call=%p: grabbing LB mutex to get picker",
2893
- chand_, this);
2894
- }
2621
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2622
+ << "chand=" << chand_ << " lb_call=" << this
2623
+ << ": grabbing LB mutex to get picker";
2895
2624
  RefCountedPtr<LoadBalancingPolicy::SubchannelPicker> picker;
2896
2625
  {
2897
2626
  MutexLock lock(&chand_->lb_mu_);
@@ -2901,17 +2630,15 @@ ClientChannelFilter::LoadBalancedCall::PickSubchannel(bool was_queued) {
2901
2630
  // TODO(roth): Fix race condition in channel_idle filter and any
2902
2631
  // other possible causes of this.
2903
2632
  if (pickers.back() == nullptr) {
2904
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2905
- gpr_log(GPR_ERROR, "chand=%p lb_call=%p: picker is null, failing call",
2906
- chand_, this);
2907
- }
2633
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2634
+ << "chand=" << chand_ << " lb_call=" << this
2635
+ << ": picker is null, failing call";
2908
2636
  return absl::InternalError("picker is null -- shouldn't happen");
2909
2637
  }
2910
2638
  // Do pick.
2911
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2912
- gpr_log(GPR_INFO, "chand=%p lb_call=%p: performing pick with picker=%p",
2913
- chand_, this, pickers.back().get());
2914
- }
2639
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2640
+ << "chand=" << chand_ << " lb_call=" << this
2641
+ << ": performing pick with picker=" << pickers.back().get();
2915
2642
  grpc_error_handle error;
2916
2643
  bool pick_complete = PickSubchannelImpl(pickers.back().get(), &error);
2917
2644
  if (!pick_complete) {
@@ -2919,11 +2646,9 @@ ClientChannelFilter::LoadBalancedCall::PickSubchannel(bool was_queued) {
2919
2646
  MutexLock lock(&chand_->lb_mu_);
2920
2647
  // If picker has been swapped out since we grabbed it, try again.
2921
2648
  if (pickers.back() != chand_->picker_) {
2922
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2923
- gpr_log(GPR_INFO,
2924
- "chand=%p lb_call=%p: pick not complete, but picker changed",
2925
- chand_, this);
2926
- }
2649
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2650
+ << "chand=" << chand_ << " lb_call=" << this
2651
+ << ": pick not complete, but picker changed";
2927
2652
  if (IsWorkSerializerDispatchEnabled()) {
2928
2653
  // Don't unref until after we release the mutex.
2929
2654
  old_picker = std::move(pickers.back());
@@ -2942,11 +2667,9 @@ ClientChannelFilter::LoadBalancedCall::PickSubchannel(bool was_queued) {
2942
2667
  }
2943
2668
  // If the pick failed, fail the call.
2944
2669
  if (!error.ok()) {
2945
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2946
- gpr_log(GPR_INFO,
2947
- "chand=%p lb_call=%p: failed to pick subchannel: error=%s",
2948
- chand_, this, StatusToString(error).c_str());
2949
- }
2670
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2671
+ << "chand=" << chand_ << " lb_call=" << this
2672
+ << ": failed to pick subchannel: error=" << StatusToString(error);
2950
2673
  return error;
2951
2674
  }
2952
2675
  // Pick succeeded.
@@ -2957,11 +2680,11 @@ ClientChannelFilter::LoadBalancedCall::PickSubchannel(bool was_queued) {
2957
2680
 
2958
2681
  bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl(
2959
2682
  LoadBalancingPolicy::SubchannelPicker* picker, grpc_error_handle* error) {
2960
- GPR_ASSERT(connected_subchannel_ == nullptr);
2683
+ CHECK(connected_subchannel_ == nullptr);
2961
2684
  // Perform LB pick.
2962
2685
  LoadBalancingPolicy::PickArgs pick_args;
2963
2686
  Slice* path = send_initial_metadata()->get_pointer(HttpPathMetadata());
2964
- GPR_ASSERT(path != nullptr);
2687
+ CHECK_NE(path, nullptr);
2965
2688
  pick_args.path = path->as_string_view();
2966
2689
  LbCallState lb_call_state(this);
2967
2690
  pick_args.call_state = &lb_call_state;
@@ -2972,12 +2695,11 @@ bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl(
2972
2695
  &result,
2973
2696
  // CompletePick
2974
2697
  [this](LoadBalancingPolicy::PickResult::Complete* complete_pick) {
2975
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2976
- gpr_log(GPR_INFO,
2977
- "chand=%p lb_call=%p: LB pick succeeded: subchannel=%p",
2978
- chand_, this, complete_pick->subchannel.get());
2979
- }
2980
- GPR_ASSERT(complete_pick->subchannel != nullptr);
2698
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2699
+ << "chand=" << chand_ << " lb_call=" << this
2700
+ << ": LB pick succeeded: subchannel="
2701
+ << complete_pick->subchannel.get();
2702
+ CHECK(complete_pick->subchannel != nullptr);
2981
2703
  // Grab a ref to the connected subchannel while we're still
2982
2704
  // holding the data plane mutex.
2983
2705
  SubchannelWrapper* subchannel =
@@ -2988,12 +2710,10 @@ bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl(
2988
2710
  // yet seen that change and given us a new picker), then just
2989
2711
  // queue the pick. We'll try again as soon as we get a new picker.
2990
2712
  if (connected_subchannel_ == nullptr) {
2991
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2992
- gpr_log(GPR_INFO,
2993
- "chand=%p lb_call=%p: subchannel returned by LB picker "
2994
- "has no connected subchannel; queueing pick",
2995
- chand_, this);
2996
- }
2713
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2714
+ << "chand=" << chand_ << " lb_call=" << this
2715
+ << ": subchannel returned by LB picker "
2716
+ "has no connected subchannel; queueing pick";
2997
2717
  return false;
2998
2718
  }
2999
2719
  lb_subchannel_call_tracker_ =
@@ -3005,18 +2725,15 @@ bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl(
3005
2725
  },
3006
2726
  // QueuePick
3007
2727
  [this](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/) {
3008
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3009
- gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick queued", chand_,
3010
- this);
3011
- }
2728
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2729
+ << "chand=" << chand_ << " lb_call=" << this << ": LB pick queued";
3012
2730
  return false;
3013
2731
  },
3014
2732
  // FailPick
3015
2733
  [this, &error](LoadBalancingPolicy::PickResult::Fail* fail_pick) {
3016
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3017
- gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick failed: %s", chand_,
3018
- this, fail_pick->status.ToString().c_str());
3019
- }
2734
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2735
+ << "chand=" << chand_ << " lb_call=" << this
2736
+ << ": LB pick failed: " << fail_pick->status;
3020
2737
  // If wait_for_ready is false, then the error indicates the RPC
3021
2738
  // attempt's final status.
3022
2739
  if (!send_initial_metadata()
@@ -3032,10 +2749,9 @@ bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl(
3032
2749
  },
3033
2750
  // DropPick
3034
2751
  [this, &error](LoadBalancingPolicy::PickResult::Drop* drop_pick) {
3035
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3036
- gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s", chand_,
3037
- this, drop_pick->status.ToString().c_str());
3038
- }
2752
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2753
+ << "chand=" << chand_ << " lb_call=" << this
2754
+ << ": LB pick dropped: " << drop_pick->status;
3039
2755
  *error = grpc_error_set_int(
3040
2756
  absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
3041
2757
  std::move(drop_pick->status), "LB drop")),
@@ -3052,10 +2768,8 @@ ClientChannelFilter::FilterBasedLoadBalancedCall::FilterBasedLoadBalancedCall(
3052
2768
  ClientChannelFilter* chand, const grpc_call_element_args& args,
3053
2769
  grpc_polling_entity* pollent, grpc_closure* on_call_destruction_complete,
3054
2770
  absl::AnyInvocable<void()> on_commit, bool is_transparent_retry)
3055
- : LoadBalancedCall(chand, args.context, std::move(on_commit),
2771
+ : LoadBalancedCall(chand, args.arena, std::move(on_commit),
3056
2772
  is_transparent_retry),
3057
- deadline_(args.deadline),
3058
- arena_(args.arena),
3059
2773
  owning_call_(args.call_stack),
3060
2774
  call_combiner_(args.call_combiner),
3061
2775
  pollent_(pollent),
@@ -3065,7 +2779,7 @@ ClientChannelFilter::FilterBasedLoadBalancedCall::
3065
2779
  ~FilterBasedLoadBalancedCall() {
3066
2780
  // Make sure there are no remaining pending batches.
3067
2781
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
3068
- GPR_ASSERT(pending_batches_[i] == nullptr);
2782
+ CHECK_EQ(pending_batches_[i], nullptr);
3069
2783
  }
3070
2784
  if (on_call_destruction_complete_ != nullptr) {
3071
2785
  ExecCtx::Run(DEBUG_LOCATION, on_call_destruction_complete_,
@@ -3103,12 +2817,10 @@ size_t ClientChannelFilter::FilterBasedLoadBalancedCall::GetBatchIndex(
3103
2817
  void ClientChannelFilter::FilterBasedLoadBalancedCall::PendingBatchesAdd(
3104
2818
  grpc_transport_stream_op_batch* batch) {
3105
2819
  const size_t idx = GetBatchIndex(batch);
3106
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3107
- gpr_log(GPR_INFO,
3108
- "chand=%p lb_call=%p: adding pending batch at index %" PRIuPTR,
3109
- chand(), this, idx);
3110
- }
3111
- GPR_ASSERT(pending_batches_[idx] == nullptr);
2820
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2821
+ << "chand=" << chand() << " lb_call=" << this
2822
+ << ": adding pending batch at index " << idx;
2823
+ CHECK_EQ(pending_batches_[idx], nullptr);
3112
2824
  pending_batches_[idx] = batch;
3113
2825
  }
3114
2826
 
@@ -3128,9 +2840,9 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::
3128
2840
  void ClientChannelFilter::FilterBasedLoadBalancedCall::PendingBatchesFail(
3129
2841
  grpc_error_handle error,
3130
2842
  YieldCallCombinerPredicate yield_call_combiner_predicate) {
3131
- GPR_ASSERT(!error.ok());
2843
+ CHECK(!error.ok());
3132
2844
  failure_error_ = error;
3133
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2845
+ if (GRPC_TRACE_FLAG_ENABLED(client_channel_lb_call)) {
3134
2846
  size_t num_batches = 0;
3135
2847
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
3136
2848
  if (pending_batches_[i] != nullptr) ++num_batches;
@@ -3172,7 +2884,7 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::
3172
2884
 
3173
2885
  // This is called via the call combiner, so access to calld is synchronized.
3174
2886
  void ClientChannelFilter::FilterBasedLoadBalancedCall::PendingBatchesResume() {
3175
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2887
+ if (GRPC_TRACE_FLAG_ENABLED(client_channel_lb_call)) {
3176
2888
  size_t num_batches = 0;
3177
2889
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
3178
2890
  if (pending_batches_[i] != nullptr) ++num_batches;
@@ -3201,8 +2913,8 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::PendingBatchesResume() {
3201
2913
 
3202
2914
  void ClientChannelFilter::FilterBasedLoadBalancedCall::
3203
2915
  StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch) {
3204
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace) ||
3205
- GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
2916
+ if (GRPC_TRACE_FLAG_ENABLED(client_channel_lb_call) ||
2917
+ GRPC_TRACE_FLAG_ENABLED(channel)) {
3206
2918
  gpr_log(GPR_INFO,
3207
2919
  "chand=%p lb_call=%p: batch started from above: %s, "
3208
2920
  "call_attempt_tracer()=%p",
@@ -3256,11 +2968,9 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::
3256
2968
  // the channel's data plane mutex, which is more efficient (especially for
3257
2969
  // streaming calls).
3258
2970
  if (subchannel_call_ != nullptr) {
3259
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3260
- gpr_log(GPR_INFO,
3261
- "chand=%p lb_call=%p: starting batch on subchannel_call=%p",
3262
- chand(), this, subchannel_call_.get());
3263
- }
2971
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2972
+ << "chand=" << chand() << " lb_call=" << this
2973
+ << ": starting batch on subchannel_call=" << subchannel_call_.get();
3264
2974
  subchannel_call_->StartTransportStreamOpBatch(batch);
3265
2975
  return;
3266
2976
  }
@@ -3268,10 +2978,9 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::
3268
2978
  //
3269
2979
  // If we've previously been cancelled, immediately fail any new batches.
3270
2980
  if (GPR_UNLIKELY(!cancel_error_.ok())) {
3271
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3272
- gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
3273
- chand(), this, StatusToString(cancel_error_).c_str());
3274
- }
2981
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2982
+ << "chand=" << chand() << " lb_call=" << this
2983
+ << ": failing batch with error: " << StatusToString(cancel_error_);
3275
2984
  // Note: This will release the call combiner.
3276
2985
  grpc_transport_stream_op_batch_finish_with_failure(batch, cancel_error_,
3277
2986
  call_combiner_);
@@ -3285,10 +2994,9 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::
3285
2994
  // is in the past when the call starts), we can return the right
3286
2995
  // error to the caller when the first batch does get passed down.
3287
2996
  cancel_error_ = batch->payload->cancel_stream.cancel_error;
3288
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3289
- gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
3290
- chand(), this, StatusToString(cancel_error_).c_str());
3291
- }
2997
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
2998
+ << "chand=" << chand() << " lb_call=" << this
2999
+ << ": recording cancel_error=" << StatusToString(cancel_error_).c_str();
3292
3000
  // Fail all pending batches.
3293
3001
  PendingBatchesFail(cancel_error_, NoYieldCallCombiner);
3294
3002
  // Note: This will release the call combiner.
@@ -3304,11 +3012,9 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::
3304
3012
  TryPick(/*was_queued=*/false);
3305
3013
  } else {
3306
3014
  // For all other batches, release the call combiner.
3307
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3308
- gpr_log(GPR_INFO,
3309
- "chand=%p lb_call=%p: saved batch, yielding call combiner",
3310
- chand(), this);
3311
- }
3015
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
3016
+ << "chand=" << chand() << " lb_call=" << this
3017
+ << ": saved batch, yielding call combiner";
3312
3018
  GRPC_CALL_COMBINER_STOP(call_combiner_,
3313
3019
  "batch does not include send_initial_metadata");
3314
3020
  }
@@ -3317,11 +3023,9 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::
3317
3023
  void ClientChannelFilter::FilterBasedLoadBalancedCall::RecvInitialMetadataReady(
3318
3024
  void* arg, grpc_error_handle error) {
3319
3025
  auto* self = static_cast<FilterBasedLoadBalancedCall*>(arg);
3320
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3321
- gpr_log(GPR_INFO,
3322
- "chand=%p lb_call=%p: got recv_initial_metadata_ready: error=%s",
3323
- self->chand(), self, StatusToString(error).c_str());
3324
- }
3026
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
3027
+ << "chand=" << self->chand() << " lb_call=" << self
3028
+ << ": got recv_initial_metadata_ready: error=" << StatusToString(error);
3325
3029
  if (error.ok()) {
3326
3030
  // recv_initial_metadata_flags is not populated for clients
3327
3031
  self->call_attempt_tracer()->RecordReceivedInitialMetadata(
@@ -3336,15 +3040,12 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::RecvInitialMetadataReady(
3336
3040
  void ClientChannelFilter::FilterBasedLoadBalancedCall::
3337
3041
  RecvTrailingMetadataReady(void* arg, grpc_error_handle error) {
3338
3042
  auto* self = static_cast<FilterBasedLoadBalancedCall*>(arg);
3339
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3340
- gpr_log(GPR_INFO,
3341
- "chand=%p lb_call=%p: got recv_trailing_metadata_ready: error=%s "
3342
- "call_attempt_tracer()=%p lb_subchannel_call_tracker_=%p "
3343
- "failure_error_=%s",
3344
- self->chand(), self, StatusToString(error).c_str(),
3345
- self->call_attempt_tracer(), self->lb_subchannel_call_tracker(),
3346
- StatusToString(self->failure_error_).c_str());
3347
- }
3043
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
3044
+ << "chand=" << self->chand() << " lb_call=" << self
3045
+ << ": got recv_trailing_metadata_ready: error=" << StatusToString(error)
3046
+ << " call_attempt_tracer()=" << self->call_attempt_tracer()
3047
+ << " lb_subchannel_call_tracker_=" << self->lb_subchannel_call_tracker()
3048
+ << " failure_error_=" << StatusToString(self->failure_error_);
3348
3049
  // Check if we have a tracer or an LB callback to invoke.
3349
3050
  if (self->call_attempt_tracer() != nullptr ||
3350
3051
  self->lb_subchannel_call_tracker() != nullptr) {
@@ -3354,8 +3055,9 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::
3354
3055
  // Get status from error.
3355
3056
  grpc_status_code code;
3356
3057
  std::string message;
3357
- grpc_error_get_status(error, self->deadline_, &code, &message,
3358
- /*http_error=*/nullptr, /*error_string=*/nullptr);
3058
+ grpc_error_get_status(
3059
+ error, self->arena()->GetContext<Call>()->deadline(), &code, &message,
3060
+ /*http_error=*/nullptr, /*error_string=*/nullptr);
3359
3061
  status = absl::Status(static_cast<absl::StatusCode>(code), message);
3360
3062
  } else {
3361
3063
  // Get status from headers.
@@ -3411,13 +3113,11 @@ class ClientChannelFilter::FilterBasedLoadBalancedCall::LbQueuedCallCanceller
3411
3113
  auto* chand = lb_call->chand();
3412
3114
  {
3413
3115
  MutexLock lock(&chand->lb_mu_);
3414
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3415
- gpr_log(GPR_INFO,
3416
- "chand=%p lb_call=%p: cancelling queued pick: "
3417
- "error=%s self=%p calld->pick_canceller=%p",
3418
- chand, lb_call, StatusToString(error).c_str(), self,
3419
- lb_call->lb_call_canceller_);
3420
- }
3116
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
3117
+ << "chand=" << chand << " lb_call=" << lb_call
3118
+ << ": cancelling queued pick: error=" << StatusToString(error)
3119
+ << " self=" << self
3120
+ << " calld->pick_canceller=" << lb_call->lb_call_canceller_;
3421
3121
  if (lb_call->lb_call_canceller_ == self && !error.ok()) {
3422
3122
  lb_call->Commit();
3423
3123
  // Remove pick from list of queued picks.
@@ -3490,20 +3190,19 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::RetryPickLocked() {
3490
3190
 
3491
3191
  void ClientChannelFilter::FilterBasedLoadBalancedCall::CreateSubchannelCall() {
3492
3192
  Slice* path = send_initial_metadata()->get_pointer(HttpPathMetadata());
3493
- GPR_ASSERT(path != nullptr);
3193
+ CHECK_NE(path, nullptr);
3494
3194
  SubchannelCall::Args call_args = {
3495
3195
  connected_subchannel()->Ref(), pollent_, path->Ref(), /*start_time=*/0,
3496
- deadline_, arena_,
3196
+ arena()->GetContext<Call>()->deadline(),
3497
3197
  // TODO(roth): When we implement hedging support, we will probably
3498
- // need to use a separate call context for each subchannel call.
3499
- call_context(), call_combiner_};
3198
+ // need to use a separate call arena for each subchannel call.
3199
+ arena(), call_combiner_};
3500
3200
  grpc_error_handle error;
3501
3201
  subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
3502
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3503
- gpr_log(GPR_INFO,
3504
- "chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand(),
3505
- this, subchannel_call_.get(), StatusToString(error).c_str());
3506
- }
3202
+ GRPC_TRACE_LOG(client_channel_lb_call, INFO)
3203
+ << "chand=" << chand() << " lb_call=" << this
3204
+ << ": create subchannel_call=" << subchannel_call_.get()
3205
+ << ": error=" << StatusToString(error);
3507
3206
  if (on_call_destruction_complete_ != nullptr) {
3508
3207
  subchannel_call_->SetAfterCallStackDestroy(on_call_destruction_complete_);
3509
3208
  on_call_destruction_complete_ = nullptr;
@@ -3515,150 +3214,4 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::CreateSubchannelCall() {
3515
3214
  }
3516
3215
  }
3517
3216
 
3518
- //
3519
- // ClientChannelFilter::PromiseBasedLoadBalancedCall
3520
- //
3521
-
3522
- ClientChannelFilter::PromiseBasedLoadBalancedCall::PromiseBasedLoadBalancedCall(
3523
- ClientChannelFilter* chand, absl::AnyInvocable<void()> on_commit,
3524
- bool is_transparent_retry)
3525
- : LoadBalancedCall(chand, GetContext<grpc_call_context_element>(),
3526
- std::move(on_commit), is_transparent_retry) {}
3527
-
3528
- ArenaPromise<ServerMetadataHandle>
3529
- ClientChannelFilter::PromiseBasedLoadBalancedCall::MakeCallPromise(
3530
- CallArgs call_args, OrphanablePtr<PromiseBasedLoadBalancedCall> lb_call) {
3531
- pollent_ = NowOrNever(call_args.polling_entity->WaitAndCopy()).value();
3532
- // Record ops in tracer.
3533
- if (call_attempt_tracer() != nullptr) {
3534
- call_attempt_tracer()->RecordSendInitialMetadata(
3535
- call_args.client_initial_metadata.get());
3536
- // TODO(ctiller): Find a way to do this without registering a no-op mapper.
3537
- call_args.client_to_server_messages->InterceptAndMapWithHalfClose(
3538
- [](MessageHandle message) { return message; }, // No-op.
3539
- [this]() {
3540
- // TODO(roth): Change CallTracer API to not pass metadata
3541
- // batch to this method, since the batch is always empty.
3542
- grpc_metadata_batch metadata;
3543
- call_attempt_tracer()->RecordSendTrailingMetadata(&metadata);
3544
- });
3545
- }
3546
- // Extract peer name from server initial metadata.
3547
- call_args.server_initial_metadata->InterceptAndMap(
3548
- [self = lb_call->RefAsSubclass<PromiseBasedLoadBalancedCall>()](
3549
- ServerMetadataHandle metadata) {
3550
- if (self->call_attempt_tracer() != nullptr) {
3551
- self->call_attempt_tracer()->RecordReceivedInitialMetadata(
3552
- metadata.get());
3553
- }
3554
- Slice* peer_string = metadata->get_pointer(PeerString());
3555
- if (peer_string != nullptr) self->peer_string_ = peer_string->Ref();
3556
- return metadata;
3557
- });
3558
- client_initial_metadata_ = std::move(call_args.client_initial_metadata);
3559
- return OnCancel(
3560
- Map(TrySeq(
3561
- // LB pick.
3562
- [this]() -> Poll<absl::Status> {
3563
- auto result = PickSubchannel(was_queued_);
3564
- if (GRPC_TRACE_FLAG_ENABLED(
3565
- grpc_client_channel_lb_call_trace)) {
3566
- gpr_log(GPR_INFO,
3567
- "chand=%p lb_call=%p: %sPickSubchannel() returns %s",
3568
- chand(), this,
3569
- GetContext<Activity>()->DebugTag().c_str(),
3570
- result.has_value() ? result->ToString().c_str()
3571
- : "Pending");
3572
- }
3573
- if (result == absl::nullopt) return Pending{};
3574
- return std::move(*result);
3575
- },
3576
- [this, call_args = std::move(call_args)]() mutable
3577
- -> ArenaPromise<ServerMetadataHandle> {
3578
- call_args.client_initial_metadata =
3579
- std::move(client_initial_metadata_);
3580
- return connected_subchannel()->MakeCallPromise(
3581
- std::move(call_args));
3582
- }),
3583
- // Record call completion.
3584
- [this](ServerMetadataHandle metadata) {
3585
- if (call_attempt_tracer() != nullptr ||
3586
- lb_subchannel_call_tracker() != nullptr) {
3587
- absl::Status status;
3588
- grpc_status_code code = metadata->get(GrpcStatusMetadata())
3589
- .value_or(GRPC_STATUS_UNKNOWN);
3590
- if (code != GRPC_STATUS_OK) {
3591
- absl::string_view message;
3592
- if (const auto* grpc_message =
3593
- metadata->get_pointer(GrpcMessageMetadata())) {
3594
- message = grpc_message->as_string_view();
3595
- }
3596
- status =
3597
- absl::Status(static_cast<absl::StatusCode>(code), message);
3598
- }
3599
- RecordCallCompletion(status, metadata.get(),
3600
- &GetContext<CallContext>()
3601
- ->call_stats()
3602
- ->transport_stream_stats,
3603
- peer_string_.as_string_view());
3604
- }
3605
- RecordLatency();
3606
- return metadata;
3607
- }),
3608
- [lb_call = std::move(lb_call)]() {
3609
- // If the waker is pending, then we need to remove ourself from
3610
- // the list of queued LB calls.
3611
- if (!lb_call->waker_.is_unwakeable()) {
3612
- MutexLock lock(&lb_call->chand()->lb_mu_);
3613
- lb_call->Commit();
3614
- // Remove pick from list of queued picks.
3615
- lb_call->RemoveCallFromLbQueuedCallsLocked();
3616
- // Remove from queued picks list.
3617
- lb_call->chand()->lb_queued_calls_.erase(lb_call.get());
3618
- }
3619
- // TODO(ctiller): We don't have access to the call's actual status
3620
- // here, so we just assume CANCELLED. We could change this to use
3621
- // CallFinalization instead of OnCancel() so that we can get the
3622
- // actual status. But we should also have access to the trailing
3623
- // metadata, which we don't have in either case. Ultimately, we
3624
- // need a better story for code that needs to run at the end of a
3625
- // call in both cancellation and non-cancellation cases that needs
3626
- // access to server trailing metadata and the call's real status.
3627
- if (lb_call->call_attempt_tracer() != nullptr) {
3628
- lb_call->call_attempt_tracer()->RecordCancel(
3629
- absl::CancelledError("call cancelled"));
3630
- }
3631
- if (lb_call->call_attempt_tracer() != nullptr ||
3632
- lb_call->lb_subchannel_call_tracker() != nullptr) {
3633
- // If we were cancelled without recording call completion, then
3634
- // record call completion here, as best we can. We assume status
3635
- // CANCELLED in this case.
3636
- lb_call->RecordCallCompletion(absl::CancelledError("call cancelled"),
3637
- nullptr, nullptr, "");
3638
- }
3639
- });
3640
- }
3641
-
3642
- Arena* ClientChannelFilter::PromiseBasedLoadBalancedCall::arena() const {
3643
- return GetContext<Arena>();
3644
- }
3645
-
3646
- grpc_metadata_batch*
3647
- ClientChannelFilter::PromiseBasedLoadBalancedCall::send_initial_metadata()
3648
- const {
3649
- return client_initial_metadata_.get();
3650
- }
3651
-
3652
- void ClientChannelFilter::PromiseBasedLoadBalancedCall::OnAddToQueueLocked() {
3653
- waker_ = GetContext<Activity>()->MakeNonOwningWaker();
3654
- was_queued_ = true;
3655
- }
3656
-
3657
- void ClientChannelFilter::PromiseBasedLoadBalancedCall::RetryPickLocked() {
3658
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3659
- gpr_log(GPR_INFO, "chand=%p lb_call=%p: RetryPickLocked()", chand(), this);
3660
- }
3661
- waker_.WakeupAsync();
3662
- }
3663
-
3664
3217
  } // namespace grpc_core