grpc 1.73.0 → 1.74.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 (499) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +38 -17
  3. data/include/grpc/create_channel_from_endpoint.h +54 -0
  4. data/include/grpc/credentials.h +11 -5
  5. data/include/grpc/event_engine/event_engine.h +74 -17
  6. data/include/grpc/grpc_posix.h +20 -1
  7. data/include/grpc/impl/channel_arg_names.h +2 -4
  8. data/include/grpc/module.modulemap +1 -0
  9. data/include/grpc/support/json.h +24 -0
  10. data/src/core/call/interception_chain.h +7 -11
  11. data/src/core/channelz/channel_trace.cc +213 -115
  12. data/src/core/channelz/channel_trace.h +380 -86
  13. data/src/core/channelz/channelz.cc +270 -181
  14. data/src/core/channelz/channelz.h +168 -55
  15. data/src/core/channelz/channelz_registry.cc +2 -1
  16. data/src/core/channelz/channelz_registry.h +24 -0
  17. data/src/core/channelz/property_list.cc +357 -0
  18. data/src/core/channelz/property_list.h +202 -0
  19. data/src/core/channelz/ztrace_collector.h +3 -2
  20. data/src/core/client_channel/backup_poller.cc +17 -2
  21. data/src/core/client_channel/client_channel.cc +17 -28
  22. data/src/core/client_channel/client_channel_filter.cc +19 -29
  23. data/src/core/client_channel/config_selector.h +8 -2
  24. data/src/core/client_channel/dynamic_filters.cc +5 -6
  25. data/src/core/client_channel/dynamic_filters.h +1 -1
  26. data/src/core/client_channel/global_subchannel_pool.cc +4 -1
  27. data/src/core/client_channel/retry_filter.cc +21 -27
  28. data/src/core/client_channel/retry_filter.h +10 -7
  29. data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
  30. data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
  31. data/src/core/client_channel/retry_interceptor.cc +30 -44
  32. data/src/core/client_channel/retry_interceptor.h +18 -17
  33. data/src/core/client_channel/retry_throttle.cc +46 -61
  34. data/src/core/client_channel/retry_throttle.h +17 -39
  35. data/src/core/client_channel/subchannel.cc +43 -19
  36. data/src/core/client_channel/subchannel.h +8 -0
  37. data/src/core/config/config_vars.cc +2 -0
  38. data/src/core/config/core_configuration.cc +1 -0
  39. data/src/core/config/core_configuration.h +11 -0
  40. data/src/core/credentials/call/call_creds_registry.h +125 -0
  41. data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
  42. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
  43. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
  44. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
  45. data/src/core/credentials/call/jwt_util.cc +70 -0
  46. data/src/core/credentials/call/jwt_util.h +32 -0
  47. data/src/core/credentials/transport/channel_creds_registry_init.cc +1 -1
  48. data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
  49. data/src/core/credentials/transport/ssl/ssl_credentials.cc +0 -1
  50. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
  51. data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
  52. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
  53. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
  54. data/src/core/ext/filters/http/client_authority_filter.cc +2 -4
  55. data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
  56. data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
  57. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
  58. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
  59. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +162 -115
  60. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
  61. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
  62. data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
  63. data/src/core/ext/transport/chttp2/transport/flow_control.h +22 -17
  64. data/src/core/ext/transport/chttp2/transport/frame.cc +10 -0
  65. data/src/core/ext/transport/chttp2/transport/frame.h +2 -2
  66. data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
  67. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
  68. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
  69. data/src/core/ext/transport/chttp2/transport/header_assembler.h +299 -0
  70. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
  71. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
  72. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
  73. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1017 -0
  74. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +593 -0
  75. data/src/core/ext/transport/chttp2/transport/http2_settings.h +19 -22
  76. data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
  77. data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
  78. data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
  79. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +43 -0
  80. data/src/core/ext/transport/chttp2/transport/http2_transport.h +65 -0
  81. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
  82. data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
  83. data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
  84. data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
  85. data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
  86. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -4
  87. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
  88. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +151 -0
  89. data/src/core/ext/transport/chttp2/transport/ping_promise.h +180 -0
  90. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
  91. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
  92. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
  93. data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
  94. data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
  95. data/src/core/ext/transport/chttp2/transport/writing.cc +37 -11
  96. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
  97. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
  98. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
  99. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
  100. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
  101. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
  102. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +984 -0
  103. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +226 -0
  104. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
  105. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
  106. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
  107. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +135 -0
  108. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
  109. data/src/core/filter/auth/auth_filters.h +0 -25
  110. data/src/core/filter/auth/client_auth_filter.cc +0 -118
  111. data/src/core/filter/filter_args.h +9 -23
  112. data/src/core/handshaker/handshaker.cc +23 -14
  113. data/src/core/handshaker/handshaker.h +3 -0
  114. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
  115. data/src/core/handshaker/security/legacy_secure_endpoint.cc +6 -5
  116. data/src/core/handshaker/security/secure_endpoint.cc +70 -25
  117. data/src/core/handshaker/security/security_handshaker.cc +4 -1
  118. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
  119. data/src/core/lib/channel/channel_args.cc +15 -0
  120. data/src/core/lib/channel/channel_args.h +3 -0
  121. data/src/core/lib/channel/channel_stack.cc +22 -23
  122. data/src/core/lib/channel/channel_stack.h +9 -7
  123. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
  124. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
  125. data/src/core/lib/channel/promise_based_filter.h +5 -5
  126. data/src/core/lib/debug/trace_impl.h +0 -1
  127. data/src/core/lib/event_engine/ares_resolver.cc +165 -46
  128. data/src/core/lib/event_engine/ares_resolver.h +48 -2
  129. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -1
  130. data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -4
  131. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +2 -6
  132. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
  133. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
  134. data/src/core/lib/event_engine/event_engine.cc +7 -0
  135. data/src/core/lib/event_engine/extensions/channelz.h +10 -6
  136. data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
  137. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +130 -162
  138. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +11 -15
  139. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +75 -117
  140. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -9
  141. data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -15
  142. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +0 -18
  143. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
  144. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
  145. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +29 -19
  146. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
  147. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
  148. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +145 -92
  149. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
  150. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +333 -116
  151. data/src/core/lib/event_engine/posix_engine/posix_engine.h +61 -18
  152. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +45 -37
  153. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
  154. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
  155. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
  156. data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
  157. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
  158. data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
  159. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
  160. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
  161. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
  162. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +10 -170
  163. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
  164. data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
  165. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
  166. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
  167. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
  168. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
  169. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
  170. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
  171. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
  172. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
  173. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
  174. data/src/core/lib/event_engine/shim.cc +9 -0
  175. data/src/core/lib/event_engine/shim.h +3 -0
  176. data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
  177. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
  178. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
  179. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
  180. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +4 -0
  181. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
  182. data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
  183. data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
  184. data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
  185. data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
  186. data/src/core/lib/experiments/experiments.cc +45 -93
  187. data/src/core/lib/experiments/experiments.h +21 -51
  188. data/src/core/lib/iomgr/endpoint.cc +4 -3
  189. data/src/core/lib/iomgr/endpoint.h +7 -4
  190. data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
  191. data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
  192. data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
  193. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
  194. data/src/core/lib/iomgr/tcp_posix.cc +12 -6
  195. data/src/core/lib/iomgr/tcp_windows.cc +3 -2
  196. data/src/core/lib/promise/activity.h +1 -0
  197. data/src/core/lib/promise/arena_promise.h +23 -7
  198. data/src/core/lib/promise/detail/promise_factory.h +10 -0
  199. data/src/core/lib/promise/detail/promise_like.h +118 -11
  200. data/src/core/lib/promise/detail/promise_variant.h +50 -0
  201. data/src/core/lib/promise/detail/seq_state.h +687 -548
  202. data/src/core/lib/promise/if.h +20 -0
  203. data/src/core/lib/promise/inter_activity_latch.h +147 -0
  204. data/src/core/lib/promise/inter_activity_mutex.h +547 -0
  205. data/src/core/lib/promise/loop.h +65 -3
  206. data/src/core/lib/promise/map.h +24 -0
  207. data/src/core/lib/promise/match_promise.h +103 -0
  208. data/src/core/lib/promise/mpsc.cc +425 -0
  209. data/src/core/lib/promise/mpsc.h +490 -0
  210. data/src/core/lib/promise/party.cc +50 -1
  211. data/src/core/lib/promise/party.h +66 -1
  212. data/src/core/lib/promise/race.h +31 -0
  213. data/src/core/lib/promise/seq.h +4 -1
  214. data/src/core/lib/promise/status_flag.h +7 -0
  215. data/src/core/lib/promise/try_seq.h +4 -1
  216. data/src/core/lib/promise/wait_set.cc +28 -0
  217. data/src/core/lib/promise/wait_set.h +86 -0
  218. data/src/core/lib/resource_quota/arena.h +19 -0
  219. data/src/core/lib/slice/slice.h +5 -0
  220. data/src/core/lib/surface/channel_create.cc +88 -13
  221. data/src/core/lib/surface/channel_create.h +4 -0
  222. data/src/core/lib/surface/channel_init.cc +164 -47
  223. data/src/core/lib/surface/channel_init.h +64 -1
  224. data/src/core/lib/surface/filter_stack_call.cc +18 -9
  225. data/src/core/lib/surface/init.cc +6 -15
  226. data/src/core/lib/surface/legacy_channel.cc +3 -5
  227. data/src/core/lib/surface/legacy_channel.h +3 -1
  228. data/src/core/lib/surface/version.cc +2 -2
  229. data/src/core/lib/transport/promise_endpoint.cc +110 -0
  230. data/src/core/lib/transport/promise_endpoint.h +307 -0
  231. data/src/core/load_balancing/child_policy_handler.cc +2 -4
  232. data/src/core/load_balancing/delegating_helper.h +2 -3
  233. data/src/core/load_balancing/health_check_client.cc +1 -5
  234. data/src/core/load_balancing/lb_policy.h +1 -3
  235. data/src/core/load_balancing/oob_backend_metric.cc +1 -5
  236. data/src/core/load_balancing/pick_first/pick_first.cc +3 -0
  237. data/src/core/load_balancing/xds/cds.cc +10 -1
  238. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  239. data/src/core/resolver/xds/xds_config.cc +6 -3
  240. data/src/core/resolver/xds/xds_config.h +9 -4
  241. data/src/core/resolver/xds/xds_dependency_manager.cc +21 -6
  242. data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
  243. data/src/core/resolver/xds/xds_resolver.cc +31 -11
  244. data/src/core/server/server.cc +83 -12
  245. data/src/core/server/server.h +21 -2
  246. data/src/core/server/xds_server_config_fetcher.cc +63 -25
  247. data/src/core/service_config/service_config.h +1 -1
  248. data/src/core/service_config/service_config_impl.h +1 -1
  249. data/src/core/telemetry/context_list_entry.cc +38 -0
  250. data/src/core/telemetry/context_list_entry.h +42 -12
  251. data/src/core/telemetry/stats_data.cc +233 -207
  252. data/src/core/telemetry/stats_data.h +250 -153
  253. data/src/core/telemetry/tcp_tracer.h +1 -1
  254. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
  255. data/src/core/tsi/fake_transport_security.cc +17 -0
  256. data/src/core/tsi/ssl_transport_security.cc +2 -0
  257. data/src/core/tsi/transport_security_grpc.cc +8 -0
  258. data/src/core/tsi/transport_security_grpc.h +15 -0
  259. data/src/core/util/backoff.cc +1 -5
  260. data/src/core/util/backoff.h +1 -0
  261. data/src/core/util/down_cast.h +1 -1
  262. data/src/core/util/function_signature.h +15 -1
  263. data/src/core/util/http_client/httpcli.cc +12 -5
  264. data/src/core/util/http_client/httpcli.h +4 -1
  265. data/src/core/util/latent_see.h +8 -5
  266. data/src/core/util/log.cc +4 -0
  267. data/src/core/util/memory_usage.h +268 -0
  268. data/src/core/util/per_cpu.cc +2 -0
  269. data/src/core/util/per_cpu.h +7 -0
  270. data/src/core/util/shared_bit_gen.h +20 -0
  271. data/src/core/util/single_set_ptr.h +2 -2
  272. data/src/core/util/upb_utils.h +42 -0
  273. data/src/core/util/uri.cc +3 -2
  274. data/src/core/util/useful.h +53 -2
  275. data/src/core/util/wait_for_single_owner.cc +31 -0
  276. data/src/core/util/wait_for_single_owner.h +24 -0
  277. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
  278. data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
  279. data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
  280. data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
  281. data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
  282. data/src/core/xds/grpc/xds_http_filter.h +7 -0
  283. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
  284. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
  285. data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
  286. data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
  287. data/src/core/xds/grpc/xds_server_grpc.h +10 -2
  288. data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
  289. data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
  290. data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
  291. data/src/core/xds/xds_client/xds_client.cc +26 -5
  292. data/src/ruby/ext/grpc/extconf.rb +2 -0
  293. data/src/ruby/ext/grpc/rb_call.c +1 -8
  294. data/src/ruby/ext/grpc/rb_channel.c +72 -568
  295. data/src/ruby/ext/grpc/rb_channel.h +0 -3
  296. data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
  297. data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
  298. data/src/ruby/ext/grpc/rb_grpc.c +9 -5
  299. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  300. data/src/ruby/ext/grpc/rb_loader.c +0 -4
  301. data/src/ruby/ext/grpc/rb_server.c +31 -50
  302. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
  303. data/src/ruby/lib/grpc/version.rb +1 -1
  304. data/src/ruby/spec/core_spec.rb +22 -0
  305. data/src/ruby/spec/generic/active_call_spec.rb +1 -1
  306. data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
  307. data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
  308. data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
  309. data/third_party/abseil-cpp/absl/base/config.h +20 -129
  310. data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
  311. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
  312. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
  313. data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
  314. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
  315. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
  316. data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
  317. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
  318. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
  319. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
  320. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
  321. data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
  322. data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
  323. data/third_party/abseil-cpp/absl/base/options.h +3 -80
  324. data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
  325. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
  326. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
  327. data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
  328. data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
  329. data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
  330. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
  331. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
  332. data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
  333. data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
  334. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
  335. data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
  336. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
  337. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
  338. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
  339. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
  340. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
  341. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
  342. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
  343. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
  344. data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
  345. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
  346. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
  347. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
  348. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
  349. data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
  350. data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
  351. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
  352. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
  353. data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
  354. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
  355. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
  356. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
  357. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
  358. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
  359. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
  360. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
  361. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
  362. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
  363. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
  364. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
  365. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
  366. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
  367. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
  368. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
  369. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
  370. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
  371. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
  372. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
  373. data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
  374. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
  375. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
  376. data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
  377. data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
  378. data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
  379. data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
  380. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
  381. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
  382. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
  383. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
  384. data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
  385. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
  386. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
  387. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
  388. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
  389. data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
  390. data/third_party/abseil-cpp/absl/log/check.h +2 -1
  391. data/third_party/abseil-cpp/absl/log/globals.h +4 -5
  392. data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
  393. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
  394. data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
  395. data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
  396. data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
  397. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
  398. data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
  399. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
  400. data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
  401. data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
  402. data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
  403. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
  404. data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
  405. data/third_party/abseil-cpp/absl/log/log.h +48 -35
  406. data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
  407. data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
  408. data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
  409. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
  410. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
  411. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
  412. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
  413. data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
  414. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
  415. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
  416. data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
  417. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
  418. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
  419. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
  420. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
  421. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
  422. data/third_party/abseil-cpp/absl/random/random.h +88 -53
  423. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
  424. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
  425. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
  426. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
  427. data/third_party/abseil-cpp/absl/status/status.cc +4 -8
  428. data/third_party/abseil-cpp/absl/status/status.h +8 -8
  429. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
  430. data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
  431. data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
  432. data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
  433. data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
  434. data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
  435. data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
  436. data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
  437. data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
  438. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
  439. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
  440. data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
  441. data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
  442. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  443. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
  444. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
  445. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
  446. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
  447. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
  448. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
  449. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
  450. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  451. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
  452. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
  453. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
  454. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
  455. data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
  456. data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
  457. data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
  458. data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
  459. data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
  460. data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
  461. data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
  462. data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
  463. data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
  464. data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
  465. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
  466. data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
  467. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
  468. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
  469. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
  470. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
  471. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
  472. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
  473. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
  474. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
  475. data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
  476. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  477. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
  478. data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
  481. data/third_party/abseil-cpp/absl/time/time.h +20 -15
  482. data/third_party/abseil-cpp/absl/types/optional.h +7 -747
  483. data/third_party/abseil-cpp/absl/types/span.h +13 -11
  484. data/third_party/abseil-cpp/absl/types/variant.h +5 -784
  485. data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
  486. metadata +72 -20
  487. data/src/core/lib/event_engine/forkable.cc +0 -105
  488. data/src/core/lib/event_engine/forkable.h +0 -67
  489. data/src/core/lib/iomgr/python_util.h +0 -46
  490. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
  491. data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
  492. data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
  493. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
  494. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
  495. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
  496. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
  497. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
  498. data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
  499. data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
