grpc 1.64.3 → 1.65.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (632) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +57 -58
  3. data/include/grpc/event_engine/event_engine.h +13 -6
  4. data/include/grpc/impl/channel_arg_names.h +7 -3
  5. data/include/grpc/module.modulemap +1 -0
  6. data/include/grpc/passive_listener.h +62 -0
  7. data/include/grpc/support/log.h +7 -17
  8. data/include/grpc/support/port_platform.h +3 -0
  9. data/src/core/channelz/channel_trace.cc +1 -1
  10. data/src/core/channelz/channel_trace.h +1 -1
  11. data/src/core/channelz/channelz.cc +3 -3
  12. data/src/core/channelz/channelz.h +7 -7
  13. data/src/core/channelz/channelz_registry.cc +4 -3
  14. data/src/core/client_channel/backup_poller.cc +4 -5
  15. data/src/core/client_channel/client_channel.cc +1324 -0
  16. data/src/core/client_channel/client_channel.h +243 -0
  17. data/src/core/client_channel/client_channel_filter.cc +266 -709
  18. data/src/core/client_channel/client_channel_filter.h +11 -64
  19. data/src/core/client_channel/client_channel_internal.h +16 -5
  20. data/src/core/client_channel/client_channel_plugin.cc +1 -14
  21. data/src/core/client_channel/client_channel_service_config.h +3 -3
  22. data/src/core/client_channel/config_selector.cc +1 -1
  23. data/src/core/client_channel/config_selector.h +1 -1
  24. data/src/core/client_channel/dynamic_filters.cc +3 -3
  25. data/src/core/client_channel/dynamic_filters.h +1 -3
  26. data/src/core/client_channel/load_balanced_call_destination.cc +336 -0
  27. data/src/core/client_channel/load_balanced_call_destination.h +49 -0
  28. data/src/core/client_channel/retry_filter.cc +2 -9
  29. data/src/core/client_channel/retry_filter.h +2 -7
  30. data/src/core/client_channel/retry_filter_legacy_call_data.cc +65 -72
  31. data/src/core/client_channel/retry_filter_legacy_call_data.h +0 -2
  32. data/src/core/client_channel/retry_service_config.cc +4 -5
  33. data/src/core/client_channel/retry_service_config.h +3 -3
  34. data/src/core/client_channel/subchannel.cc +220 -112
  35. data/src/core/client_channel/subchannel.h +31 -18
  36. data/src/core/client_channel/subchannel_pool_interface.cc +0 -2
  37. data/src/core/client_channel/subchannel_pool_interface.h +2 -4
  38. data/src/core/client_channel/subchannel_stream_client.cc +36 -49
  39. data/src/core/client_channel/subchannel_stream_client.h +2 -4
  40. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +7 -10
  41. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +1 -0
  42. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
  43. data/src/core/ext/filters/census/grpc_context.cc +2 -4
  44. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -15
  45. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -0
  46. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -7
  47. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -0
  48. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
  49. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -0
  50. data/src/core/ext/filters/http/client/http_client_filter.h +1 -0
  51. data/src/core/ext/filters/http/client_authority_filter.cc +1 -0
  52. data/src/core/ext/filters/http/client_authority_filter.h +1 -0
  53. data/src/core/ext/filters/http/message_compress/compression_filter.cc +10 -15
  54. data/src/core/ext/filters/http/message_compress/compression_filter.h +2 -0
  55. data/src/core/ext/filters/http/server/http_server_filter.cc +2 -2
  56. data/src/core/ext/filters/http/server/http_server_filter.h +1 -0
  57. data/src/core/ext/filters/message_size/message_size_filter.cc +6 -9
  58. data/src/core/ext/filters/message_size/message_size_filter.h +6 -6
  59. data/src/core/ext/filters/rbac/rbac_filter.cc +2 -5
  60. data/src/core/ext/filters/rbac/rbac_filter.h +1 -0
  61. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
  62. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
  63. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +2 -6
  64. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +1 -0
  65. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
  66. data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
  67. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -25
  68. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -5
  69. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +223 -148
  70. data/src/core/ext/transport/chttp2/server/chttp2_server.h +33 -0
  71. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +131 -107
  72. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -8
  73. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -1
  74. data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -4
  75. data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -2
  76. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -6
  77. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -2
  78. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +9 -5
  79. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -4
  80. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +9 -2
  81. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -43
  82. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
  83. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +3 -8
  84. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
  85. data/src/core/ext/transport/chttp2/transport/http2_settings.h +1 -1
  86. data/src/core/ext/transport/chttp2/transport/internal.h +29 -19
  87. data/src/core/ext/transport/chttp2/transport/parsing.cc +15 -25
  88. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +0 -2
  89. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +0 -2
  90. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +29 -13
  91. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +5 -4
  92. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -5
  93. data/src/core/ext/transport/chttp2/transport/writing.cc +24 -25
  94. data/src/core/ext/transport/inproc/inproc_transport.cc +56 -32
  95. data/src/core/ext/transport/inproc/inproc_transport.h +1 -3
  96. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +13 -15
  97. data/src/core/ext/transport/inproc/legacy_inproc_transport.h +0 -2
  98. data/src/core/handshaker/handshaker.cc +6 -14
  99. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +9 -17
  100. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +3 -2
  101. data/src/core/handshaker/security/secure_endpoint.cc +38 -32
  102. data/src/core/handshaker/security/secure_endpoint.h +0 -2
  103. data/src/core/handshaker/security/security_handshaker.cc +25 -37
  104. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -1
  105. data/src/core/lib/address_utils/parse_address.cc +27 -39
  106. data/src/core/lib/address_utils/sockaddr_utils.cc +5 -6
  107. data/src/core/lib/avl/avl.h +1 -1
  108. data/src/core/lib/channel/channel_args.cc +13 -17
  109. data/src/core/lib/channel/channel_args.h +19 -8
  110. data/src/core/lib/channel/channel_stack.cc +5 -63
  111. data/src/core/lib/channel/channel_stack.h +13 -37
  112. data/src/core/lib/channel/channel_stack_builder.h +0 -5
  113. data/src/core/lib/channel/channel_stack_builder_impl.cc +0 -142
  114. data/src/core/lib/channel/channel_stack_builder_impl.h +0 -2
  115. data/src/core/lib/channel/connected_channel.cc +37 -676
  116. data/src/core/lib/channel/promise_based_filter.cc +41 -47
  117. data/src/core/lib/channel/promise_based_filter.h +124 -477
  118. data/src/core/lib/channel/status_util.cc +1 -1
  119. data/src/core/lib/compression/compression.cc +1 -1
  120. data/src/core/lib/compression/message_compress.cc +6 -6
  121. data/src/core/lib/config/config_vars.cc +3 -8
  122. data/src/core/lib/config/config_vars.h +1 -5
  123. data/src/core/lib/debug/event_log.h +1 -1
  124. data/src/core/lib/debug/trace.cc +43 -59
  125. data/src/core/lib/debug/trace.h +2 -97
  126. data/src/core/lib/debug/trace_flags.cc +255 -0
  127. data/src/core/lib/debug/trace_flags.h +133 -0
  128. data/src/core/lib/debug/trace_impl.h +115 -0
  129. data/src/core/lib/event_engine/ares_resolver.cc +5 -7
  130. data/src/core/lib/event_engine/ares_resolver.h +1 -3
  131. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +1 -1
  132. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +17 -22
  133. data/src/core/lib/event_engine/event_engine.cc +29 -4
  134. data/src/core/lib/event_engine/extensions/supports_fd.h +7 -0
  135. data/src/core/lib/event_engine/extensions/tcp_trace.h +43 -0
  136. data/src/core/lib/event_engine/forkable.cc +4 -5
  137. data/src/core/lib/event_engine/forkable.h +0 -11
  138. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +10 -11
  139. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +4 -3
  140. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +1 -1
  141. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +19 -33
  142. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -2
  143. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +24 -7
  144. data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -0
  145. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +14 -16
  146. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +18 -22
  147. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +13 -17
  148. data/src/core/lib/event_engine/posix_engine/timer.cc +1 -1
  149. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +4 -6
  150. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -1
  151. data/src/core/lib/event_engine/shim.cc +1 -1
  152. data/src/core/lib/event_engine/tcp_socket_utils.cc +6 -8
  153. data/src/core/lib/event_engine/thread_local.h +1 -1
  154. data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
  155. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +19 -21
  156. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -6
  157. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +14 -13
  158. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +4 -3
  159. data/src/core/lib/event_engine/trace.h +6 -17
  160. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  161. data/src/core/lib/event_engine/windows/win_socket.cc +23 -17
  162. data/src/core/lib/event_engine/windows/win_socket.h +4 -5
  163. data/src/core/lib/event_engine/windows/windows_endpoint.cc +6 -9
  164. data/src/core/lib/event_engine/windows/windows_engine.cc +201 -87
  165. data/src/core/lib/event_engine/windows/windows_engine.h +136 -25
  166. data/src/core/lib/event_engine/windows/windows_listener.cc +12 -23
  167. data/src/core/lib/experiments/experiments.cc +35 -151
  168. data/src/core/lib/experiments/experiments.h +12 -45
  169. data/src/core/lib/gprpp/bitset.h +1 -1
  170. data/src/core/lib/gprpp/crash.cc +2 -3
  171. data/src/core/lib/gprpp/dual_ref_counted.h +45 -33
  172. data/src/core/lib/gprpp/dump_args.cc +54 -0
  173. data/src/core/lib/gprpp/dump_args.h +69 -0
  174. data/src/core/lib/gprpp/glob.cc +70 -0
  175. data/src/core/lib/gprpp/glob.h +29 -0
  176. data/src/core/lib/gprpp/per_cpu.cc +1 -1
  177. data/src/core/lib/gprpp/posix/stat.cc +3 -4
  178. data/src/core/lib/gprpp/posix/thd.cc +8 -9
  179. data/src/core/lib/gprpp/ref_counted.h +30 -22
  180. data/src/core/lib/gprpp/single_set_ptr.h +5 -3
  181. data/src/core/lib/gprpp/status_helper.cc +11 -30
  182. data/src/core/lib/gprpp/status_helper.h +3 -31
  183. data/src/core/lib/gprpp/time.cc +3 -4
  184. data/src/core/lib/gprpp/time.h +3 -2
  185. data/src/core/lib/gprpp/unique_type_name.h +1 -1
  186. data/src/core/lib/gprpp/validation_errors.cc +10 -1
  187. data/src/core/lib/gprpp/validation_errors.h +11 -0
  188. data/src/core/lib/gprpp/windows/stat.cc +3 -4
  189. data/src/core/lib/gprpp/windows/thd.cc +3 -2
  190. data/src/core/lib/gprpp/work_serializer.cc +48 -57
  191. data/src/core/lib/iomgr/buffer_list.cc +4 -2
  192. data/src/core/lib/iomgr/call_combiner.cc +18 -27
  193. data/src/core/lib/iomgr/call_combiner.h +1 -3
  194. data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
  195. data/src/core/lib/iomgr/closure.h +2 -4
  196. data/src/core/lib/iomgr/combiner.cc +6 -8
  197. data/src/core/lib/iomgr/combiner.h +0 -2
  198. data/src/core/lib/iomgr/endpoint.cc +0 -6
  199. data/src/core/lib/iomgr/endpoint.h +0 -2
  200. data/src/core/lib/iomgr/endpoint_cfstream.cc +19 -41
  201. data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
  202. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
  203. data/src/core/lib/iomgr/error.cc +13 -21
  204. data/src/core/lib/iomgr/error.h +1 -1
  205. data/src/core/lib/iomgr/ev_apple.cc +3 -5
  206. data/src/core/lib/iomgr/ev_epoll1_linux.cc +43 -42
  207. data/src/core/lib/iomgr/ev_poll_posix.cc +38 -29
  208. data/src/core/lib/iomgr/ev_posix.cc +8 -9
  209. data/src/core/lib/iomgr/ev_posix.h +10 -7
  210. data/src/core/lib/iomgr/event_engine_shims/closure.cc +2 -2
  211. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +14 -28
  212. data/src/core/lib/iomgr/exec_ctx.cc +2 -2
  213. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  214. data/src/core/lib/iomgr/executor.cc +6 -15
  215. data/src/core/lib/iomgr/executor.h +1 -1
  216. data/src/core/lib/iomgr/fork_posix.cc +8 -10
  217. data/src/core/lib/iomgr/fork_windows.cc +3 -1
  218. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
  219. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
  220. data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
  221. data/src/core/lib/iomgr/iocp_windows.cc +4 -3
  222. data/src/core/lib/iomgr/iomgr.cc +13 -17
  223. data/src/core/lib/iomgr/lockfree_event.cc +3 -5
  224. data/src/core/lib/iomgr/pollset.h +0 -2
  225. data/src/core/lib/iomgr/pollset_windows.cc +0 -2
  226. data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
  227. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
  228. data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
  229. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  230. data/src/core/lib/iomgr/socket_utils_common_posix.cc +11 -17
  231. data/src/core/lib/iomgr/socket_windows.cc +4 -6
  232. data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
  233. data/src/core/lib/iomgr/tcp_client_posix.cc +9 -15
  234. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -4
  235. data/src/core/lib/iomgr/tcp_posix.cc +57 -84
  236. data/src/core/lib/iomgr/tcp_posix.h +0 -2
  237. data/src/core/lib/iomgr/tcp_server_posix.cc +3 -3
  238. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +4 -6
  239. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -7
  240. data/src/core/lib/iomgr/tcp_server_windows.cc +10 -16
  241. data/src/core/lib/iomgr/tcp_windows.cc +25 -41
  242. data/src/core/lib/iomgr/timer_generic.cc +17 -20
  243. data/src/core/lib/iomgr/timer_heap.cc +1 -1
  244. data/src/core/lib/iomgr/timer_manager.cc +17 -30
  245. data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
  246. data/src/core/lib/iomgr/vsock.cc +1 -1
  247. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
  248. data/src/core/lib/promise/activity.h +27 -4
  249. data/src/core/lib/promise/cancel_callback.h +24 -0
  250. data/src/core/lib/promise/context.h +11 -0
  251. data/src/core/lib/promise/detail/basic_seq.h +1 -2
  252. data/src/core/lib/promise/detail/join_state.h +354 -398
  253. data/src/core/lib/promise/detail/promise_like.h +6 -5
  254. data/src/core/lib/promise/detail/seq_state.h +1178 -1178
  255. data/src/core/lib/promise/for_each.h +6 -6
  256. data/src/core/lib/promise/interceptor_list.h +6 -7
  257. data/src/core/lib/promise/latch.h +9 -9
  258. data/src/core/lib/promise/map.h +17 -0
  259. data/src/core/lib/promise/observable.h +182 -0
  260. data/src/core/lib/promise/party.cc +7 -8
  261. data/src/core/lib/promise/party.h +10 -8
  262. data/src/core/lib/promise/pipe.h +16 -35
  263. data/src/core/lib/promise/promise.h +1 -0
  264. data/src/core/lib/promise/status_flag.h +2 -0
  265. data/src/core/lib/resource_quota/arena.cc +56 -79
  266. data/src/core/lib/resource_quota/arena.h +118 -209
  267. data/src/core/lib/resource_quota/memory_quota.cc +12 -13
  268. data/src/core/lib/resource_quota/memory_quota.h +2 -3
  269. data/src/core/lib/resource_quota/periodic_update.cc +1 -1
  270. data/src/core/lib/resource_quota/resource_quota.h +1 -1
  271. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  272. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  273. data/src/core/lib/security/authorization/evaluate_args.cc +6 -8
  274. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +5 -6
  275. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -0
  276. data/src/core/lib/security/authorization/matchers.cc +3 -3
  277. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +2 -2
  278. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +2 -3
  279. data/src/core/lib/security/context/security_context.cc +12 -13
  280. data/src/core/lib/security/context/security_context.h +31 -8
  281. data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
  282. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +3 -1
  283. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
  284. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -5
  285. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +3 -3
  286. data/src/core/lib/security/credentials/call_creds_util.cc +2 -1
  287. data/src/core/lib/security/credentials/channel_creds_registry.h +2 -2
  288. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +5 -3
  289. data/src/core/lib/security/credentials/composite/composite_credentials.h +1 -1
  290. data/src/core/lib/security/credentials/credentials.cc +6 -6
  291. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -4
  292. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
  293. data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -11
  294. data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
  295. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +2 -2
  296. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -4
  297. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -1
  298. data/src/core/lib/security/credentials/fake/fake_credentials.h +1 -1
  299. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
  300. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +11 -11
  301. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -1
  302. data/src/core/lib/security/credentials/iam/iam_credentials.h +1 -1
  303. data/src/core/lib/security/credentials/jwt/json_token.cc +14 -15
  304. data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
  305. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +6 -5
  306. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -1
  307. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +50 -54
  308. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
  309. data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
  310. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +12 -11
  311. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
  312. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
  313. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -3
  314. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +15 -21
  315. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
  316. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +21 -30
  317. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +1 -1
  318. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +1 -1
  319. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -4
  320. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +3 -5
  321. data/src/core/lib/security/credentials/tls/tls_credentials.cc +14 -16
  322. data/src/core/lib/security/credentials/tls/tls_utils.cc +4 -4
  323. data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -1
  324. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -16
  325. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +15 -12
  326. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +6 -6
  327. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
  328. data/src/core/lib/security/security_connector/local/local_security_connector.cc +8 -12
  329. data/src/core/lib/security/security_connector/security_connector.cc +1 -4
  330. data/src/core/lib/security/security_connector/security_connector.h +1 -3
  331. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +17 -19
  332. data/src/core/lib/security/security_connector/ssl_utils.cc +19 -21
  333. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +29 -40
  334. data/src/core/lib/security/transport/auth_filters.h +1 -0
  335. data/src/core/lib/security/transport/client_auth_filter.cc +7 -13
  336. data/src/core/lib/security/transport/server_auth_filter.cc +3 -8
  337. data/src/core/lib/security/util/json_util.h +1 -1
  338. data/src/core/lib/slice/slice.h +1 -1
  339. data/src/core/lib/slice/slice_refcount.h +2 -4
  340. data/src/core/lib/slice/slice_string_helpers.cc +1 -1
  341. data/src/core/lib/surface/api_trace.h +1 -3
  342. data/src/core/lib/surface/call.cc +64 -3738
  343. data/src/core/lib/surface/call.h +41 -143
  344. data/src/core/lib/surface/call_log_batch.cc +1 -1
  345. data/src/core/lib/surface/call_utils.cc +276 -0
  346. data/src/core/lib/surface/call_utils.h +449 -0
  347. data/src/core/lib/surface/channel.cc +8 -3
  348. data/src/core/lib/surface/channel.h +10 -7
  349. data/src/core/lib/surface/channel_create.cc +14 -6
  350. data/src/core/lib/surface/channel_create.h +3 -2
  351. data/src/core/lib/surface/channel_init.cc +21 -77
  352. data/src/core/lib/surface/channel_init.h +19 -97
  353. data/src/core/lib/surface/client_call.cc +419 -0
  354. data/src/core/lib/surface/client_call.h +180 -0
  355. data/src/core/lib/surface/completion_queue.cc +28 -33
  356. data/src/core/lib/surface/completion_queue.h +0 -8
  357. data/src/core/lib/surface/filter_stack_call.cc +1157 -0
  358. data/src/core/lib/surface/filter_stack_call.h +369 -0
  359. data/src/core/lib/surface/init.cc +7 -6
  360. data/src/core/lib/surface/lame_client.cc +1 -1
  361. data/src/core/lib/surface/legacy_channel.cc +40 -27
  362. data/src/core/lib/surface/legacy_channel.h +9 -18
  363. data/src/core/lib/surface/server_call.cc +222 -0
  364. data/src/core/lib/surface/server_call.h +167 -0
  365. data/src/core/lib/surface/version.cc +2 -2
  366. data/src/core/lib/transport/bdp_estimator.cc +3 -5
  367. data/src/core/lib/transport/bdp_estimator.h +2 -4
  368. data/src/core/lib/transport/call_arena_allocator.h +9 -7
  369. data/src/core/lib/transport/call_destination.h +76 -0
  370. data/src/core/lib/transport/call_filters.cc +28 -10
  371. data/src/core/lib/transport/call_filters.h +128 -22
  372. data/src/core/lib/transport/call_spine.cc +5 -6
  373. data/src/core/lib/transport/call_spine.h +159 -334
  374. data/src/core/lib/transport/connectivity_state.cc +8 -10
  375. data/src/core/lib/transport/connectivity_state.h +0 -2
  376. data/src/core/lib/transport/interception_chain.cc +155 -0
  377. data/src/core/lib/transport/interception_chain.h +236 -0
  378. data/src/core/lib/transport/metadata_batch.h +10 -1
  379. data/src/core/lib/transport/metadata_info.h +1 -1
  380. data/src/core/lib/transport/transport.cc +3 -6
  381. data/src/core/lib/transport/transport.h +43 -40
  382. data/src/core/load_balancing/child_policy_handler.cc +8 -8
  383. data/src/core/load_balancing/endpoint_list.cc +5 -5
  384. data/src/core/load_balancing/endpoint_list.h +1 -1
  385. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -0
  386. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -0
  387. data/src/core/load_balancing/grpclb/grpclb.cc +25 -29
  388. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +1 -1
  389. data/src/core/load_balancing/grpclb/load_balancer_api.cc +3 -4
  390. data/src/core/load_balancing/health_check_client.cc +10 -13
  391. data/src/core/load_balancing/lb_policy.cc +5 -8
  392. data/src/core/load_balancing/lb_policy.h +19 -3
  393. data/src/core/load_balancing/lb_policy_factory.h +1 -1
  394. data/src/core/load_balancing/lb_policy_registry.cc +2 -3
  395. data/src/core/load_balancing/lb_policy_registry.h +1 -1
  396. data/src/core/load_balancing/oob_backend_metric.cc +2 -4
  397. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +33 -35
  398. data/src/core/load_balancing/outlier_detection/outlier_detection.h +3 -3
  399. data/src/core/load_balancing/pick_first/pick_first.cc +65 -65
  400. data/src/core/load_balancing/priority/priority.cc +26 -28
  401. data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -13
  402. data/src/core/load_balancing/ring_hash/ring_hash.h +3 -3
  403. data/src/core/load_balancing/rls/rls.cc +82 -82
  404. data/src/core/load_balancing/round_robin/round_robin.cc +17 -20
  405. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +54 -43
  406. data/src/core/load_balancing/weighted_target/weighted_target.cc +21 -24
  407. data/src/core/load_balancing/xds/cds.cc +14 -16
  408. data/src/core/load_balancing/xds/xds_cluster_impl.cc +16 -18
  409. data/src/core/load_balancing/xds/xds_cluster_manager.cc +15 -17
  410. data/src/core/load_balancing/xds/xds_override_host.cc +40 -41
  411. data/src/core/load_balancing/xds/xds_override_host.h +3 -3
  412. data/src/core/load_balancing/xds/xds_wrr_locality.cc +10 -12
  413. data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -1
  414. data/src/core/resolver/binder/binder_resolver.cc +3 -2
  415. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +3 -2
  416. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
  417. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +7 -14
  418. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -5
  419. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  420. data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -5
  421. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +4 -9
  422. data/src/core/resolver/dns/event_engine/service_config_helper.cc +5 -5
  423. data/src/core/resolver/dns/native/dns_resolver.cc +8 -9
  424. data/src/core/resolver/endpoint_addresses.cc +1 -1
  425. data/src/core/resolver/fake/fake_resolver.cc +1 -1
  426. data/src/core/resolver/fake/fake_resolver.h +1 -1
  427. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +13 -14
  428. data/src/core/resolver/polling_resolver.cc +30 -35
  429. data/src/core/resolver/resolver.cc +2 -6
  430. data/src/core/resolver/resolver.h +0 -2
  431. data/src/core/resolver/resolver_registry.cc +6 -8
  432. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +3 -3
  433. data/src/core/resolver/xds/xds_dependency_manager.cc +22 -23
  434. data/src/core/resolver/xds/xds_resolver.cc +13 -15
  435. data/src/core/server/server.cc +269 -389
  436. data/src/core/server/server.h +37 -19
  437. data/src/core/server/server_call_tracer_filter.cc +7 -14
  438. data/src/core/server/server_config_selector.h +1 -1
  439. data/src/core/server/server_config_selector_filter.cc +3 -3
  440. data/src/core/server/server_interface.h +2 -0
  441. data/src/core/server/xds_channel_stack_modifier.cc +1 -1
  442. data/src/core/server/xds_channel_stack_modifier.h +1 -1
  443. data/src/core/server/xds_server_config_fetcher.cc +1 -4
  444. data/src/core/service_config/service_config.h +1 -1
  445. data/src/core/service_config/service_config_call_data.h +13 -11
  446. data/src/core/service_config/service_config_channel_arg_filter.cc +6 -4
  447. data/src/core/service_config/service_config_impl.cc +5 -5
  448. data/src/core/service_config/service_config_impl.h +1 -1
  449. data/src/core/service_config/service_config_parser.cc +3 -6
  450. data/src/core/service_config/service_config_parser.h +1 -1
  451. data/src/core/{lib/channel → telemetry}/call_tracer.cc +20 -30
  452. data/src/core/{lib/channel → telemetry}/call_tracer.h +32 -9
  453. data/src/core/{lib/debug → telemetry}/histogram_view.cc +1 -1
  454. data/src/core/{lib/debug → telemetry}/histogram_view.h +3 -3
  455. data/src/core/telemetry/metrics.cc +178 -0
  456. data/src/core/telemetry/metrics.h +562 -0
  457. data/src/core/{lib/debug → telemetry}/stats.cc +1 -1
  458. data/src/core/{lib/debug → telemetry}/stats.h +5 -5
  459. data/src/core/{lib/debug → telemetry}/stats_data.cc +1 -1
  460. data/src/core/{lib/debug → telemetry}/stats_data.h +4 -4
  461. data/src/core/{lib/channel → telemetry}/tcp_tracer.h +3 -3
  462. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +12 -13
  463. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +25 -27
  464. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -33
  465. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
  466. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -1
  467. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +5 -4
  468. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +5 -3
  469. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  470. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -3
  471. data/src/core/tsi/fake_transport_security.cc +14 -17
  472. data/src/core/tsi/local_transport_security.cc +6 -5
  473. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -4
  474. data/src/core/tsi/ssl_transport_security.cc +76 -81
  475. data/src/core/tsi/ssl_transport_security_utils.cc +74 -18
  476. data/src/core/tsi/ssl_transport_security_utils.h +11 -0
  477. data/src/core/tsi/transport_security.cc +0 -4
  478. data/src/core/tsi/transport_security.h +0 -2
  479. data/src/core/tsi/transport_security_interface.h +0 -4
  480. data/src/core/{lib/gpr → util}/alloc.h +3 -3
  481. data/src/core/{lib/gpr → util}/android/log.cc +0 -19
  482. data/src/core/{lib/gpr → util}/atm.cc +1 -1
  483. data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +25 -26
  484. data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +11 -11
  485. data/src/core/{lib/http → util/http_client}/format_request.cc +4 -3
  486. data/src/core/{lib/http → util/http_client}/format_request.h +6 -5
  487. data/src/core/{lib/http → util/http_client}/httpcli.cc +9 -10
  488. data/src/core/{lib/http → util/http_client}/httpcli.h +6 -5
  489. data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +9 -9
  490. data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +5 -4
  491. data/src/core/{lib/http → util/http_client}/parser.cc +4 -5
  492. data/src/core/{lib/http → util/http_client}/parser.h +5 -6
  493. data/src/core/{lib → util}/json/json.h +5 -4
  494. data/src/core/{lib → util}/json/json_args.h +5 -5
  495. data/src/core/{lib → util}/json/json_channel_args.h +6 -6
  496. data/src/core/{lib → util}/json/json_object_loader.cc +3 -2
  497. data/src/core/{lib → util}/json/json_object_loader.h +7 -7
  498. data/src/core/{lib → util}/json/json_reader.cc +3 -2
  499. data/src/core/{lib → util}/json/json_reader.h +6 -6
  500. data/src/core/{lib → util}/json/json_util.cc +4 -4
  501. data/src/core/{lib → util}/json/json_util.h +6 -6
  502. data/src/core/{lib → util}/json/json_writer.cc +3 -3
  503. data/src/core/{lib → util}/json/json_writer.h +6 -6
  504. data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
  505. data/src/core/util/log.cc +165 -0
  506. data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
  507. data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
  508. data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
  509. data/src/core/{lib/gpr → util}/posix/time.cc +1 -1
  510. data/src/core/{lib/gpr → util}/posix/tmpfile.cc +2 -2
  511. data/src/core/{lib/gpr → util}/spinlock.h +3 -3
  512. data/src/core/{lib/gpr → util}/string.cc +2 -2
  513. data/src/core/{lib/gpr → util}/string.h +3 -3
  514. data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
  515. data/src/core/{lib/gpr → util}/time_precise.h +3 -3
  516. data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
  517. data/src/core/{lib/gpr → util}/useful.h +3 -3
  518. data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
  519. data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
  520. data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
  521. data/src/core/{lib/gpr → util}/windows/time.cc +1 -1
  522. data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
  523. data/src/core/xds/grpc/certificate_provider_store.cc +3 -3
  524. data/src/core/xds/grpc/certificate_provider_store.h +4 -4
  525. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
  526. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +3 -3
  527. data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
  528. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +5 -5
  529. data/src/core/xds/grpc/xds_bootstrap_grpc.h +3 -3
  530. data/src/core/xds/grpc/xds_certificate_provider.h +1 -1
  531. data/src/core/xds/grpc/xds_client_grpc.cc +27 -23
  532. data/src/core/xds/grpc/xds_client_grpc.h +2 -2
  533. data/src/core/xds/grpc/xds_cluster.cc +4 -5
  534. data/src/core/xds/grpc/xds_cluster.h +1 -1
  535. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  536. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
  537. data/src/core/xds/grpc/xds_common_types.cc +1 -1
  538. data/src/core/xds/grpc/xds_common_types.h +1 -1
  539. data/src/core/xds/grpc/xds_endpoint.cc +4 -5
  540. data/src/core/xds/grpc/xds_http_fault_filter.cc +2 -2
  541. data/src/core/xds/grpc/xds_http_filters.h +2 -2
  542. data/src/core/xds/grpc/xds_http_rbac_filter.cc +3 -3
  543. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +2 -2
  544. data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
  545. data/src/core/xds/grpc/xds_listener.cc +4 -6
  546. data/src/core/xds/grpc/xds_route_config.cc +7 -8
  547. data/src/core/xds/grpc/xds_transport_grpc.cc +2 -2
  548. data/src/core/xds/grpc/xds_transport_grpc.h +1 -1
  549. data/src/core/xds/xds_client/xds_api.cc +5 -9
  550. data/src/core/xds/xds_client/xds_bootstrap.cc +1 -1
  551. data/src/core/xds/xds_client/xds_bootstrap.h +1 -1
  552. data/src/core/xds/xds_client/xds_client.cc +39 -45
  553. data/src/core/xds/xds_client/xds_client.h +0 -3
  554. data/src/core/xds/xds_client/xds_client_stats.cc +6 -6
  555. data/src/core/xds/xds_client/xds_client_stats.h +2 -2
  556. data/src/ruby/bin/math_pb.rb +1 -22
  557. data/src/ruby/ext/grpc/rb_call.c +8 -1
  558. data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
  559. data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
  560. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
  561. data/src/ruby/ext/grpc/rb_server.c +39 -22
  562. data/src/ruby/lib/grpc/version.rb +1 -1
  563. data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
  564. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
  565. data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
  566. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
  567. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
  568. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
  569. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
  570. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
  571. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +12 -12
  572. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
  573. data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1497 -0
  574. data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
  575. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -3
  576. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -2
  577. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
  578. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -0
  579. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +45 -1
  580. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
  581. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
  582. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +9 -4
  583. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +6 -0
  584. data/third_party/boringssl-with-bazel/src/crypto/internal.h +7 -0
  585. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +0 -4
  586. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
  587. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
  588. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +7 -17
  589. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -6
  590. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +3 -0
  591. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +125 -0
  592. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +0 -23
  593. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
  594. data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -10
  595. metadata +103 -93
  596. data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
  597. data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
  598. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
  599. data/src/core/handshaker/security/tsi_error.cc +0 -31
  600. data/src/core/handshaker/security/tsi_error.h +0 -30
  601. data/src/core/lib/channel/channel_stack_trace.cc +0 -19
  602. data/src/core/lib/channel/channel_stack_trace.h +0 -24
  603. data/src/core/lib/channel/context.h +0 -105
  604. data/src/core/lib/channel/metrics.cc +0 -334
  605. data/src/core/lib/channel/metrics.h +0 -365
  606. data/src/core/lib/event_engine/trace.cc +0 -25
  607. data/src/core/lib/gpr/log.cc +0 -166
  608. data/src/core/lib/iomgr/ev_windows.cc +0 -30
  609. data/src/core/lib/promise/trace.cc +0 -20
  610. data/src/core/lib/promise/trace.h +0 -24
  611. data/src/core/lib/resource_quota/trace.cc +0 -19
  612. data/src/core/lib/resource_quota/trace.h +0 -24
  613. data/src/core/lib/slice/slice_refcount.cc +0 -20
  614. data/src/core/lib/surface/api_trace.cc +0 -25
  615. data/src/core/lib/surface/call_trace.h +0 -24
  616. data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
  617. data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
  618. data/src/core/lib/transport/batch_builder.cc +0 -172
  619. data/src/core/lib/transport/batch_builder.h +0 -474
  620. data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
  621. data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
  622. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
  623. /data/src/core/{lib/gpr → util}/alloc.cc +0 -0
  624. /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
  625. /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
  626. /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
  627. /data/src/core/{lib/gpr → util}/posix/sync.cc +0 -0
  628. /data/src/core/{lib/gpr → util}/sync.cc +0 -0
  629. /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
  630. /data/src/core/{lib/gpr → util}/time.cc +0 -0
  631. /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
  632. /data/src/core/{lib/gpr → util}/windows/sync.cc +0 -0
