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
@@ -29,7 +29,6 @@
29
29
 
30
30
  #include "src/core/channelz/channelz.h"
31
31
  #include "src/core/ext/transport/chttp2/transport/flow_control.h"
32
- #include "src/core/lib/channel/call_tracer.h"
33
32
  #include "src/core/lib/channel/channel_args.h"
34
33
  #include "src/core/lib/debug/trace.h"
35
34
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
@@ -39,11 +38,7 @@
39
38
  #include "src/core/lib/iomgr/endpoint.h"
40
39
  #include "src/core/lib/iomgr/error.h"
41
40
  #include "src/core/lib/transport/transport.h"
42
-
43
- extern grpc_core::TraceFlag grpc_keepalive_trace;
44
- extern grpc_core::TraceFlag grpc_trace_http2_stream_state;
45
- extern grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount;
46
- extern grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_hpack_parser;
41
+ #include "src/core/telemetry/call_tracer.h"
47
42
 
48
43
  /// Creates a CHTTP2 Transport. This takes ownership of a \a resource_user ref
49
44
  /// from the caller; if the caller still needs the resource_user after creating
@@ -59,9 +54,14 @@ grpc_chttp2_transport_get_socket_node(grpc_core::Transport* transport);
59
54
  /// leftover bytes previously read from the endpoint (e.g., by handshakers).
60
55
  /// If non-null, \a notify_on_receive_settings will be scheduled when
61
56
  /// HTTP/2 settings are received from the peer.
57
+ /// If non-null, the endpoint will be removed from
58
+ /// interested_parties_until_recv_settings before
59
+ /// notify_on_receive_settings is invoked.
62
60
  void grpc_chttp2_transport_start_reading(
63
61
  grpc_core::Transport* transport, grpc_slice_buffer* read_buffer,
64
- grpc_closure* notify_on_receive_settings, grpc_closure* notify_on_close);
62
+ grpc_closure* notify_on_receive_settings,
63
+ grpc_pollset_set* interested_parties_until_recv_settings,
64
+ grpc_closure* notify_on_close);
65
65
 