@@ -23,14 +23,21 @@
23
23
  #include <stddef.h>
24
24
  #include <stdint.h>
25
25
 
26
- #include <memory>
27
- #include <utility>
28
26
  #include <vector>
29
27
 
30
- #include "src/core/telemetry/tcp_tracer.h"
31
-
32
28
  namespace grpc_core {
33
29
 
30
+ class Arena;
31
+
32
+ using CopyContextFn = void* (*)(Arena*);
33
+ using DeleteContextFn = void (*)(void*);
34
+
35
+ void GrpcHttp2SetCopyContextFn(CopyContextFn fn);
36
+ void GrpcHttp2SetDeleteContextFn(DeleteContextFn fn);
37
+
38
+ CopyContextFn GrpcHttp2GetCopyContextFn();
39
+ DeleteContextFn GrpcHttp2GetDeleteContextFn();
40
+
34
41
  /// An RPC trace context and associated information. Each RPC/stream is
35
42
  /// associated with a unique \a context. A new ContextList entry is created when
36
43
  /// a chunk of data stored in an outgoing buffer is going to be
@@ -41,25 +48,48 @@ class ContextListEntry {
41
48
  public:
42
49
  ContextListEntry(void* context, int64_t outbuf_offset,
43
50
  int64_t num_traced_bytes, size_t byte_offset,
44
- size_t stream_index,
45
- std::shared_ptr<TcpCallTracer> tcp_tracer)
51
+ size_t stream_index)
46
52
  : trace_context_(context),
47
53
  outbuf_offset_(outbuf_offset),
48
54
  num_traced_bytes_in_chunk_(num_traced_bytes),
49
55
  byte_offset_in_stream_(byte_offset),
50
- stream_index_(stream_index),
51
- tcp_tracer_(std::move(tcp_tracer)) {}
56
+ stream_index_(stream_index) {}
52
57
 
53
58
  ContextListEntry() = delete;
59
+ ContextListEntry(const ContextListEntry&) = delete;
60
+ ContextListEntry& operator=(const ContextListEntry&) = delete;
61
+
62
+ ContextListEntry(ContextListEntry&& other) noexcept
63
+ : trace_context_(other.trace_context_),
64
+ outbuf_offset_(other.outbuf_offset_),
65
+ num_traced_bytes_in_chunk_(other.num_traced_bytes_in_chunk_),
66
+ byte_offset_in_stream_(other.byte_offset_in_stream_),
67
+ stream_index_(other.stream_index_) {
68
+ other.trace_context_ = nullptr;
69
+ }
70
+ ContextListEntry& operator=(ContextListEntry&& other) noexcept {
71
+ if (this != &other) {
72
+ trace_context_ = other.trace_context_;
73
+ other.trace_context_ = nullptr;
74
+ outbuf_offset_ = other.outbuf_offset_;
75
+ num_traced_bytes_in_chunk_ = other.num_traced_bytes_in_chunk_;
76
+ byte_offset_in_stream_ = other.byte_offset_in_stream_;
77
+ stream_index_ = other.stream_index_;
78
+ }
79
+ return *this;
80
+ }
81
+
82
+ ~ContextListEntry() {
83
+ if (trace_context_ != nullptr) {
84
+ GrpcHttp2GetDeleteContextFn()(trace_context_);
85
+ }
86
+ }
54
87
 
55
88
  void* TraceContext() { return trace_context_; }
56
89
  int64_t OutbufOffset() { return outbuf_offset_; }
57
90
  int64_t NumTracedBytesInChunk() { return num_traced_bytes_in_chunk_; }
58
91
  size_t ByteOffsetInStream() { return byte_offset_in_stream_; }
59
92
  size_t StreamIndex() { return stream_index_; }
60
- std::shared_ptr<TcpCallTracer> ReleaseTcpTracer() {
61
- return std::move(tcp_tracer_);
62
- }
63
93
 
64
94
  private:
65
95
  void* trace_context_;
@@ -72,11 +102,11 @@ class ContextListEntry {
72
102
  // Index of the current chunk in the RPC stream.
73
103
  // Set to zero for the first chunk of the RPC stream.
74
104
  size_t stream_index_;
75
- std::shared_ptr<TcpCallTracer> tcp_tracer_;
76
105
  };
77
106
 
78
107
  /// A list of RPC Contexts
79
108
  typedef std::vector<ContextListEntry> ContextList;
109
+
80
110
  } // namespace grpc_core