@@ -24,12 +24,11 @@
24
24
  #include <utility>
25
25
 
26
26
  #include "absl/log/check.h"
27
+ #include "absl/log/log.h"
27
28
 
28
29
  #include <grpc/status.h>
29
- #include <grpc/support/log.h>
30
30
 
31
31
  #include "src/core/lib/channel/channel_args.h"
32
- #include "src/core/lib/gpr/time_precise.h"
33
32
  #include "src/core/lib/gprpp/debug_location.h"
34
33
  #include "src/core/lib/gprpp/status_helper.h"
35
34
  #include "src/core/lib/gprpp/sync.h"
@@ -37,6 +36,7 @@
37
36
  #include "src/core/lib/iomgr/exec_ctx.h"
38
37
  #include "src/core/lib/resource_quota/resource_quota.h"
39
38
  #include "src/core/lib/transport/error_utils.h"
39
+ #include "src/core/util/time_precise.h"
40
40
 
41
41
  #define SUBCHANNEL_STREAM_INITIAL_CONNECT_BACKOFF_SECONDS 1
42
42
  #define SUBCHANNEL_STREAM_RECONNECT_BACKOFF_MULTIPLIER 1.6
@@ -59,12 +59,13 @@ SubchannelStreamClient::SubchannelStreamClient(
59
59
  connected_subchannel_(std::move(connected_subchannel)),
60
60
  interested_parties_(interested_parties),
61
61
  tracer_(tracer),
62
- call_allocator_(
62
+ call_allocator_(MakeRefCounted<CallArenaAllocator>(
63
63
  connected_subchannel_->args()
64
64
  .GetObject<ResourceQuota>()
65
65
  ->memory_quota()
66
66
  ->CreateMemoryAllocator(
67
- (tracer != nullptr) ? tracer : "SubchannelStreamClient")),
67
+ (tracer != nullptr) ? tracer : "SubchannelStreamClient"),
68
+ 1024)),
68
69
  event_handler_(std::move(event_handler)),