66
66
  namespace grpc_core {
67
67
  typedef void (*TestOnlyGlobalHttp2TransportInitCallback)();
@@ -83,7 +83,7 @@ void TestOnlyGlobalHttp2TransportDisableTransientFailureStateNotification(
83
83
 
84
84
  typedef void (*WriteTimestampsCallback)(void*, Timestamps*,
85
85
  grpc_error_handle error);
86
- typedef void* (*CopyContextFn)(void*);
86
+ typedef void* (*CopyContextFn)(Arena*);
87
87
 
88
88
  void GrpcHttp2SetWriteTimestampsCallback(WriteTimestampsCallback fn);
89
89
  void GrpcHttp2SetCopyContextFn(CopyContextFn fn);
@@ -28,7 +28,7 @@
28
28
 
29
29
  #include <grpc/support/port_platform.h>
30
30
 
31
- #include "src/core/lib/channel/tcp_tracer.h"
31
+ #include "src/core/telemetry/tcp_tracer.h"
32
32
 
33
33
  namespace grpc_core {
34
34
 
@@ -37,10 +37,8 @@
37
37
 
38
38
  #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
39
39
  #include "src/core/lib/experiments/experiments.h"
40
- #include "src/core/lib/gpr/useful.h"
41
40
  #include "src/core/lib/resource_quota/memory_quota.h"
42
-
43
- grpc_core::TraceFlag grpc_flowctl_trace(false, "flowctl");
41
+ #include "src/core/util/useful.h"
44
42
 
45
43
  namespace grpc_core {
46
44
  namespace chttp2 {
@@ -235,7 +233,7 @@ void TransportFlowControl::UpdateSetting(
235
233
  FlowControlAction& (FlowControlAction::*set)(FlowControlAction::Urgency,
236
234
  uint32_t)) {
237
235
  if (new_desired_value != *desired_value) {
238
- if (grpc_flowctl_trace.enabled()) {
236
+ if (GRPC_TRACE_FLAG_ENABLED(flowctl)) {
239
237
  gpr_log(GPR_INFO, "[flowctl] UPDATE SETTING %s from %" PRId64 " to %d",
240
238
  std::string(name).c_str(), *desired_value, new_desired_value);
241
239
  }
@@ -41,8 +41,6 @@
41
41
  #include "src/core/lib/resource_quota/memory_quota.h"
42
42
  #include "src/core/lib/transport/bdp_estimator.h"
43
43
 
44
- extern grpc_core::TraceFlag grpc_flowctl_trace;
45
-
46
44
  namespace grpc {
47
45
  namespace testing {
48
46
  class TrickledCHTTP2; // to make this a friend
@@ -37,9 +37,6 @@
37
37
  #include "src/core/ext/transport/chttp2/transport/ping_callbacks.h"
38
38
  #include "src/core/lib/debug/trace.h"
39
39
 
40
- extern grpc_core::TraceFlag grpc_keepalive_trace;
41
- extern grpc_core::TraceFlag grpc_http_trace;
42
-
43
40
  grpc_slice grpc_chttp2_ping_create(uint8_t ack, uint64_t opaque_8bytes) {
44
41
  grpc_slice slice = GRPC_SLICE_MALLOC(9 + 8);
45
42
  uint8_t* p = GRPC_SLICE_START_PTR(slice);
@@ -96,7 +93,7 @@ grpc_error_handle grpc_chttp2_ping_parser_parse(void* parser,
96
93
  if (p->byte == 8) {
97
94
  CHECK(is_last);
98
95
  if (p->is_ack) {
99
- if (grpc_ping_trace.enabled()) {
96
+ if (GRPC_TRACE_FLAG_ENABLED(http2_ping)) {
100
97
  gpr_log(GPR_INFO, "%s[%p]: received ping ack %" PRIx64,
101
98
  t->is_client ? "CLIENT" : "SERVER", t, p->opaque_8bytes);
102
99
  }
@@ -105,7 +102,8 @@ grpc_error_handle grpc_chttp2_ping_parser_parse(void* parser,
105
102
  if (!t->is_client) {
106
103
  const bool transport_idle =
107
104
  t->keepalive_permit_without_calls == 0 && t->stream_map.empty();
108
- if (grpc_keepalive_trace.enabled() || grpc_http_trace.enabled()) {
105
+ if (GRPC_TRACE_FLAG_ENABLED(http_keepalive) ||
106
+ GRPC_TRACE_FLAG_ENABLED(http)) {
109
107
  gpr_log(GPR_INFO, "SERVER[%p]: received ping %" PRIx64 ": %s", t,
110
108
  p->opaque_8bytes,
111
109
  t->ping_abuse_policy.GetDebugString(transport_idle).c_str());
@@ -113,7 +111,7 @@ grpc_error_handle grpc_chttp2_ping_parser_parse(void* parser,
113
111
  if (t->ping_abuse_policy.ReceivedOnePing(transport_idle)) {
114
112
  grpc_chttp2_exceeded_ping_strikes(t);
115
113
  }
116
- } else if (grpc_ping_trace.enabled()) {
114
+ } else if (GRPC_TRACE_FLAG_ENABLED(http2_ping)) {
117
115
  gpr_log(GPR_INFO, "CLIENT[%p]: received ping %" PRIx64, t,
118
116
  p->opaque_8bytes);
119
117
  }
@@ -30,7 +30,6 @@
30
30
  #include <grpc/support/log.h>
31
31
  #include <grpc/support/port_platform.h>
32
32
 
33
- #include "src/core/ext/transport/chttp2/transport/http_trace.h"
34
33
  #include "src/core/ext/transport/chttp2/transport/internal.h"
35
34
  #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
36
35
  #include "src/core/ext/transport/chttp2/transport/ping_callbacks.h"
@@ -111,7 +110,7 @@ grpc_error_handle grpc_chttp2_rst_stream_parser_parse(void* parser,
111
110
  ((static_cast<uint32_t>(p->reason_bytes[1])) << 16) |
112
111
  ((static_cast<uint32_t>(p->reason_bytes[2])) << 8) |
113
112
  ((static_cast<uint32_t>(p->reason_bytes[3])));
114
- if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
113
+ if (GRPC_TRACE_FLAG_ENABLED(http)) {
115
114
  gpr_log(GPR_INFO,
116
115
  "[chttp2 transport=%p stream=%p] received RST_STREAM(reason=%d)",
117
116
  t, s, reason);
@@ -33,14 +33,13 @@
33
33
  #include "src/core/ext/transport/chttp2/transport/flow_control.h"
34
34
  #include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
35
35
  #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
36
- #include "src/core/ext/transport/chttp2/transport/http_trace.h"
37
36
  #include "src/core/ext/transport/chttp2/transport/internal.h"
38
37
  #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
39
38
  #include "src/core/lib/debug/trace.h"
40
- #include "src/core/lib/gpr/useful.h"
41
39
  #include "src/core/lib/gprpp/debug_location.h"
42
40
  #include "src/core/lib/iomgr/exec_ctx.h"
43
41
  #include "src/core/lib/slice/slice.h"
42
+ #include "src/core/util/useful.h"
44
43
 
45
44
  static uint8_t* fill_header(uint8_t* out, uint32_t length, uint8_t flags) {
46
45
  *out++ = static_cast<uint8_t>(length >> 16);
@@ -109,6 +108,11 @@ grpc_error_handle grpc_chttp2_settings_parser_parse(void* p,
109
108
  grpc_chttp2_initiate_write(t,
110
109
  GRPC_CHTTP2_INITIATE_WRITE_SETTINGS_ACK);
111
110
  if (t->notify_on_receive_settings != nullptr) {
111
+ if (t->interested_parties_until_recv_settings != nullptr) {
112
+ grpc_endpoint_delete_from_pollset_set(
113
+ t->ep, t->interested_parties_until_recv_settings);
114
+ t->interested_parties_until_recv_settings = nullptr;
115
+ }
112
116
  grpc_core::ExecCtx::Run(DEBUG_LOCATION,
113
117
  t->notify_on_receive_settings,
114
118
  absl::OkStatus());
@@ -166,8 +170,8 @@ grpc_error_handle grpc_chttp2_settings_parser_parse(void* p,
166
170
  t->initial_window_update +=
167
171
  static_cast<int64_t>(parser->value) -
168
172
  parser->incoming_settings->initial_window_size();
169
- if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
170
- GRPC_TRACE_FLAG_ENABLED(grpc_flowctl_trace)) {
173
+ if (GRPC_TRACE_FLAG_ENABLED(http) ||
174
+ GRPC_TRACE_FLAG_ENABLED(flowctl)) {
171
175
  gpr_log(GPR_INFO, "%p[%s] adding %d for initial_window change", t,
172
176
  t->is_client ? "cli" : "svr",
173
177
  static_cast<int>(t->initial_window_update));
@@ -183,7 +187,7 @@ grpc_error_handle grpc_chttp2_settings_parser_parse(void* p,
183
187
  "invalid value %u passed for %s", parser->value,
184
188
  grpc_core::Http2Settings::WireIdToName(parser->id).c_str()));
185
189
  }
186
- if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
190
+ if (GRPC_TRACE_FLAG_ENABLED(http)) {
187
191
  gpr_log(GPR_INFO, "CHTTP2:%s:%s: got setting %s = %d",
188
192
  t->is_client ? "CLI" : "SVR",
189
193
  std::string(t->peer_string.as_string_view()).c_str(),
@@ -31,7 +31,6 @@
31
31
  #include "src/core/ext/transport/chttp2/transport/bin_encoder.h"
32
32
  #include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
33
33
  #include "src/core/ext/transport/chttp2/transport/hpack_encoder_table.h"
34
- #include "src/core/ext/transport/chttp2/transport/http_trace.h"
35
34
  #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
36
35
  #include "src/core/ext/transport/chttp2/transport/varint.h"
37
36
  #include "src/core/lib/debug/trace.h"
@@ -118,7 +117,7 @@ void HPackCompressor::SetMaxUsableSize(uint32_t max_table_size) {
118
117
  void HPackCompressor::SetMaxTableSize(uint32_t max_table_size) {
119
118
  if (table_.SetMaxSize(std::min(max_usable_size_, max_table_size))) {
120
119
  advertise_table_size_change_ = true;
121
- if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
120
+ if (GRPC_TRACE_FLAG_ENABLED(http)) {
122
121
  gpr_log(GPR_INFO, "set max table size from encoder to %d",
123
122
  max_table_size);
124
123
  }
@@ -378,7 +377,8 @@ void Compressor<HttpSchemeMetadata, HttpSchemeCompressor>::EncodeWith(
378
377
  encoder->EmitIndexed(7); // :scheme: https
379
378
  break;
380
379
  case HttpSchemeMetadata::ValueType::kInvalid:
381
- Crash("invalid http scheme encoding");
380
+ LOG(ERROR) << "Not encoding bad http scheme";
381
+ encoder->NoteEncodingError();
382
382
  break;
383
383
  }
384
384
  }
@@ -435,7 +435,8 @@ void Compressor<HttpMethodMetadata, HttpMethodCompressor>::EncodeWith(
435
435
  Slice::FromStaticString(":method"), Slice::FromStaticString("PUT"));
436
436
  break;
437
437
  case HttpMethodMetadata::ValueType::kInvalid:
438
- Crash("invalid http method encoding");
438
+ LOG(ERROR) << "Not encoding bad http method";
439
+ encoder->NoteEncodingError();
439
440
  break;
440
441
  }
441
442
  }
@@ -82,10 +82,14 @@ class Encoder {
82
82
  const Slice& slice, uint32_t* index,
83
83
  size_t max_compression_size);
84
84
 
85
+ void NoteEncodingError() { saw_encoding_errors_ = true; }
86
+ bool saw_encoding_errors() const { return saw_encoding_errors_; }
87
+
85
88
  HPackEncoderTable& hpack_table();
86
89
 
87
90
  private:
88
91
  const bool use_true_binary_metadata_;
92
+ bool saw_encoding_errors_ = false;
89
93
  HPackCompressor* const compressor_;
90
94
  SliceBuffer& output_;
91
95
  };
@@ -207,6 +211,7 @@ class Compressor<
207
211
  gpr_log(GPR_ERROR, "%s",
208
212
  absl::StrCat("Not encoding bad ", MetadataTrait::key(), " header")
209
213
  .c_str());
214
+ encoder->NoteEncodingError();
210
215
  return;
211
216
  }
212
217
  Slice encoded(MetadataTrait::Encode(known_value));
@@ -354,19 +359,21 @@ class HPackCompressor {
354
359
  };
355
360
 
356
361
  template <typename HeaderSet>
357
- void EncodeHeaders(const EncodeHeaderOptions& options,
362
+ bool EncodeHeaders(const EncodeHeaderOptions& options,
358
363
  const HeaderSet& headers, grpc_slice_buffer* output) {
359
364
  SliceBuffer raw;
360
365
  hpack_encoder_detail::Encoder encoder(
361
366
  this, options.use_true_binary_metadata, raw);
362
367
  headers.Encode(&encoder);
363
368
  Frame(options, raw, output);
369
+ return !encoder.saw_encoding_errors();
364
370
  }
365
371
 
366
372
  template <typename HeaderSet>
367
- void EncodeRawHeaders(const HeaderSet& headers, SliceBuffer& output) {
373
+ bool EncodeRawHeaders(const HeaderSet& headers, SliceBuffer& output) {
368
374
  hpack_encoder_detail::Encoder encoder(this, true, output);
369
375
  headers.Encode(&encoder);
376
+ return !encoder.saw_encoding_errors();
370
377
  }
371
378
 
372
379
  private:
@@ -44,9 +44,6 @@
44
44
  #include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
45
45
  #include "src/core/ext/transport/chttp2/transport/hpack_parse_result.h"
46
46
  #include "src/core/ext/transport/chttp2/transport/hpack_parser_table.h"
47
- #include "src/core/lib/channel/call_tracer.h"
48
- #include "src/core/lib/debug/stats.h"
49
- #include "src/core/lib/debug/stats_data.h"
50
47
  #include "src/core/lib/debug/trace.h"
51
48
  #include "src/core/lib/gprpp/match.h"
52
49
  #include "src/core/lib/slice/slice.h"
@@ -54,13 +51,14 @@
54
51
  #include "src/core/lib/surface/validate_metadata.h"
55
52
  #include "src/core/lib/transport/metadata_info.h"
56
53
  #include "src/core/lib/transport/parsed_metadata.h"
54
+ #include "src/core/telemetry/call_tracer.h"
55
+ #include "src/core/telemetry/stats.h"
56
+ #include "src/core/telemetry/stats_data.h"
57
57
 
58
58
  // IWYU pragma: no_include <type_traits>
59
59
 
60
60
  namespace grpc_core {
61
61
 
62
- TraceFlag grpc_trace_chttp2_hpack_parser(false, "chttp2_hpack_parser");
63
-
64
62
  namespace {
65
63
  // The alphabet used for base64 encoding binary metadata.
66
64
  constexpr char kBase64Alphabet[] =
@@ -92,14 +90,12 @@ constexpr Base64InverseTable kBase64InverseTable;
92
90
  class HPackParser::Input {
93
91
  public:
94
92
  Input(grpc_slice_refcount* current_slice_refcount, const uint8_t* begin,
95
- const uint8_t* end, absl::BitGenRef bitsrc,
96
- HpackParseResult& frame_error, HpackParseResult& field_error)
93
+ const uint8_t* end, absl::BitGenRef bitsrc, HpackParseResult& error)
97
94
  : current_slice_refcount_(current_slice_refcount),
98
95
  begin_(begin),
99
96
  end_(end),
100
97
  frontier_(begin),
101
- frame_error_(frame_error),
102
- field_error_(field_error),
98
+ error_(error),
103
99
  bitsrc_(bitsrc) {}
104
100
 
105
101
  // If input is backed by a slice, retrieve its refcount. If not, return
@@ -218,18 +214,14 @@ class HPackParser::Input {
218
214
 
219
215
  // Check if we saw an EOF
220
216
  bool eof_error() const {
221
- return min_progress_size_ != 0 || frame_error_.connection_error();
222
- }
223
-
224
- // Reset the field error to be ok
225
- void ClearFieldError() {
226
- if (field_error_.ok()) return;
227
- field_error_ = HpackParseResult();
217
+ return min_progress_size_ != 0 || error_.connection_error();
228
218
  }
229
219
 
230
220
  // Minimum number of bytes to unstuck the current parse
231
221
  size_t min_progress_size() const { return min_progress_size_; }
232
222
 
223
+ bool has_error() const { return !error_.ok(); }
224
+
233
225
  // Set the current error - tweaks the error to include a stream id so that
234
226
  // chttp2 does not close the connection.
235
227
  // Intended for errors that are specific to a stream and recoverable.
@@ -253,7 +245,10 @@ class HPackParser::Input {
253
245
  // read prior to being able to get further in this parse.
254
246
  void UnexpectedEOF(size_t min_progress_size) {
255
247
  CHECK_GT(min_progress_size, 0u);
256
- if (eof_error()) return;
248
+ if (min_progress_size_ != 0 || error_.connection_error()) {
249
+ DCHECK(eof_error());
250
+ return;
251
+ }
257
252
  // Set min progress size, taking into account bytes parsed already but not
258
253
  // consumed.
259
254
  min_progress_size_ = min_progress_size + (begin_ - frontier_);
@@ -306,18 +301,13 @@ class HPackParser::Input {
306
301
  // Do not use this directly, instead use SetErrorAndContinueParsing or
307
302
  // SetErrorAndStopParsing.
308
303
  void SetError(HpackParseResult error) {
309
- SetErrorFor(frame_error_, error);
310
- SetErrorFor(field_error_, std::move(error));
311
- }
312
-
313
- void SetErrorFor(HpackParseResult& error, HpackParseResult new_error) {
314
- if (!error.ok() || min_progress_size_ > 0) {
315
- if (new_error.connection_error() && !error.connection_error()) {
316
- error = std::move(new_error); // connection errors dominate
304
+ if (!error_.ok() || min_progress_size_ > 0) {
305
+ if (error.connection_error() && !error_.connection_error()) {
306
+ error_ = std::move(error); // connection errors dominate
317
307
  }
318
308
  return;
319
309
  }
320
- error = std::move(new_error);
310
+ error_ = std::move(error);
321
311
  }
322
312
 
323
313
  // Refcount if we are backed by a slice
@@ -329,8 +319,7 @@ class HPackParser::Input {
329
319
  // Frontier denotes the first byte past successfully processed input
330
320
  const uint8_t* frontier_;
331
321
  // Current error
332
- HpackParseResult& frame_error_;
333
- HpackParseResult& field_error_;
322
+ HpackParseResult& error_;
334
323
  // If the error was EOF, we flag it here by noting how many more bytes would
335
324
  // be needed to make progress
336
325
  size_t min_progress_size_ = 0;
@@ -607,7 +596,6 @@ class HPackParser::Parser {
607
596
  bool ParseTop() {
608
597
  DCHECK(state_.parse_state == ParseState::kTop);
609
598
  auto cur = *input_->Next();
610
- input_->ClearFieldError();
611
599
  switch (cur >> 4) {
612
600
  // Literal header not indexed - First byte format: 0000xxxx
613
601
  // Literal header never indexed - First byte format: 0001xxxx
@@ -713,7 +701,7 @@ class HPackParser::Parser {
713
701
  break;
714
702
  }
715
703
  gpr_log(
716
- GPR_INFO, "HTTP:%d:%s:%s: %s%s", log_info_.stream_id, type,
704
+ GPR_DEBUG, "HTTP:%d:%s:%s: %s%s", log_info_.stream_id, type,
717
705
  log_info_.is_client ? "CLI" : "SVR", memento.md.DebugString().c_str(),
718
706
  memento.parse_status == nullptr
719
707
  ? ""
@@ -743,7 +731,7 @@ class HPackParser::Parser {
743
731
 
744
732
  bool FinishHeaderAndAddToTable(HPackTable::Memento md) {
745
733
  // Log if desired
746
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_hpack_parser)) {
734
+ if (GRPC_TRACE_FLAG_ENABLED(chttp2_hpack_parser)) {
747
735
  LogHeader(md);
748
736
  }
749
737
  // Emit whilst we own the metadata.
@@ -768,7 +756,7 @@ class HPackParser::Parser {
768
756
 
769
757
  void FinishHeaderOmitFromTable(const HPackTable::Memento& md) {
770
758
  // Log if desired
771
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_hpack_parser)) {
759
+ if (GRPC_TRACE_FLAG_ENABLED(chttp2_hpack_parser)) {
772
760
  LogHeader(md);
773
761
  }
774
762
  EmitHeader(md);
@@ -962,10 +950,11 @@ class HPackParser::Parser {
962
950
  state_.string_length)
963
951
  : String::Parse(input_, state_.is_string_huff_compressed,
964
952
  state_.string_length);
953
+ HpackParseResult& status = state_.frame_error;
965
954
  absl::string_view key_string;
966
955
  if (auto* s = absl::get_if<Slice>(&state_.key)) {
967
956
  key_string = s->as_string_view();
968
- if (state_.field_error.ok()) {
957
+ if (status.ok()) {
969
958
  auto r = ValidateKey(key_string);
970
959
  if (r != ValidateMetadataResult::kOk) {
971
960
  input_->SetErrorAndContinueParsing(
@@ -975,7 +964,7 @@ class HPackParser::Parser {
975
964
  } else {
976
965
  const auto* memento = absl::get<const HPackTable::Memento*>(state_.key);
977
966
  key_string = memento->md.key();
978
- if (state_.field_error.ok() && memento->parse_status != nullptr) {
967
+ if (status.ok() && memento->parse_status != nullptr) {
979
968
  input_->SetErrorAndContinueParsing(*memento->parse_status);
980
969
  }
981
970
  }
@@ -1002,16 +991,16 @@ class HPackParser::Parser {
1002
991
  key_string.size() + value.wire_size + hpack_constants::kEntryOverhead;
1003
992
  auto md = grpc_metadata_batch::Parse(
1004
993
  key_string, std::move(value_slice), state_.add_to_table, transport_size,
1005
- [key_string, this](absl::string_view message, const Slice&) {
1006
- if (!state_.field_error.ok()) return;
994
+ [key_string, &status, this](absl::string_view message, const Slice&) {
995
+ if (!status.ok()) return;
1007
996
  input_->SetErrorAndContinueParsing(
1008
997
  HpackParseResult::MetadataParseError(key_string));
1009
998
  gpr_log(GPR_ERROR, "Error parsing '%s' metadata: %s",
1010
999
  std::string(key_string).c_str(),
1011
1000
  std::string(message).c_str());
1012
1001
  });
1013
- HPackTable::Memento memento{
1014
- std::move(md), state_.field_error.PersistentStreamErrorOrNullptr()};
1002
+ HPackTable::Memento memento{std::move(md),
1003
+ status.PersistentStreamErrorOrNullptr()};
1015
1004
  input_->UpdateFrontier();
1016
1005
  state_.parse_state = ParseState::kTop;
1017
1006
  if (state_.add_to_table) {
@@ -1124,13 +1113,13 @@ grpc_error_handle HPackParser::Parse(
1124
1113
  std::vector<uint8_t> buffer = std::move(unparsed_bytes_);
1125
1114
  return ParseInput(
1126
1115
  Input(nullptr, buffer.data(), buffer.data() + buffer.size(), bitsrc,
1127
- state_.frame_error, state_.field_error),
1116
+ state_.frame_error),
1128
1117
  is_last, call_tracer);
1129
1118
  }
1130
- return ParseInput(Input(slice.refcount, GRPC_SLICE_START_PTR(slice),
1131
- GRPC_SLICE_END_PTR(slice), bitsrc, state_.frame_error,
1132
- state_.field_error),
1133
- is_last, call_tracer);
1119
+ return ParseInput(
1120
+ Input(slice.refcount, GRPC_SLICE_START_PTR(slice),
1121
+ GRPC_SLICE_END_PTR(slice), bitsrc, state_.frame_error),
1122
+ is_last, call_tracer);
1134
1123
  }
1135
1124
 
1136
1125
  grpc_error_handle HPackParser::ParseInput(
@@ -40,11 +40,11 @@
40
40
  #include "src/core/ext/transport/chttp2/transport/hpack_parser_table.h"
41
41
  #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
42
42
  #include "src/core/lib/backoff/random_early_detection.h"
43
- #include "src/core/lib/channel/call_tracer.h"
44
43
  #include "src/core/lib/iomgr/error.h"
45
44
  #include "src/core/lib/slice/slice.h"
46
45
  #include "src/core/lib/slice/slice_refcount.h"
47
46
  #include "src/core/lib/transport/metadata_batch.h"
47
+ #include "src/core/telemetry/call_tracer.h"
48
48
 
49
49
  // IWYU pragma: no_include <type_traits>
50
50
 
@@ -235,8 +235,6 @@ class HPackParser {
235
235
  HPackTable hpack_table;
236
236
  // Error so far for this frame (set by class Input)
237
237
  HpackParseResult frame_error;
238
- // Error so far for this field (set by class Input)
239
- HpackParseResult field_error;
240
238
  // Length of frame so far.
241
239
  uint32_t frame_length = 0;
242
240
  // Length of the string being parsed
@@ -26,16 +26,15 @@
26
26
  #include <utility>
27
27
 
28
28
  #include "absl/log/check.h"
29
+ #include "absl/log/log.h"
29
30
  #include "absl/status/status.h"
30
31
  #include "absl/strings/str_cat.h"
31
32
  #include "absl/strings/string_view.h"
32
33
 
33
- #include <grpc/support/log.h>
34
34
  #include <grpc/support/port_platform.h>
35
35
 
36
36
  #include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
37
37
  #include "src/core/ext/transport/chttp2/transport/hpack_parse_result.h"
38
- #include "src/core/ext/transport/chttp2/transport/http_trace.h"
39
38
  #include "src/core/lib/debug/trace.h"
40
39
  #include "src/core/lib/slice/slice.h"
41
40
 
@@ -99,9 +98,7 @@ void HPackTable::SetMaxBytes(uint32_t max_bytes) {
99
98
  if (max_bytes_ == max_bytes) {
100
99
  return;
101
100
  }
102
- if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
103
- gpr_log(GPR_INFO, "Update hpack parser max size to %d", max_bytes);
104
- }
101
+ GRPC_TRACE_LOG(http, INFO) << "Update hpack parser max size to " << max_bytes;
105
102
  while (mem_used_ > max_bytes) {
106
103
  EvictOne();
107
104
  }
@@ -111,9 +108,7 @@ void HPackTable::SetMaxBytes(uint32_t max_bytes) {
111
108
  bool HPackTable::SetCurrentTableSize(uint32_t bytes) {
112
109
  if (current_table_bytes_ == bytes) return true;
113
110
  if (bytes > max_bytes_) return false;
114
- if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
115
- gpr_log(GPR_INFO, "Update hpack parser table size to %d", bytes);
116
- }
111
+ GRPC_TRACE_LOG(http, INFO) << "Update hpack parser table size to " << bytes;
117
112
  while (mem_used_ > bytes) {
118
113
  EvictOne();
119
114
  }
@@ -25,8 +25,8 @@
25
25
  #include <grpc/support/port_platform.h>
26
26
 
27
27
  #include "src/core/ext/transport/chttp2/transport/frame.h"
28
- #include "src/core/lib/gpr/useful.h"
29
28
  #include "src/core/lib/transport/http2_errors.h"
29
+ #include "src/core/util/useful.h"
30
30
 
31
31
  namespace grpc_core {
32
32
 
@@ -28,8 +28,8 @@
28
28
  #include <grpc/support/port_platform.h>
29
29
 
30
30
  #include "src/core/ext/transport/chttp2/transport/frame.h"
31
- #include "src/core/lib/gpr/useful.h"
32
31
  #include "src/core/lib/transport/http2_errors.h"
32
+ #include "src/core/util/useful.h"
33
33
 
34
34
  namespace grpc_core {
35
35