81
111
 
82
112
  #endif // GRPC_SRC_CORE_TELEMETRY_CONTEXT_LIST_ENTRY_H
@@ -398,13 +398,6 @@ const absl::string_view
398
398
  "syscall_read",
399
399
  "tcp_read_alloc_8k",
400
400
  "tcp_read_alloc_64k",
401
- "http2_settings_writes",
402
- "http2_pings_sent",
403
- "http2_writes_begun",
404
- "http2_transport_stalls",
405
- "http2_stream_stalls",
406
- "http2_hpack_hits",
407
- "http2_hpack_misses",
408
401
  "cq_pluck_creates",
409
402
  "cq_next_creates",
410
403
  "cq_callback_creates",
@@ -439,15 +432,6 @@ const absl::string_view GlobalStats::counter_doc[static_cast<int>(
439
432
  "Number of read syscalls (or equivalent - eg recvmsg) made by this process",
440
433
  "Number of 8k allocations by the TCP subsystem for reading",
441
434
  "Number of 64k allocations by the TCP subsystem for reading",
442
- "Number of settings frames sent",
443
- "Number of HTTP2 pings sent by process",
444
- "Number of HTTP2 writes initiated",
445
- "Number of times sending was completely stalled by the transport flow "
446
- "control window",
447
- "Number of times sending was completely stalled by the stream flow control "
448
- "window",
449
- "Number of HPACK cache hits",
450
- "Number of HPACK cache misses (entries added but never used)",
451
435
  "Number of completion queues created for cq_pluck (indicates sync api "
452
436
  "usage)",
453
437
  "Number of completion queues created for cq_next (indicates cq async api "
@@ -477,22 +461,6 @@ const absl::string_view
477
461
  "tcp_read_size",
478
462
  "tcp_read_offer",
479
463
  "tcp_read_offer_iov_size",
480
- "http2_send_message_size",
481
- "http2_metadata_size",
482
- "http2_hpack_entry_lifetime",
483
- "http2_header_table_size",
484
- "http2_initial_window_size",
485
- "http2_max_concurrent_streams",
486
- "http2_max_frame_size",
487
- "http2_max_header_list_size",
488
- "http2_preferred_receive_crypto_message_size",
489
- "http2_stream_remote_window_update",
490
- "http2_transport_remote_window_update",
491
- "http2_transport_window_update_period",
492
- "http2_stream_window_update_period",
493
- "http2_write_target_size",
494
- "http2_write_data_frame_size",
495
- "http2_read_data_frame_size",
496
464
  "wrr_subchannel_list_size",
497
465
  "wrr_subchannel_ready_size",
498
466
  "work_serializer_run_time_ms",
@@ -522,23 +490,6 @@ const absl::string_view GlobalStats::histogram_doc[static_cast<int>(
522
490
  "Number of bytes received by each syscall_read",
523
491
  "Number of bytes offered to each syscall_read",
524
492
  "Number of byte segments offered to each syscall_read",
525
- "Size of messages received by HTTP2 transport",
526
- "Number of bytes consumed by metadata, according to HPACK accounting rules",
527
- "Lifetime of HPACK entries in the cache (in milliseconds)",
528
- "Http2 header table size received through SETTINGS frame",
529
- "Http2 initial window size received through SETTINGS frame",
530
- "Http2 max concurrent streams received through SETTINGS frame",
531
- "Http2 max frame size received through SETTINGS frame",
532
- "Http2 max header list size received through SETTINGS frame",
533
- "Http2 preferred receive crypto message size received through SETTINGS "
534
- "frame",
535
- "Stream window update sent by peer",
536
- "Transport window update sent by peer",
537
- "Period in milliseconds at which peer sends transport window update",
538
- "Period in milliseconds at which peer sends stream window update",
539
- "Number of bytes targetted for http2 writes",
540
- "Number of bytes for each data frame written",
541
- "Number of bytes for each data frame read",
542
493
  "Number of subchannels in a subchannel list at picker creation time",
543
494
  "Number of READY subchannels in a subchannel list at picker creation time",
544
495
  "Number of milliseconds work serializers run for",
@@ -575,13 +526,6 @@ GlobalStats::GlobalStats()
575
526
  syscall_read{0},
576
527
  tcp_read_alloc_8k{0},
577
528
  tcp_read_alloc_64k{0},
578
- http2_settings_writes{0},
579
- http2_pings_sent{0},
580
- http2_writes_begun{0},
581
- http2_transport_stalls{0},
582
- http2_stream_stalls{0},
583
- http2_hpack_hits{0},
584
- http2_hpack_misses{0},
585
529
  cq_pluck_creates{0},
586
530
  cq_next_creates{0},
587
531
  cq_callback_creates{0},
@@ -621,55 +565,6 @@ HistogramView GlobalStats::histogram(Histogram which) const {
621
565
  case Histogram::kTcpReadOfferIovSize:
622
566
  return HistogramView{&Histogram_80_10_64::BucketFor, kStatsTable14, 10,
623
567
  tcp_read_offer_iov_size.buckets()};
624
- case Histogram::kHttp2SendMessageSize:
625
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
626
- 20, http2_send_message_size.buckets()};
627
- case Histogram::kHttp2MetadataSize:
628
- return HistogramView{&Histogram_65536_26_64::BucketFor, kStatsTable6, 26,
629
- http2_metadata_size.buckets()};
630
- case Histogram::kHttp2HpackEntryLifetime:
631
- return HistogramView{&Histogram_1800000_40_64::BucketFor, kStatsTable16,
632
- 40, http2_hpack_entry_lifetime.buckets()};
633
- case Histogram::kHttp2HeaderTableSize:
634
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
635
- 20, http2_header_table_size.buckets()};
636
- case Histogram::kHttp2InitialWindowSize:
637
- return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable12,
638
- 50, http2_initial_window_size.buckets()};
639
- case Histogram::kHttp2MaxConcurrentStreams:
640
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
641
- 20, http2_max_concurrent_streams.buckets()};
642
- case Histogram::kHttp2MaxFrameSize:
643
- return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable12,
644
- 50, http2_max_frame_size.buckets()};
645
- case Histogram::kHttp2MaxHeaderListSize:
646
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
647
- 20, http2_max_header_list_size.buckets()};
648
- case Histogram::kHttp2PreferredReceiveCryptoMessageSize:
649
- return HistogramView{
650
- &Histogram_16777216_20_64::BucketFor, kStatsTable0, 20,
651
- http2_preferred_receive_crypto_message_size.buckets()};
652
- case Histogram::kHttp2StreamRemoteWindowUpdate:
653
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
654
- 20, http2_stream_remote_window_update.buckets()};
655
- case Histogram::kHttp2TransportRemoteWindowUpdate:
656
- return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
657
- 20, http2_transport_remote_window_update.buckets()};
658
- case Histogram::kHttp2TransportWindowUpdatePeriod:
659
- return HistogramView{&Histogram_100000_20_64::BucketFor, kStatsTable2, 20,
660
- http2_transport_window_update_period.buckets()};
661
- case Histogram::kHttp2StreamWindowUpdatePeriod:
662
- return HistogramView{&Histogram_100000_20_64::BucketFor, kStatsTable2, 20,
663
- http2_stream_window_update_period.buckets()};
664
- case Histogram::kHttp2WriteTargetSize:
665
- return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable12,
666
- 50, http2_write_target_size.buckets()};
667
- case Histogram::kHttp2WriteDataFrameSize:
668
- return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable12,
669
- 50, http2_write_data_frame_size.buckets()};
670
- case Histogram::kHttp2ReadDataFrameSize:
671
- return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable12,
672
- 50, http2_read_data_frame_size.buckets()};
673
568
  case Histogram::kWrrSubchannelListSize:
674
569
  return HistogramView{&Histogram_10000_20_64::BucketFor, kStatsTable4, 20,
675
570
  wrr_subchannel_list_size.buckets()};
@@ -733,23 +628,6 @@ HistogramView GlobalStats::histogram(Histogram which) const {
733
628
  20, chaotic_good_tcp_write_size_control.buckets()};
734
629
  }
735
630
  }
736
- const absl::string_view
737
- Http2Stats::counter_name[static_cast<int>(Counter::COUNT)] = {
738
- "http2_writes_begun",
739
- };
740
- const absl::string_view
741
- Http2Stats::counter_doc[static_cast<int>(Counter::COUNT)] = {
742
- "Number of HTTP2 writes initiated",
743
- };
744
- const absl::string_view
745
- Http2Stats::histogram_name[static_cast<int>(Histogram::COUNT)] = {
746
- "http2_write_target_size",
747
- };
748
- const absl::string_view
749
- Http2Stats::histogram_doc[static_cast<int>(Histogram::COUNT)] = {
750
- "Number of bytes targetted for http2 writes",
751
- };
752
- Http2Stats::Http2Stats() : http2_writes_begun{0} {}
753
631
  std::unique_ptr<GlobalStats> GlobalStatsCollector::Collect() const {
754
632
  auto result = std::make_unique<GlobalStats>();
755
633
  for (const auto& data : data_) {
@@ -777,20 +655,6 @@ std::unique_ptr<GlobalStats> GlobalStatsCollector::Collect() const {
777
655
  data.tcp_read_alloc_8k.load(std::memory_order_relaxed);
778
656
  result->tcp_read_alloc_64k +=
779
657
  data.tcp_read_alloc_64k.load(std::memory_order_relaxed);
780
- result->http2_settings_writes +=
781
- data.http2_settings_writes.load(std::memory_order_relaxed);
782
- result->http2_pings_sent +=
783
- data.http2_pings_sent.load(std::memory_order_relaxed);
784
- result->http2_writes_begun +=
785
- data.http2_writes_begun.load(std::memory_order_relaxed);
786
- result->http2_transport_stalls +=
787
- data.http2_transport_stalls.load(std::memory_order_relaxed);
788
- result->http2_stream_stalls +=
789
- data.http2_stream_stalls.load(std::memory_order_relaxed);
790
- result->http2_hpack_hits +=
791
- data.http2_hpack_hits.load(std::memory_order_relaxed);
792
- result->http2_hpack_misses +=
793
- data.http2_hpack_misses.load(std::memory_order_relaxed);
794
658
  result->cq_pluck_creates +=
795
659
  data.cq_pluck_creates.load(std::memory_order_relaxed);
796
660
  result->cq_next_creates +=
@@ -827,32 +691,6 @@ std::unique_ptr<GlobalStats> GlobalStatsCollector::Collect() const {
827
691
  data.tcp_read_size.Collect(&result->tcp_read_size);
828
692
  data.tcp_read_offer.Collect(&result->tcp_read_offer);
829
693
  data.tcp_read_offer_iov_size.Collect(&result->tcp_read_offer_iov_size);
830
- data.http2_send_message_size.Collect(&result->http2_send_message_size);
831
- data.http2_metadata_size.Collect(&result->http2_metadata_size);
832
- data.http2_hpack_entry_lifetime.Collect(
833
- &result->http2_hpack_entry_lifetime);
834
- data.http2_header_table_size.Collect(&result->http2_header_table_size);
835
- data.http2_initial_window_size.Collect(&result->http2_initial_window_size);
836
- data.http2_max_concurrent_streams.Collect(
837
- &result->http2_max_concurrent_streams);
838
- data.http2_max_frame_size.Collect(&result->http2_max_frame_size);
839
- data.http2_max_header_list_size.Collect(
840
- &result->http2_max_header_list_size);
841
- data.http2_preferred_receive_crypto_message_size.Collect(
842
- &result->http2_preferred_receive_crypto_message_size);
843
- data.http2_stream_remote_window_update.Collect(
844
- &result->http2_stream_remote_window_update);
845
- data.http2_transport_remote_window_update.Collect(
846
- &result->http2_transport_remote_window_update);
847
- data.http2_transport_window_update_period.Collect(
848
- &result->http2_transport_window_update_period);
849
- data.http2_stream_window_update_period.Collect(
850
- &result->http2_stream_window_update_period);
851
- data.http2_write_target_size.Collect(&result->http2_write_target_size);
852
- data.http2_write_data_frame_size.Collect(
853
- &result->http2_write_data_frame_size);
854
- data.http2_read_data_frame_size.Collect(
855
- &result->http2_read_data_frame_size);
856
694
  data.wrr_subchannel_list_size.Collect(&result->wrr_subchannel_list_size);
857
695
  data.wrr_subchannel_ready_size.Collect(&result->wrr_subchannel_ready_size);
858
696
  data.work_serializer_run_time_ms.Collect(
@@ -916,15 +754,6 @@ std::unique_ptr<GlobalStats> GlobalStats::Diff(const GlobalStats& other) const {
916
754
  result->syscall_read = syscall_read - other.syscall_read;
917
755
  result->tcp_read_alloc_8k = tcp_read_alloc_8k - other.tcp_read_alloc_8k;
918
756
  result->tcp_read_alloc_64k = tcp_read_alloc_64k - other.tcp_read_alloc_64k;
919
- result->http2_settings_writes =
920
- http2_settings_writes - other.http2_settings_writes;
921
- result->http2_pings_sent = http2_pings_sent - other.http2_pings_sent;
922
- result->http2_writes_begun = http2_writes_begun - other.http2_writes_begun;
923
- result->http2_transport_stalls =
924
- http2_transport_stalls - other.http2_transport_stalls;
925
- result->http2_stream_stalls = http2_stream_stalls - other.http2_stream_stalls;
926
- result->http2_hpack_hits = http2_hpack_hits - other.http2_hpack_hits;
927
- result->http2_hpack_misses = http2_hpack_misses - other.http2_hpack_misses;
928
757
  result->cq_pluck_creates = cq_pluck_creates - other.cq_pluck_creates;
929
758
  result->cq_next_creates = cq_next_creates - other.cq_next_creates;
930
759
  result->cq_callback_creates = cq_callback_creates - other.cq_callback_creates;
@@ -953,42 +782,6 @@ std::unique_ptr<GlobalStats> GlobalStats::Diff(const GlobalStats& other) const {
953
782
  result->tcp_read_offer = tcp_read_offer - other.tcp_read_offer;
954
783
  result->tcp_read_offer_iov_size =
955
784
  tcp_read_offer_iov_size - other.tcp_read_offer_iov_size;
956
- result->http2_send_message_size =
957
- http2_send_message_size - other.http2_send_message_size;
958
- result->http2_metadata_size = http2_metadata_size - other.http2_metadata_size;
959
- result->http2_hpack_entry_lifetime =
960
- http2_hpack_entry_lifetime - other.http2_hpack_entry_lifetime;
961
- result->http2_header_table_size =
962
- http2_header_table_size - other.http2_header_table_size;
963
- result->http2_initial_window_size =
964
- http2_initial_window_size - other.http2_initial_window_size;
965
- result->http2_max_concurrent_streams =
966
- http2_max_concurrent_streams - other.http2_max_concurrent_streams;
967
- result->http2_max_frame_size =
968
- http2_max_frame_size - other.http2_max_frame_size;
969
- result->http2_max_header_list_size =
970
- http2_max_header_list_size - other.http2_max_header_list_size;
971
- result->http2_preferred_receive_crypto_message_size =
972
- http2_preferred_receive_crypto_message_size -
973
- other.http2_preferred_receive_crypto_message_size;
974
- result->http2_stream_remote_window_update =
975
- http2_stream_remote_window_update -
976
- other.http2_stream_remote_window_update;
977
- result->http2_transport_remote_window_update =
978
- http2_transport_remote_window_update -
979
- other.http2_transport_remote_window_update;
980
- result->http2_transport_window_update_period =
981
- http2_transport_window_update_period -
982
- other.http2_transport_window_update_period;
983
- result->http2_stream_window_update_period =
984
- http2_stream_window_update_period -
985
- other.http2_stream_window_update_period;
986
- result->http2_write_target_size =
987
- http2_write_target_size - other.http2_write_target_size;
988
- result->http2_write_data_frame_size =
989
- http2_write_data_frame_size - other.http2_write_data_frame_size;
990
- result->http2_read_data_frame_size =
991
- http2_read_data_frame_size - other.http2_read_data_frame_size;
992
785
  result->wrr_subchannel_list_size =
993
786
  wrr_subchannel_list_size - other.wrr_subchannel_list_size;
994
787
  result->wrr_subchannel_ready_size =
@@ -1043,4 +836,237 @@ std::unique_ptr<GlobalStats> GlobalStats::Diff(const GlobalStats& other) const {
1043
836
  other.chaotic_good_tcp_write_size_control;
1044
837
  return result;
1045
838
  }
839
+ const absl::string_view
840
+ Http2GlobalStats::counter_name[static_cast<int>(Counter::COUNT)] = {
841
+ "http2_settings_writes", "http2_pings_sent", "http2_transport_stalls",
842
+ "http2_stream_stalls", "http2_hpack_hits", "http2_hpack_misses",
843
+ "http2_writes_begun",
844
+ };
845
+ const absl::string_view
846
+ Http2GlobalStats::counter_doc[static_cast<int>(Counter::COUNT)] = {
847
+ "Number of settings frames sent",
848
+ "Number of HTTP2 pings sent by process",
849
+ "Number of times sending was completely stalled by the transport flow "
850
+ "control window",
851
+ "Number of times sending was completely stalled by the stream flow "
852
+ "control window",
853
+ "Number of HPACK cache hits",
854
+ "Number of HPACK cache misses (entries added but never used)",
855
+ "Number of HTTP2 writes initiated",
856
+ };
857
+ const absl::string_view
858
+ Http2GlobalStats::histogram_name[static_cast<int>(Histogram::COUNT)] = {
859
+ "http2_send_message_size",
860
+ "http2_metadata_size",
861
+ "http2_hpack_entry_lifetime",
862
+ "http2_header_table_size",
863
+ "http2_initial_window_size",
864
+ "http2_max_concurrent_streams",
865
+ "http2_max_frame_size",
866
+ "http2_max_header_list_size",
867
+ "http2_preferred_receive_crypto_message_size",
868
+ "http2_stream_remote_window_update",
869
+ "http2_transport_remote_window_update",
870
+ "http2_transport_window_update_period",
871
+ "http2_stream_window_update_period",
872
+ "http2_write_data_frame_size",
873
+ "http2_read_data_frame_size",
874
+ "http2_write_target_size",
875
+ };
876
+ const absl::string_view Http2GlobalStats::histogram_doc[static_cast<int>(
877
+ Histogram::COUNT)] = {
878
+ "Size of messages received by HTTP2 transport",
879
+ "Number of bytes consumed by metadata, according to HPACK accounting rules",
880
+ "Lifetime of HPACK entries in the cache (in milliseconds)",
881
+ "Http2 header table size received through SETTINGS frame",
882
+ "Http2 initial window size received through SETTINGS frame",
883
+ "Http2 max concurrent streams received through SETTINGS frame",
884
+ "Http2 max frame size received through SETTINGS frame",
885
+ "Http2 max header list size received through SETTINGS frame",
886
+ "Http2 preferred receive crypto message size received through SETTINGS "
887
+ "frame",
888
+ "Stream window update sent by peer",
889
+ "Transport window update sent by peer",
890
+ "Period in milliseconds at which peer sends transport window update",
891
+ "Period in milliseconds at which peer sends stream window update",
892
+ "Number of bytes for each data frame written",
893
+ "Number of bytes for each data frame read",
894
+ "Number of bytes targeted for http2 writes",
895
+ };
896
+ Http2GlobalStats::Http2GlobalStats()
897
+ : http2_settings_writes{0},
898
+ http2_pings_sent{0},
899
+ http2_transport_stalls{0},
900
+ http2_stream_stalls{0},
901
+ http2_hpack_hits{0},
902
+ http2_hpack_misses{0},
903
+ http2_writes_begun{0} {}
904
+ HistogramView Http2GlobalStats::histogram(Histogram which) const {
905
+ switch (which) {
906
+ default:
907
+ GPR_UNREACHABLE_CODE(return HistogramView());
908
+ case Histogram::kHttp2SendMessageSize:
909
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
910
+ 20, http2_send_message_size.buckets()};
911
+ case Histogram::kHttp2MetadataSize:
912
+ return HistogramView{&Histogram_65536_26_64::BucketFor, kStatsTable6, 26,
913
+ http2_metadata_size.buckets()};
914
+ case Histogram::kHttp2HpackEntryLifetime:
915
+ return HistogramView{&Histogram_1800000_40_64::BucketFor, kStatsTable16,
916
+ 40, http2_hpack_entry_lifetime.buckets()};
917
+ case Histogram::kHttp2HeaderTableSize:
918
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
919
+ 20, http2_header_table_size.buckets()};
920
+ case Histogram::kHttp2InitialWindowSize:
921
+ return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable12,
922
+ 50, http2_initial_window_size.buckets()};
923
+ case Histogram::kHttp2MaxConcurrentStreams:
924
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
925
+ 20, http2_max_concurrent_streams.buckets()};
926
+ case Histogram::kHttp2MaxFrameSize:
927
+ return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable12,
928
+ 50, http2_max_frame_size.buckets()};
929
+ case Histogram::kHttp2MaxHeaderListSize:
930
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
931
+ 20, http2_max_header_list_size.buckets()};
932
+ case Histogram::kHttp2PreferredReceiveCryptoMessageSize:
933
+ return HistogramView{
934
+ &Histogram_16777216_20_64::BucketFor, kStatsTable0, 20,
935
+ http2_preferred_receive_crypto_message_size.buckets()};
936
+ case Histogram::kHttp2StreamRemoteWindowUpdate:
937
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
938
+ 20, http2_stream_remote_window_update.buckets()};
939
+ case Histogram::kHttp2TransportRemoteWindowUpdate:
940
+ return HistogramView{&Histogram_16777216_20_64::BucketFor, kStatsTable0,
941
+ 20, http2_transport_remote_window_update.buckets()};
942
+ case Histogram::kHttp2TransportWindowUpdatePeriod:
943
+ return HistogramView{&Histogram_100000_20_64::BucketFor, kStatsTable2, 20,
944
+ http2_transport_window_update_period.buckets()};
945
+ case Histogram::kHttp2StreamWindowUpdatePeriod:
946
+ return HistogramView{&Histogram_100000_20_64::BucketFor, kStatsTable2, 20,
947
+ http2_stream_window_update_period.buckets()};
948
+ case Histogram::kHttp2WriteDataFrameSize:
949
+ return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable12,
950
+ 50, http2_write_data_frame_size.buckets()};
951
+ case Histogram::kHttp2ReadDataFrameSize:
952
+ return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable12,
953
+ 50, http2_read_data_frame_size.buckets()};
954
+ case Histogram::kHttp2WriteTargetSize:
955
+ return HistogramView{&Histogram_16777216_50_64::BucketFor, kStatsTable12,
956
+ 50, http2_write_target_size.buckets()};
957
+ }
958
+ }
959
+ std::unique_ptr<Http2GlobalStats> Http2GlobalStatsCollector::Collect() const {
960
+ auto result = std::make_unique<Http2GlobalStats>();
961
+ for (const auto& data : data_) {
962
+ result->http2_settings_writes +=
963
+ data.http2_settings_writes.load(std::memory_order_relaxed);
964
+ result->http2_pings_sent +=
965
+ data.http2_pings_sent.load(std::memory_order_relaxed);
966
+ result->http2_transport_stalls +=
967
+ data.http2_transport_stalls.load(std::memory_order_relaxed);
968
+ result->http2_stream_stalls +=
969
+ data.http2_stream_stalls.load(std::memory_order_relaxed);
970
+ result->http2_hpack_hits +=
971
+ data.http2_hpack_hits.load(std::memory_order_relaxed);
972
+ result->http2_hpack_misses +=
973
+ data.http2_hpack_misses.load(std::memory_order_relaxed);
974
+ result->http2_writes_begun +=
975
+ data.http2_writes_begun.load(std::memory_order_relaxed);
976
+ data.http2_send_message_size.Collect(&result->http2_send_message_size);
977
+ data.http2_metadata_size.Collect(&result->http2_metadata_size);
978
+ data.http2_hpack_entry_lifetime.Collect(
979
+ &result->http2_hpack_entry_lifetime);
980
+ data.http2_header_table_size.Collect(&result->http2_header_table_size);
981
+ data.http2_initial_window_size.Collect(&result->http2_initial_window_size);
982
+ data.http2_max_concurrent_streams.Collect(
983
+ &result->http2_max_concurrent_streams);
984
+ data.http2_max_frame_size.Collect(&result->http2_max_frame_size);
985
+ data.http2_max_header_list_size.Collect(
986
+ &result->http2_max_header_list_size);
987
+ data.http2_preferred_receive_crypto_message_size.Collect(
988
+ &result->http2_preferred_receive_crypto_message_size);
989
+ data.http2_stream_remote_window_update.Collect(
990
+ &result->http2_stream_remote_window_update);
991
+ data.http2_transport_remote_window_update.Collect(
992
+ &result->http2_transport_remote_window_update);
993
+ data.http2_transport_window_update_period.Collect(
994
+ &result->http2_transport_window_update_period);
995
+ data.http2_stream_window_update_period.Collect(
996
+ &result->http2_stream_window_update_period);
997
+ data.http2_write_data_frame_size.Collect(
998
+ &result->http2_write_data_frame_size);
999
+ data.http2_read_data_frame_size.Collect(
1000
+ &result->http2_read_data_frame_size);
1001
+ data.http2_write_target_size.Collect(&result->http2_write_target_size);
1002
+ }
1003
+ return result;
1004
+ }
1005
+ std::unique_ptr<Http2GlobalStats> Http2GlobalStats::Diff(
1006
+ const Http2GlobalStats& other) const {
1007
+ auto result = std::make_unique<Http2GlobalStats>();
1008
+ result->http2_settings_writes =
1009
+ http2_settings_writes - other.http2_settings_writes;
1010
+ result->http2_pings_sent = http2_pings_sent - other.http2_pings_sent;
1011
+ result->http2_transport_stalls =
1012
+ http2_transport_stalls - other.http2_transport_stalls;
1013
+ result->http2_stream_stalls = http2_stream_stalls - other.http2_stream_stalls;
1014
+ result->http2_hpack_hits = http2_hpack_hits - other.http2_hpack_hits;
1015
+ result->http2_hpack_misses = http2_hpack_misses - other.http2_hpack_misses;
1016
+ result->http2_writes_begun = http2_writes_begun - other.http2_writes_begun;
1017
+ result->http2_send_message_size =
1018
+ http2_send_message_size - other.http2_send_message_size;
1019
+ result->http2_metadata_size = http2_metadata_size - other.http2_metadata_size;
1020
+ result->http2_hpack_entry_lifetime =
1021
+ http2_hpack_entry_lifetime - other.http2_hpack_entry_lifetime;
1022
+ result->http2_header_table_size =
1023
+ http2_header_table_size - other.http2_header_table_size;
1024
+ result->http2_initial_window_size =
1025
+ http2_initial_window_size - other.http2_initial_window_size;
1026
+ result->http2_max_concurrent_streams =
1027
+ http2_max_concurrent_streams - other.http2_max_concurrent_streams;
1028
+ result->http2_max_frame_size =
1029
+ http2_max_frame_size - other.http2_max_frame_size;
1030
+ result->http2_max_header_list_size =
1031
+ http2_max_header_list_size - other.http2_max_header_list_size;
1032
+ result->http2_preferred_receive_crypto_message_size =
1033
+ http2_preferred_receive_crypto_message_size -
1034
+ other.http2_preferred_receive_crypto_message_size;
1035
+ result->http2_stream_remote_window_update =
1036
+ http2_stream_remote_window_update -
1037
+ other.http2_stream_remote_window_update;
1038
+ result->http2_transport_remote_window_update =
1039
+ http2_transport_remote_window_update -
1040
+ other.http2_transport_remote_window_update;
1041
+ result->http2_transport_window_update_period =
1042
+ http2_transport_window_update_period -
1043
+ other.http2_transport_window_update_period;
1044
+ result->http2_stream_window_update_period =
1045
+ http2_stream_window_update_period -
1046
+ other.http2_stream_window_update_period;
1047
+ result->http2_write_data_frame_size =
1048
+ http2_write_data_frame_size - other.http2_write_data_frame_size;
1049
+ result->http2_read_data_frame_size =
1050
+ http2_read_data_frame_size - other.http2_read_data_frame_size;
1051
+ result->http2_write_target_size =
1052
+ http2_write_target_size - other.http2_write_target_size;
1053
+ return result;
1054
+ }
1055
+ const absl::string_view
1056
+ Http2Stats::counter_name[static_cast<int>(Counter::COUNT)] = {
1057
+ "http2_writes_begun",
1058
+ };
1059
+ const absl::string_view
1060
+ Http2Stats::counter_doc[static_cast<int>(Counter::COUNT)] = {
1061
+ "Number of HTTP2 writes initiated",
1062
+ };
1063
+ const absl::string_view
1064
+ Http2Stats::histogram_name[static_cast<int>(Histogram::COUNT)] = {
1065
+ "http2_write_target_size",
1066
+ };
1067
+ const absl::string_view
1068
+ Http2Stats::histogram_doc[static_cast<int>(Histogram::COUNT)] = {
1069
+ "Number of bytes targeted for http2 writes",
1070
+ };
1071
+ Http2Stats::Http2Stats() : http2_writes_begun{0} {}
1046
1072
  } // namespace grpc_core