69
70
  retry_backoff_(
70
71
  BackOff::Options()
@@ -76,22 +77,22 @@ SubchannelStreamClient::SubchannelStreamClient(
76
77
  SUBCHANNEL_STREAM_RECONNECT_MAX_BACKOFF_SECONDS))),
77
78
  event_engine_(connected_subchannel_->args().GetObject<EventEngine>()) {
78
79
  if (GPR_UNLIKELY(tracer_ != nullptr)) {
79
- gpr_log(GPR_INFO, "%s %p: created SubchannelStreamClient", tracer_, this);
80
+ LOG(INFO) << tracer_ << " " << this << ": created SubchannelStreamClient";
80
81
  }
81
82
  StartCall();
82
83
  }
83
84
 
84
85
  SubchannelStreamClient::~SubchannelStreamClient() {
85
86
  if (GPR_UNLIKELY(tracer_ != nullptr)) {
86
- gpr_log(GPR_INFO, "%s %p: destroying SubchannelStreamClient", tracer_,
87
- this);
87
+ LOG(INFO) << tracer_ << " " << this
88
+ << ": destroying SubchannelStreamClient";
88
89
  }
89
90
  }
90
91
 
91
92
  void SubchannelStreamClient::Orphan() {
92
93
  if (GPR_UNLIKELY(tracer_ != nullptr)) {
93
- gpr_log(GPR_INFO, "%s %p: SubchannelStreamClient shutting down", tracer_,
94
- this);
94
+ LOG(INFO) << tracer_ << " " << this
95
+ << ": SubchannelStreamClient shutting down";
95
96
  }
96
97
  {
97
98
  MutexLock lock(&mu_);
@@ -118,8 +119,9 @@ void SubchannelStreamClient::StartCallLocked() {
118
119
  }
119
120
  call_state_ = MakeOrphanable<CallState>(Ref(), interested_parties_);
120
121
  if (GPR_UNLIKELY(tracer_ != nullptr)) {
121
- gpr_log(GPR_INFO, "%s %p: SubchannelStreamClient created CallState %p",
122
- tracer_, this, call_state_.get());
122
+ LOG(INFO) << tracer_ << " " << this
123
+ << ": SubchannelStreamClient created CallState "
124
+ << call_state_.get();
123
125
  }
124
126
  call_state_->StartCallLocked();
125
127
  }
@@ -130,13 +132,13 @@ void SubchannelStreamClient::StartRetryTimerLocked() {
130
132
  }
131
133
  const Duration timeout = retry_backoff_.NextAttemptTime() - Timestamp::Now();
132
134
  if (GPR_UNLIKELY(tracer_ != nullptr)) {
133
- gpr_log(GPR_INFO, "%s %p: SubchannelStreamClient health check call lost...",
134
- tracer_, this);
135
+ LOG(INFO) << tracer_ << " " << this
136
+ << ": SubchannelStreamClient health check call lost...";
135
137
  if (timeout > Duration::Zero()) {
136
- gpr_log(GPR_INFO, "%s %p: ... will retry in %" PRId64 "ms.", tracer_,
137
- this, timeout.millis());
138
+ LOG(INFO) << tracer_ << " " << this << ": ... will retry in "
139
+ << timeout.millis() << "ms.";
138
140
  } else {
139
- gpr_log(GPR_INFO, "%s %p: ... retrying immediately.", tracer_, this);
141
+ LOG(INFO) << tracer_ << " " << this << ": ... retrying immediately.";
140
142
  }
141
143
  }
142
144
  retry_timer_handle_ = event_engine_->RunAfter(
@@ -153,9 +155,8 @@ void SubchannelStreamClient::OnRetryTimer() {
153
155
  if (event_handler_ != nullptr && retry_timer_handle_.has_value() &&
154
156
  call_state_ == nullptr) {
155
157
  if (GPR_UNLIKELY(tracer_ != nullptr)) {
156
- gpr_log(GPR_INFO,
157
- "%s %p: SubchannelStreamClient restarting health check call",
158
- tracer_, this);
158
+ LOG(INFO) << tracer_ << " " << this
159
+ << ": SubchannelStreamClient restarting health check call";
159
160
  }
160
161
  StartCallLocked();
161
162
  }
@@ -171,21 +172,13 @@ SubchannelStreamClient::CallState::CallState(
171
172
  grpc_pollset_set* interested_parties)
172
173
  : subchannel_stream_client_(std::move(health_check_client)),
173
174
  pollent_(grpc_polling_entity_create_from_pollset_set(interested_parties)),
174
- arena_(Arena::Create(subchannel_stream_client_->connected_subchannel_
175
- ->GetInitialCallSizeEstimate(),
176
- &subchannel_stream_client_->call_allocator_)),
177
- payload_(context_) {}
175
+ arena_(subchannel_stream_client_->call_allocator_->MakeArena()) {}
178
176
 
179
177
  SubchannelStreamClient::CallState::~CallState() {
180
178
  if (GPR_UNLIKELY(subchannel_stream_client_->tracer_ != nullptr)) {
181
- gpr_log(GPR_INFO, "%s %p: SubchannelStreamClient destroying CallState %p",
182
- subchannel_stream_client_->tracer_, subchannel_stream_client_.get(),
183
- this);
184
- }
185
- for (size_t i = 0; i < GRPC_CONTEXT_COUNT; ++i) {
186
- if (context_[i].destroy != nullptr) {
187
- context_[i].destroy(context_[i].value);
188
- }
179
+ LOG(INFO) << subchannel_stream_client_->tracer_ << " "
180
+ << subchannel_stream_client_.get()
181
+ << ": SubchannelStreamClient destroying CallState " << this;
189
182
  }
190
183
  // Unset the call combiner cancellation closure. This has the
191
184
  // effect of scheduling the previously set cancellation closure, if
@@ -207,7 +200,6 @@ void SubchannelStreamClient::CallState::StartCallLocked() {
207
200
  gpr_get_cycle_counter(), // start_time
208
201
  Timestamp::InfFuture(), // deadline
209
202
  arena_.get(),
210
- context_,
211
203
  &call_combiner_,
212
204
  };
213
205
  grpc_error_handle error;
@@ -218,16 +210,14 @@ void SubchannelStreamClient::CallState::StartCallLocked() {
218
210
  call_->SetAfterCallStackDestroy(&after_call_stack_destruction_);
219
211
  // Check if creation failed.
220
212
  if (!error.ok() || subchannel_stream_client_->event_handler_ == nullptr) {
221
- gpr_log(GPR_ERROR,
222
- "SubchannelStreamClient %p CallState %p: error creating "
223
- "stream on subchannel (%s); will retry",
224
- subchannel_stream_client_.get(), this,
225
- StatusToString(error).c_str());
213
+ LOG(ERROR) << "SubchannelStreamClient " << subchannel_stream_client_.get()
214
+ << " CallState " << this << ": error creating "
215
+ << "stream on subchannel (" << StatusToString(error)
216
+ << "); will retry";
226
217
  CallEndedLocked(/*retry=*/true);
227
218
  return;
228
219
  }
229
220
  // Initialize payload and batch.
230
- payload_.context = context_;
231
221
  batch_.payload = &payload_;
232
222
  // on_complete callback takes ref, handled manually.
233
223
  call_->Ref(DEBUG_LOCATION, "on_complete").release();
@@ -371,12 +361,10 @@ void SubchannelStreamClient::CallState::RecvMessageReady() {
371
361
  subchannel_stream_client_.get(), recv_message_->JoinIntoString());
372
362
  if (!status.ok()) {
373
363
  if (GPR_UNLIKELY(subchannel_stream_client_->tracer_ != nullptr)) {
374
- gpr_log(GPR_INFO,
375
- "%s %p: SubchannelStreamClient CallState %p: failed to "
376
- "parse response message: %s",
377
- subchannel_stream_client_->tracer_,
378
- subchannel_stream_client_.get(), this,
379
- status.ToString().c_str());
364
+ LOG(INFO) << subchannel_stream_client_->tracer_ << " "
365
+ << subchannel_stream_client_.get()
366
+ << ": SubchannelStreamClient CallState " << this
367
+ << ": failed to parse response message: " << status;
380
368
  }
381
369
  Cancel();
382
370
  }
@@ -419,11 +407,10 @@ void SubchannelStreamClient::CallState::RecvTrailingMetadataReady(
419
407
  nullptr /* error_string */);
420
408
  }
421
409
  if (GPR_UNLIKELY(self->subchannel_stream_client_->tracer_ != nullptr)) {
422
- gpr_log(GPR_INFO,
423
- "%s %p: SubchannelStreamClient CallState %p: health watch failed "
424
- "with status %d",
425
- self->subchannel_stream_client_->tracer_,
426
- self->subchannel_stream_client_.get(), self, status);
410
+ LOG(INFO) << self->subchannel_stream_client_->tracer_ << " "
411
+ << self->subchannel_stream_client_.get()
412
+ << ": SubchannelStreamClient CallState " << self
413
+ << ": health watch failed with status " << status;
427
414
  }
428
415
  // Clean up.
429
416
  self->recv_trailing_metadata_.Clear();
@@ -34,7 +34,6 @@
34
34
 
35
35
  #include "src/core/client_channel/subchannel.h"
36
36
  #include "src/core/lib/backoff/backoff.h"
37
- #include "src/core/lib/channel/context.h"
38
37
  #include "src/core/lib/gprpp/orphanable.h"
39
38
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
40
39
  #include "src/core/lib/gprpp/sync.h"
@@ -146,9 +145,8 @@ class SubchannelStreamClient final
146
145
  RefCountedPtr<SubchannelStreamClient> subchannel_stream_client_;
147
146
  grpc_polling_entity pollent_;
148
147
 
149
- ScopedArenaPtr arena_;
148
+ RefCountedPtr<Arena> arena_;
150
149
  CallCombiner call_combiner_;
151
- grpc_call_context_element context_[GRPC_CONTEXT_COUNT] = {};
152
150
 
153
151
  // The streaming call to the backend. Always non-null.
154
152
  // Refs are tracked manually; when the last ref is released, the
@@ -201,7 +199,7 @@ class SubchannelStreamClient final
201
199
  RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
202
200
  grpc_pollset_set* interested_parties_; // Do not own.
203
201
  const char* tracer_;
204
- MemoryAllocator call_allocator_;
202
+ RefCountedPtr<CallArenaAllocator> call_allocator_;
205
203
 
206
204
  Mutex mu_;
207
205
  std::unique_ptr<CallEventHandler> event_handler_ ABSL_GUARDED_BY(mu_);
@@ -33,7 +33,6 @@
33
33
  #include <grpc/support/log.h>
34
34
 
35
35
  #include "src/core/lib/channel/channel_stack.h"
36
- #include "src/core/lib/channel/context.h"
37
36
  #include "src/core/lib/channel/promise_based_filter.h"
38
37
  #include "src/core/lib/config/core_configuration.h"
39
38
  #include "src/core/lib/debug/trace.h"
@@ -47,11 +46,10 @@
47
46
 
48
47
  namespace grpc_core {
49
48
 
50
- TraceFlag grpc_backend_metric_filter_trace(false, "backend_metric_filter");
51
-
52
49
  const NoInterceptor BackendMetricFilter::Call::OnClientInitialMetadata;
53
50
  const NoInterceptor BackendMetricFilter::Call::OnServerInitialMetadata;
54
51
  const NoInterceptor BackendMetricFilter::Call::OnClientToServerMessage;
52
+ const NoInterceptor BackendMetricFilter::Call::OnClientToServerHalfClose;
55
53
  const NoInterceptor BackendMetricFilter::Call::OnServerToClientMessage;
56
54
  const NoInterceptor BackendMetricFilter::Call::OnFinalize;
57
55
 
@@ -128,24 +126,23 @@ BackendMetricFilter::Create(const ChannelArgs&, ChannelFilter::Args) {
128
126
  }
129
127
 
130
128
  void BackendMetricFilter::Call::OnServerTrailingMetadata(ServerMetadata& md) {
131
- auto* ctx = &GetContext<
132
- grpc_call_context_element>()[GRPC_CONTEXT_BACKEND_METRIC_PROVIDER];
129
+ if (md.get(GrpcCallWasCancelled()).value_or(false)) return;
130
+ auto* ctx = MaybeGetContext<BackendMetricProvider>();
133
131
  if (ctx == nullptr) {
134
- if (GRPC_TRACE_FLAG_ENABLED(grpc_backend_metric_filter_trace)) {
132
+ if (GRPC_TRACE_FLAG_ENABLED(backend_metric_filter)) {
135
133
  gpr_log(GPR_INFO, "[%p] No BackendMetricProvider.", this);
136
134
  }
137
135
  return;
138
136
  }
139
- absl::optional<std::string> serialized = MaybeSerializeBackendMetrics(
140
- reinterpret_cast<BackendMetricProvider*>(ctx->value));
137
+ absl::optional<std::string> serialized = MaybeSerializeBackendMetrics(ctx);
141
138
  if (serialized.has_value() && !serialized->empty()) {
142
- if (GRPC_TRACE_FLAG_ENABLED(grpc_backend_metric_filter_trace)) {
139
+ if (GRPC_TRACE_FLAG_ENABLED(backend_metric_filter)) {
143
140
  gpr_log(GPR_INFO, "[%p] Backend metrics serialized. size: %" PRIuPTR,
144
141
  this, serialized->size());
145
142
  }
146
143
  md.Set(EndpointLoadMetricsBinMetadata(),
147
144
  Slice::FromCopiedString(std::move(*serialized)));
148
- } else if (GRPC_TRACE_FLAG_ENABLED(grpc_backend_metric_filter_trace)) {
145
+ } else if (GRPC_TRACE_FLAG_ENABLED(backend_metric_filter)) {
149
146
  gpr_log(GPR_INFO, "[%p] No backend metrics.", this);
150
147
  }
151
148
  }
@@ -44,6 +44,7 @@ class BackendMetricFilter : public ImplementChannelFilter<BackendMetricFilter> {
44
44
  static const NoInterceptor OnServerInitialMetadata;
45
45
  void OnServerTrailingMetadata(ServerMetadata& md);
46
46
  static const NoInterceptor OnClientToServerMessage;
47
+ static const NoInterceptor OnClientToServerHalfClose;
47
48
  static const NoInterceptor OnServerToClientMessage;
48
49
  static const NoInterceptor OnFinalize;
49
50
  };
@@ -15,6 +15,8 @@
15
15
  #ifndef GRPC_SRC_CORE_EXT_FILTERS_BACKEND_METRICS_BACKEND_METRIC_PROVIDER_H
16
16
  #define GRPC_SRC_CORE_EXT_FILTERS_BACKEND_METRICS_BACKEND_METRIC_PROVIDER_H
17
17
 
18
+ #include "src/core/lib/resource_quota/arena.h"
19
+
18
20
  namespace grpc_core {
19
21
 
20
22
  struct BackendMetricData;
@@ -24,6 +26,11 @@ class BackendMetricProvider {
24
26
  virtual BackendMetricData GetBackendMetricData() = 0;
25
27
  };
26
28
 
29
+ template <>
30
+ struct ArenaContextType<BackendMetricProvider> {
31
+ static void Destroy(BackendMetricProvider*) {}
32
+ };
33
+
27
34
  } // namespace grpc_core
28
35
 
29
36
  #endif // GRPC_SRC_CORE_EXT_FILTERS_BACKEND_METRICS_BACKEND_METRIC_PROVIDER_H
@@ -21,7 +21,6 @@
21
21
  #include <grpc/census.h>
22
22
  #include <grpc/grpc.h>
23
23
 
24
- #include "src/core/lib/channel/context.h"
25
24
  #include "src/core/lib/debug/trace.h"
26
25
  #include "src/core/lib/surface/api_trace.h"
27
26
  #include "src/core/lib/surface/call.h"
@@ -30,12 +29,11 @@ void grpc_census_call_set_context(grpc_call* call, census_context* context) {
30
29
  GRPC_API_TRACE("grpc_census_call_set_context(call=%p, census_context=%p)", 2,
31
30
  (call, context));
32
31
  if (context != nullptr) {
33
- grpc_call_context_set(call, GRPC_CONTEXT_TRACING, context, nullptr);
32
+ grpc_call_get_arena(call)->SetContext<census_context>(context);
34
33
  }
35
34
  }
36
35
 
37
36
  census_context* grpc_census_call_get_context(grpc_call* call) {
38
37
  GRPC_API_TRACE("grpc_census_call_get_context(call=%p)", 1, (call));
39
- return static_cast<census_context*>(
40
- grpc_call_context_get(call, GRPC_CONTEXT_TRACING));
38
+ return grpc_call_get_arena(call)->GetContext<census_context>();
41
39
  }
@@ -68,25 +68,20 @@ const auto kDefaultMaxConnectionAgeGrace = Duration::Infinity();
68
68
  const auto kDefaultMaxConnectionIdle = Duration::Infinity();
69
69
  const auto kMaxConnectionAgeJitter = 0.1;
70
70
 
71
- TraceFlag grpc_trace_client_idle_filter(false, "client_idle_filter");
72
71
  } // namespace
73
72
 
74
73
  #define GRPC_IDLE_FILTER_LOG(format, ...) \
75
74
  do { \
76
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_client_idle_filter)) { \
75
+ if (GRPC_TRACE_FLAG_ENABLED(client_idle_filter)) { \
77
76
  gpr_log(GPR_INFO, "(client idle filter) " format, ##__VA_ARGS__); \
78
77
  } \
79
78
  } while (0)
80
79
 
81
- namespace {
82
-
83
80
  Duration GetClientIdleTimeout(const ChannelArgs& args) {
84
81
  return args.GetDurationFromIntMillis(GRPC_ARG_CLIENT_IDLE_TIMEOUT_MS)
85
82
  .value_or(kDefaultIdleTimeout);
86
83
  }
87
84
 
88
- } // namespace
89
-
90
85
  struct LegacyMaxAgeFilter::Config {
91
86
  Duration max_connection_age;
92
87
  Duration max_connection_idle;
@@ -307,15 +302,13 @@ void RegisterLegacyChannelIdleFilters(CoreConfiguration::Builder* builder) {
307
302
  .If([](const ChannelArgs& channel_args) {
308
303
  return GetClientIdleTimeout(channel_args) != Duration::Infinity();
309
304
  });
310
- if (!IsChaoticGoodEnabled()) {
311
- builder->channel_init()
312
- ->RegisterV2Filter<LegacyMaxAgeFilter>(GRPC_SERVER_CHANNEL)
313
- .ExcludeFromMinimalStack()
314
- .If([](const ChannelArgs& channel_args) {
315
- return LegacyMaxAgeFilter::Config::FromChannelArgs(channel_args)
316
- .enable();
317
- });
318
- }
305
+ builder->channel_init()
306
+ ->RegisterV2Filter<LegacyMaxAgeFilter>(GRPC_SERVER_CHANNEL)
307
+ .ExcludeFromMinimalStack()
308
+ .If([](const ChannelArgs& channel_args) {
309
+ return LegacyMaxAgeFilter::Config::FromChannelArgs(channel_args)
310
+ .enable();
311
+ });
319
312
  }
320
313
 
321
314
  LegacyMaxAgeFilter::LegacyMaxAgeFilter(grpc_channel_stack* channel_stack,
@@ -40,6 +40,8 @@
40
40
 
41
41
  namespace grpc_core {
42
42
 
43
+ Duration GetClientIdleTimeout(const ChannelArgs& args);
44
+
43
45
  class LegacyChannelIdleFilter : public ChannelFilter {
44
46
  public:
45
47
  LegacyChannelIdleFilter(grpc_channel_stack* channel_stack,
@@ -40,7 +40,6 @@
40
40
 
41
41
  #include "src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h"
42
42
  #include "src/core/lib/channel/channel_stack.h"
43
- #include "src/core/lib/channel/context.h"
44
43
  #include "src/core/lib/channel/status_util.h"
45
44
  #include "src/core/lib/config/core_configuration.h"
46
45
  #include "src/core/lib/debug/trace.h"
@@ -54,10 +53,10 @@
54
53
 
55
54
  namespace grpc_core {
56
55
 
57
- TraceFlag grpc_fault_injection_filter_trace(false, "fault_injection_filter");
58
56
  const NoInterceptor FaultInjectionFilter::Call::OnServerInitialMetadata;
59
57
  const NoInterceptor FaultInjectionFilter::Call::OnServerTrailingMetadata;
60
58
  const NoInterceptor FaultInjectionFilter::Call::OnClientToServerMessage;
59
+ const NoInterceptor FaultInjectionFilter::Call::OnClientToServerHalfClose;
61
60
  const NoInterceptor FaultInjectionFilter::Call::OnServerToClientMessage;
62
61
  const NoInterceptor FaultInjectionFilter::Call::OnFinalize;
63
62
 
@@ -151,7 +150,7 @@ FaultInjectionFilter::FaultInjectionFilter(ChannelFilter::Args filter_args)
151
150
  ArenaPromise<absl::Status> FaultInjectionFilter::Call::OnClientInitialMetadata(
152
151
  ClientMetadata& md, FaultInjectionFilter* filter) {
153
152
  auto decision = filter->MakeInjectionDecision(md);
154
- if (GRPC_TRACE_FLAG_ENABLED(grpc_fault_injection_filter_trace)) {
153
+ if (GRPC_TRACE_FLAG_ENABLED(fault_injection_filter)) {
155
154
  gpr_log(GPR_INFO, "chand=%p: Fault injection triggered %s", this,
156
155
  decision.ToString().c_str());
157
156
  }
@@ -166,10 +165,7 @@ FaultInjectionFilter::MakeInjectionDecision(
166
165
  const ClientMetadata& initial_metadata) {
167
166
  // Fetch the fault injection policy from the service config, based on the
168
167
  // relative index for which policy should this CallData use.
169
- auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
170
- GetContext<
171
- grpc_call_context_element>()[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA]
172
- .value);
168
+ auto* service_config_call_data = GetContext<ServiceConfigCallData>();
173
169
  auto* method_params = static_cast<FaultInjectionMethodParsedConfig*>(
174
170
  service_config_call_data->GetMethodParsedConfig(
175
171
  service_config_parser_index_));
@@ -58,6 +58,7 @@ class FaultInjectionFilter
58
58
  static const NoInterceptor OnServerInitialMetadata;
59
59
  static const NoInterceptor OnServerTrailingMetadata;
60
60
  static const NoInterceptor OnClientToServerMessage;
61
+ static const NoInterceptor OnClientToServerHalfClose;
61
62
  static const NoInterceptor OnServerToClientMessage;
62
63
  static const NoInterceptor OnFinalize;
63
64
  };
@@ -35,10 +35,10 @@
35
35
  #include "src/core/lib/config/core_configuration.h"
36
36
  #include "src/core/lib/gprpp/time.h"
37
37
  #include "src/core/lib/gprpp/validation_errors.h"
38
- #include "src/core/lib/json/json.h"
39
- #include "src/core/lib/json/json_args.h"
40
- #include "src/core/lib/json/json_object_loader.h"
41
38
  #include "src/core/service_config/service_config_parser.h"
39
+ #include "src/core/util/json/json.h"
40
+ #include "src/core/util/json/json_args.h"
41
+ #include "src/core/util/json/json_object_loader.h"
42
42
 
43
43
  // Channel arg key for enabling parsing fault injection via method config.
44
44
  #define GRPC_ARG_PARSE_FAULT_INJECTION_METHOD_CONFIG \
@@ -54,6 +54,7 @@ namespace grpc_core {
54
54
 
55
55
  const NoInterceptor HttpClientFilter::Call::OnServerToClientMessage;
56
56
  const NoInterceptor HttpClientFilter::Call::OnClientToServerMessage;
57
+ const NoInterceptor HttpClientFilter::Call::OnClientToServerHalfClose;
57
58
  const NoInterceptor HttpClientFilter::Call::OnFinalize;
58
59
 
59
60
  const grpc_channel_filter HttpClientFilter::kFilter =
@@ -47,6 +47,7 @@ class HttpClientFilter : public ImplementChannelFilter<HttpClientFilter> {
47
47
  absl::Status OnServerInitialMetadata(ServerMetadata& md);
48
48
  absl::Status OnServerTrailingMetadata(ServerMetadata& md);
49
49
  static const NoInterceptor OnClientToServerMessage;
50
+ static const NoInterceptor OnClientToServerHalfClose;
50
51
  static const NoInterceptor OnServerToClientMessage;
51
52
  static const NoInterceptor OnFinalize;
52
53
  };
@@ -40,6 +40,7 @@ namespace grpc_core {
40
40
  const NoInterceptor ClientAuthorityFilter::Call::OnServerInitialMetadata;
41
41
  const NoInterceptor ClientAuthorityFilter::Call::OnServerTrailingMetadata;
42
42
  const NoInterceptor ClientAuthorityFilter::Call::OnClientToServerMessage;
43
+ const NoInterceptor ClientAuthorityFilter::Call::OnClientToServerHalfClose;
43
44
  const NoInterceptor ClientAuthorityFilter::Call::OnServerToClientMessage;
44
45
  const NoInterceptor ClientAuthorityFilter::Call::OnFinalize;
45
46
 
@@ -52,6 +52,7 @@ class ClientAuthorityFilter final
52
52
  static const NoInterceptor OnServerInitialMetadata;
53
53
  static const NoInterceptor OnServerTrailingMetadata;
54
54
  static const NoInterceptor OnClientToServerMessage;
55
+ static const NoInterceptor OnClientToServerHalfClose;
55
56
  static const NoInterceptor OnServerToClientMessage;
56
57
  static const NoInterceptor OnFinalize;
57
58
  };
@@ -35,10 +35,8 @@
35
35
  #include <grpc/support/log.h>
36
36
 
37
37
  #include "src/core/ext/filters/message_size/message_size_filter.h"
38
- #include "src/core/lib/channel/call_tracer.h"
39
38
  #include "src/core/lib/channel/channel_args.h"
40
39
  #include "src/core/lib/channel/channel_stack.h"
41
- #include "src/core/lib/channel/context.h"
42
40
  #include "src/core/lib/channel/promise_based_filter.h"
43
41
  #include "src/core/lib/compression/compression_internal.h"
44
42
  #include "src/core/lib/compression/message_compress.h"
@@ -51,14 +49,16 @@
51
49
  #include "src/core/lib/resource_quota/arena.h"
52
50
  #include "src/core/lib/slice/slice_buffer.h"
53
51
  #include "src/core/lib/surface/call.h"
54
- #include "src/core/lib/surface/call_trace.h"
55
52
  #include "src/core/lib/transport/metadata_batch.h"
56
53
  #include "src/core/lib/transport/transport.h"
54
+ #include "src/core/telemetry/call_tracer.h"
57
55
 
58
56
  namespace grpc_core {
59
57
 
58
+ const NoInterceptor ServerCompressionFilter::Call::OnClientToServerHalfClose;
60
59
  const NoInterceptor ServerCompressionFilter::Call::OnServerTrailingMetadata;
61
60
  const NoInterceptor ServerCompressionFilter::Call::OnFinalize;
61
+ const NoInterceptor ClientCompressionFilter::Call::OnClientToServerHalfClose;
62
62
  const NoInterceptor ClientCompressionFilter::Call::OnServerTrailingMetadata;
63
63
  const NoInterceptor ClientCompressionFilter::Call::OnFinalize;
64
64
 
@@ -113,13 +113,11 @@ ChannelCompression::ChannelCompression(const ChannelArgs& args)
113
113
 
114
114
  MessageHandle ChannelCompression::CompressMessage(
115
115
  MessageHandle message, grpc_compression_algorithm algorithm) const {
116
- if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
116
+ if (GRPC_TRACE_FLAG_ENABLED(compression)) {
117
117
  gpr_log(GPR_INFO, "CompressMessage: len=%" PRIdPTR " alg=%d flags=%d",
118
118
  message->payload()->Length(), algorithm, message->flags());
119
119
  }
120
- auto* call_context = GetContext<grpc_call_context_element>();
121
- auto* call_tracer = static_cast<CallTracerInterface*>(
122
- call_context[GRPC_CONTEXT_CALL_TRACER].value);
120
+ auto* call_tracer = MaybeGetContext<CallTracerInterface>();
123
121
  if (call_tracer != nullptr) {
124
122
  call_tracer->RecordSendMessage(*message->payload());
125
123
  }
@@ -139,7 +137,7 @@ MessageHandle ChannelCompression::CompressMessage(
139
137
  // If we achieved compression send it as compressed, otherwise send it as (to
140
138
  // avoid spending cycles on the receiver decompressing).
141
139
  if (did_compress) {
142
- if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
140
+ if (GRPC_TRACE_FLAG_ENABLED(compression)) {
143
141
  const char* algo_name;
144
142
  const size_t before_size = payload->Length();
145
143
  const size_t after_size = tmp.Length();
@@ -157,7 +155,7 @@ MessageHandle ChannelCompression::CompressMessage(
157
155
  call_tracer->RecordSendCompressedMessage(*message->payload());
158
156
  }
159
157
  } else {
160
- if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
158
+ if (GRPC_TRACE_FLAG_ENABLED(compression)) {
161
159
  const char* algo_name;
162
160
  CHECK(grpc_compression_algorithm_name(algorithm, &algo_name));
163
161
  gpr_log(GPR_INFO,
@@ -171,14 +169,12 @@ MessageHandle ChannelCompression::CompressMessage(
171
169
 
172
170
  absl::StatusOr<MessageHandle> ChannelCompression::DecompressMessage(
173
171
  bool is_client, MessageHandle message, DecompressArgs args) const {
174
- if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
172
+ if (GRPC_TRACE_FLAG_ENABLED(compression)) {
175
173
  gpr_log(GPR_INFO, "DecompressMessage: len=%" PRIdPTR " max=%d alg=%d",
176
174
  message->payload()->Length(),
177
175
  args.max_recv_message_length.value_or(-1), args.algorithm);
178
176
  }
179
- auto* call_context = GetContext<grpc_call_context_element>();
180
- auto* call_tracer = static_cast<CallTracerInterface*>(
181
- call_context[GRPC_CONTEXT_CALL_TRACER].value);
177
+ auto* call_tracer = MaybeGetContext<CallTracerInterface>();
182
178
  if (call_tracer != nullptr) {
183
179
  call_tracer->RecordReceivedMessage(*message->payload());
184
180
  }
@@ -234,8 +230,7 @@ ChannelCompression::DecompressArgs ChannelCompression::HandleIncomingMetadata(
234
230
  auto max_recv_message_length = max_recv_size_;
235
231
  const MessageSizeParsedConfig* limits =
236
232
  MessageSizeParsedConfig::GetFromCallContext(
237
- GetContext<grpc_call_context_element>(),
238
- message_size_service_config_parser_index_);
233
+ GetContext<Arena>(), message_size_service_config_parser_index_);
239
234
  if (limits != nullptr && limits->max_recv_size().has_value() &&
240
235
  (!max_recv_message_length.has_value() ||
241
236
  *limits->max_recv_size() < *max_recv_message_length)) {
@@ -129,6 +129,7 @@ class ClientCompressionFilter final
129
129
  absl::StatusOr<MessageHandle> OnServerToClientMessage(
130
130
  MessageHandle message, ClientCompressionFilter* filter);
131
131
 
132
+ static const NoInterceptor OnClientToServerHalfClose;
132
133
  static const NoInterceptor OnServerTrailingMetadata;
133
134
  static const NoInterceptor OnFinalize;
134
135
 
@@ -165,6 +166,7 @@ class ServerCompressionFilter final
165
166
  MessageHandle OnServerToClientMessage(MessageHandle message,
166
167
  ServerCompressionFilter* filter);
167
168
 
169
+ static const NoInterceptor OnClientToServerHalfClose;
168
170
  static const NoInterceptor OnServerTrailingMetadata;
169
171
  static const NoInterceptor OnFinalize;
170
172
 
@@ -44,12 +44,12 @@
44
44
  #include "src/core/lib/resource_quota/arena.h"
45
45
  #include "src/core/lib/slice/percent_encoding.h"
46
46
  #include "src/core/lib/slice/slice.h"
47
- #include "src/core/lib/surface/call_trace.h"
48
47
  #include "src/core/lib/transport/metadata_batch.h"
49
48
 
50
49
  namespace grpc_core {
51
50
 
52
51
  const NoInterceptor HttpServerFilter::Call::OnClientToServerMessage;
52
+ const NoInterceptor HttpServerFilter::Call::OnClientToServerHalfClose;
53
53
  const NoInterceptor HttpServerFilter::Call::OnServerToClientMessage;
54
54
  const NoInterceptor HttpServerFilter::Call::OnFinalize;
55
55
 
@@ -139,7 +139,7 @@ ServerMetadataHandle HttpServerFilter::Call::OnClientInitialMetadata(
139
139
  }
140
140
 
141
141
  void HttpServerFilter::Call::OnServerInitialMetadata(ServerMetadata& md) {
142
- if (grpc_call_trace.enabled()) {
142
+ if (GRPC_TRACE_FLAG_ENABLED(call)) {
143
143
  gpr_log(GPR_INFO, "%s[http-server] Write metadata",
144
144
  GetContext<Activity>()->DebugTag().c_str());
145
145
  }
@@ -50,6 +50,7 @@ class HttpServerFilter : public ImplementChannelFilter<HttpServerFilter> {
50
50
  void OnServerInitialMetadata(ServerMetadata& md);
51
51
  void OnServerTrailingMetadata(ServerMetadata& md);
52
52
  static const NoInterceptor OnClientToServerMessage;
53
+ static const NoInterceptor OnClientToServerHalfClose;
53
54
  static const NoInterceptor OnServerToClientMessage;
54
55
  static const NoInterceptor OnFinalize;
55
56
  };