grpc 1.71.0 → 1.72.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 (597) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +78 -75
  3. data/include/grpc/event_engine/memory_request.h +3 -3
  4. data/include/grpc/impl/channel_arg_names.h +70 -50
  5. data/include/grpc/support/workaround_list.h +1 -4
  6. data/src/core/{lib/transport → call}/call_arena_allocator.cc +1 -1
  7. data/src/core/{lib/transport → call}/call_arena_allocator.h +3 -3
  8. data/src/core/{lib/transport → call}/call_destination.h +4 -4
  9. data/src/core/{lib/transport → call}/call_filters.cc +2 -2
  10. data/src/core/{lib/transport → call}/call_filters.h +25 -6
  11. data/src/core/{lib/channel → call}/call_finalization.h +3 -3
  12. data/src/core/{lib/transport → call}/call_spine.cc +1 -1
  13. data/src/core/{lib/transport → call}/call_spine.h +68 -26
  14. data/src/core/{lib/transport → call}/call_state.cc +1 -1
  15. data/src/core/{lib/transport → call}/call_state.h +3 -3
  16. data/src/core/{lib/surface → call}/client_call.cc +9 -7
  17. data/src/core/{lib/surface → call}/client_call.h +4 -4
  18. data/src/core/{lib/transport → call}/custom_metadata.h +3 -3
  19. data/src/core/{lib/transport → call}/interception_chain.cc +5 -5
  20. data/src/core/{lib/transport → call}/interception_chain.h +7 -7
  21. data/src/core/{lib/transport → call}/message.cc +1 -1
  22. data/src/core/{lib/transport → call}/message.h +7 -3
  23. data/src/core/{lib/transport → call}/metadata.cc +2 -2
  24. data/src/core/{lib/transport → call}/metadata.h +4 -4
  25. data/src/core/{lib/transport → call}/metadata_batch.cc +1 -1
  26. data/src/core/{lib/transport → call}/metadata_batch.h +7 -7
  27. data/src/core/{lib/transport → call}/metadata_compression_traits.h +3 -3
  28. data/src/core/{lib/transport → call}/metadata_info.cc +27 -9
  29. data/src/core/{lib/transport → call}/metadata_info.h +4 -4
  30. data/src/core/{lib/transport → call}/parsed_metadata.cc +1 -1
  31. data/src/core/{lib/transport → call}/parsed_metadata.h +3 -3
  32. data/src/core/call/request_buffer.h +3 -3
  33. data/src/core/call/security_context.cc +125 -0
  34. data/src/core/call/security_context.h +114 -0
  35. data/src/core/{lib/surface → call}/server_call.cc +3 -3
  36. data/src/core/{lib/surface → call}/server_call.h +5 -5
  37. data/src/core/{lib/transport → call}/simple_slice_based_metadata.h +4 -4
  38. data/src/core/{lib/channel → call}/status_util.cc +1 -1
  39. data/src/core/{lib/channel → call}/status_util.h +3 -3
  40. data/src/core/client_channel/client_channel.cc +24 -16
  41. data/src/core/client_channel/client_channel.h +4 -3
  42. data/src/core/client_channel/client_channel_filter.cc +10 -20
  43. data/src/core/client_channel/client_channel_filter.h +1 -1
  44. data/src/core/client_channel/client_channel_internal.h +1 -1
  45. data/src/core/client_channel/config_selector.h +2 -2
  46. data/src/core/client_channel/direct_channel.cc +2 -2
  47. data/src/core/client_channel/dynamic_filters.cc +0 -1
  48. data/src/core/client_channel/dynamic_filters.h +0 -1
  49. data/src/core/client_channel/lb_metadata.h +1 -1
  50. data/src/core/client_channel/load_balanced_call_destination.cc +1 -1
  51. data/src/core/client_channel/load_balanced_call_destination.h +1 -1
  52. data/src/core/client_channel/retry_filter_legacy_call_data.cc +43 -41
  53. data/src/core/client_channel/retry_filter_legacy_call_data.h +6 -6
  54. data/src/core/client_channel/retry_interceptor.h +1 -1
  55. data/src/core/client_channel/retry_service_config.cc +1 -1
  56. data/src/core/client_channel/retry_service_config.h +1 -1
  57. data/src/core/client_channel/retry_throttle.cc +30 -34
  58. data/src/core/client_channel/retry_throttle.h +10 -2
  59. data/src/core/client_channel/subchannel.cc +7 -8
  60. data/src/core/client_channel/subchannel.h +1 -2
  61. data/src/core/client_channel/subchannel_stream_client.cc +14 -11
  62. data/src/core/client_channel/subchannel_stream_client.h +2 -2
  63. data/src/core/config/core_configuration.h +2 -2
  64. data/src/core/credentials/call/call_credentials.h +157 -0
  65. data/src/core/{lib/security/credentials → credentials/call}/call_creds_util.cc +4 -4
  66. data/src/core/{lib/security/credentials → credentials/call}/call_creds_util.h +4 -4
  67. data/src/core/{lib/security/credentials/composite/composite_credentials.cc → credentials/call/composite/composite_call_credentials.cc} +4 -57
  68. data/src/core/credentials/call/composite/composite_call_credentials.h +82 -0
  69. data/src/core/{lib/security/credentials → credentials/call}/external/aws_external_account_credentials.cc +2 -2
  70. data/src/core/{lib/security/credentials → credentials/call}/external/aws_external_account_credentials.h +5 -5
  71. data/src/core/{lib/security/credentials → credentials/call}/external/aws_request_signer.cc +1 -1
  72. data/src/core/{lib/security/credentials → credentials/call}/external/aws_request_signer.h +3 -3
  73. data/src/core/{lib/security/credentials → credentials/call}/external/external_account_credentials.cc +6 -6
  74. data/src/core/{lib/security/credentials → credentials/call}/external/external_account_credentials.h +5 -5
  75. data/src/core/{lib/security/credentials → credentials/call}/external/file_external_account_credentials.cc +1 -1
  76. data/src/core/{lib/security/credentials → credentials/call}/external/file_external_account_credentials.h +4 -4
  77. data/src/core/{lib/security/credentials → credentials/call}/external/url_external_account_credentials.cc +3 -2
  78. data/src/core/{lib/security/credentials → credentials/call}/external/url_external_account_credentials.h +4 -4
  79. data/src/core/{lib/security/credentials → credentials/call}/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +3 -2
  80. data/src/core/{lib/security/credentials → credentials/call}/gcp_service_account_identity/gcp_service_account_identity_credentials.h +6 -6
  81. data/src/core/{lib/security/credentials → credentials/call}/iam/iam_credentials.cc +2 -2
  82. data/src/core/{lib/security/credentials → credentials/call}/iam/iam_credentials.h +4 -4
  83. data/src/core/{lib/security/util → credentials/call}/json_util.cc +1 -1
  84. data/src/core/{lib/security/util → credentials/call}/json_util.h +3 -3
  85. data/src/core/{lib/security/credentials → credentials/call}/jwt/json_token.cc +2 -2
  86. data/src/core/{lib/security/credentials → credentials/call}/jwt/json_token.h +3 -3
  87. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_credentials.cc +3 -3
  88. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_credentials.h +5 -5
  89. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_verifier.cc +3 -2
  90. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_verifier.h +3 -3
  91. data/src/core/{lib/security/credentials → credentials/call}/oauth2/oauth2_credentials.cc +4 -3
  92. data/src/core/{lib/security/credentials → credentials/call}/oauth2/oauth2_credentials.h +5 -5
  93. data/src/core/{lib/security/credentials → credentials/call}/plugin/plugin_credentials.cc +2 -2
  94. data/src/core/{lib/security/credentials → credentials/call}/plugin/plugin_credentials.h +5 -5
  95. data/src/core/{lib/security/credentials → credentials/call}/token_fetcher/token_fetcher_credentials.cc +1 -1
  96. data/src/core/{lib/security/credentials → credentials/call}/token_fetcher/token_fetcher_credentials.h +5 -5
  97. data/src/core/{lib/security/credentials → credentials/transport}/alts/alts_credentials.cc +4 -4
  98. data/src/core/{lib/security/credentials → credentials/transport}/alts/alts_credentials.h +5 -5
  99. data/src/core/{lib/security/security_connector → credentials/transport}/alts/alts_security_connector.cc +4 -4
  100. data/src/core/{lib/security/security_connector → credentials/transport}/alts/alts_security_connector.h +4 -4
  101. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment.cc +1 -1
  102. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment.h +3 -3
  103. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_linux.cc +1 -1
  104. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_no_op.cc +1 -1
  105. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_windows.cc +1 -1
  106. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_client_options.cc +1 -1
  107. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_options.cc +1 -1
  108. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_options.h +3 -3
  109. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_server_options.cc +1 -1
  110. data/src/core/{lib/security/credentials → credentials/transport}/channel_creds_registry.h +4 -4
  111. data/src/core/{lib/security/credentials → credentials/transport}/channel_creds_registry_init.cc +21 -17
  112. data/src/core/credentials/transport/composite/composite_channel_credentials.cc +68 -0
  113. data/src/core/{lib/security/credentials/composite/composite_credentials.h → credentials/transport/composite/composite_channel_credentials.h} +6 -51
  114. data/src/core/{lib/security/credentials → credentials/transport}/fake/fake_credentials.cc +4 -26
  115. data/src/core/{lib/security/credentials → credentials/transport}/fake/fake_credentials.h +5 -37
  116. data/src/core/{lib/security/security_connector → credentials/transport}/fake/fake_security_connector.cc +4 -4
  117. data/src/core/{lib/security/security_connector → credentials/transport}/fake/fake_security_connector.h +4 -4
  118. data/src/core/{lib/security/credentials → credentials/transport}/google_default/credentials_generic.cc +2 -2
  119. data/src/core/{lib/security/credentials → credentials/transport}/google_default/google_default_credentials.cc +31 -19
  120. data/src/core/{lib/security/credentials → credentials/transport}/google_default/google_default_credentials.h +5 -5
  121. data/src/core/{lib/security/credentials → credentials/transport}/insecure/insecure_credentials.cc +2 -2
  122. data/src/core/{lib/security/credentials → credentials/transport}/insecure/insecure_credentials.h +5 -5
  123. data/src/core/{lib/security/security_connector → credentials/transport}/insecure/insecure_security_connector.cc +2 -2
  124. data/src/core/{lib/security/security_connector → credentials/transport}/insecure/insecure_security_connector.h +5 -5
  125. data/src/core/{lib/security/credentials → credentials/transport}/local/local_credentials.cc +2 -2
  126. data/src/core/{lib/security/credentials → credentials/transport}/local/local_credentials.h +5 -5
  127. data/src/core/{lib/security/security_connector → credentials/transport}/local/local_security_connector.cc +4 -4
  128. data/src/core/{lib/security/security_connector → credentials/transport}/local/local_security_connector.h +4 -4
  129. data/src/core/{lib/security/security_connector → credentials/transport}/security_connector.cc +2 -2
  130. data/src/core/{lib/security/security_connector → credentials/transport}/security_connector.h +3 -3
  131. data/src/core/{lib/security/credentials → credentials/transport}/ssl/ssl_credentials.cc +2 -2
  132. data/src/core/{lib/security/credentials → credentials/transport}/ssl/ssl_credentials.h +6 -6
  133. data/src/core/{lib/security/security_connector → credentials/transport}/ssl/ssl_security_connector.cc +5 -5
  134. data/src/core/{lib/security/security_connector → credentials/transport}/ssl/ssl_security_connector.h +4 -4
  135. data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_factory.h +3 -3
  136. data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_registry.cc +1 -1
  137. data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_registry.h +4 -4
  138. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_distributor.cc +1 -1
  139. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_distributor.h +4 -4
  140. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_match.cc +1 -1
  141. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_provider.cc +2 -2
  142. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_provider.h +5 -5
  143. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_verifier.cc +2 -2
  144. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_verifier.h +3 -3
  145. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_credentials_options.cc +1 -1
  146. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_credentials_options.h +7 -7
  147. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_crl_provider.cc +1 -1
  148. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_crl_provider.h +3 -3
  149. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots.h +3 -3
  150. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_fallback.cc +1 -1
  151. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_supported.cc +2 -2
  152. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_supported.h +3 -3
  153. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_windows.cc +1 -1
  154. data/src/core/{lib/security/security_connector → credentials/transport/tls}/ssl_utils.cc +3 -3
  155. data/src/core/{lib/security/security_connector → credentials/transport/tls}/ssl_utils.h +4 -4
  156. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_credentials.cc +4 -4
  157. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_credentials.h +5 -5
  158. data/src/core/{lib/security/security_connector → credentials/transport}/tls/tls_security_connector.cc +6 -6
  159. data/src/core/{lib/security/security_connector → credentials/transport}/tls/tls_security_connector.h +6 -6
  160. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_utils.cc +1 -1
  161. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_utils.h +3 -3
  162. data/src/core/{lib/security/credentials/credentials.cc → credentials/transport/transport_credentials.cc} +1 -3
  163. data/src/core/{lib/security/credentials/credentials.h → credentials/transport/transport_credentials.h} +5 -121
  164. data/src/core/{lib/security/credentials → credentials/transport}/xds/xds_credentials.cc +5 -5
  165. data/src/core/{lib/security/credentials → credentials/transport}/xds/xds_credentials.h +6 -6
  166. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -1
  167. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -5
  168. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +2 -2
  169. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +1 -1
  170. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
  171. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
  172. data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
  173. data/src/core/ext/filters/http/client_authority_filter.cc +2 -2
  174. data/src/core/ext/filters/http/message_compress/compression_filter.cc +1 -1
  175. data/src/core/ext/filters/http/message_compress/compression_filter.h +1 -1
  176. data/src/core/ext/filters/http/server/http_server_filter.cc +1 -1
  177. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
  178. data/src/core/ext/filters/rbac/rbac_filter.cc +2 -2
  179. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +1 -1
  180. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +3 -3
  181. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +8 -5
  182. data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -1
  183. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +2 -2
  184. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +1 -3
  185. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +58 -57
  186. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +3 -3
  187. data/src/core/ext/transport/chttp2/transport/frame.cc +89 -68
  188. data/src/core/ext/transport/chttp2/transport/frame.h +37 -1
  189. data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -0
  190. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -3
  191. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -2
  192. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -2
  193. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +1 -1
  194. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -2
  195. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -1
  196. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -2
  197. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +10 -8
  198. data/src/core/ext/transport/chttp2/transport/http2_settings.h +2 -2
  199. data/src/core/ext/transport/chttp2/transport/http2_status.h +52 -0
  200. data/src/core/ext/transport/chttp2/transport/internal.h +11 -14
  201. data/src/core/ext/transport/chttp2/transport/parsing.cc +36 -23
  202. data/src/core/ext/transport/chttp2/transport/writing.cc +15 -14
  203. data/src/core/ext/transport/inproc/inproc_transport.cc +1 -1
  204. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +1 -1
  205. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +65 -65
  206. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +28 -28
  207. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +14 -14
  208. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +6 -6
  209. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +6 -6
  210. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +4 -4
  211. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +133 -133
  212. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +71 -71
  213. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +26 -26
  214. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +7 -7
  215. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +216 -218
  216. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +66 -66
  217. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +27 -27
  218. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +9 -9
  219. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +326 -328
  220. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +103 -103
  221. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +58 -58
  222. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +14 -14
  223. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +22 -24
  224. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +3 -3
  225. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +29 -29
  226. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +16 -16
  227. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +186 -192
  228. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +54 -54
  229. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +54 -54
  230. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +21 -21
  231. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +59 -61
  232. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +15 -15
  233. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +100 -100
  234. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +34 -34
  235. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +12 -12
  236. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +5 -5
  237. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +118 -118
  238. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +39 -39
  239. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +19 -19
  240. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +9 -9
  241. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +27 -27
  242. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +10 -10
  243. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +12 -14
  244. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +2 -2
  245. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +41 -41
  246. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +16 -16
  247. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +24 -24
  248. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +9 -9
  249. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +139 -139
  250. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +46 -46
  251. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +61 -61
  252. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +20 -20
  253. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +3 -3
  254. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +1 -1
  255. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +6 -6
  256. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +4 -4
  257. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +33 -33
  258. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +14 -14
  259. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +12 -14
  260. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +2 -2
  261. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +52 -54
  262. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +10 -10
  263. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +620 -626
  264. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +215 -215
  265. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +13 -13
  266. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +4 -4
  267. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +3 -3
  268. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +2 -2
  269. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +7 -7
  270. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +3 -3
  271. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +15 -15
  272. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +7 -7
  273. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +7 -7
  274. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +3 -3
  275. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +16 -16
  276. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +10 -10
  277. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +306 -312
  278. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +96 -96
  279. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +61 -61
  280. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +27 -27
  281. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +19 -19
  282. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +6 -6
  283. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +25 -25
  284. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +9 -9
  285. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +34 -34
  286. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +9 -9
  287. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +3 -3
  288. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +2 -2
  289. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +294 -294
  290. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +105 -105
  291. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +3 -3
  292. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +1 -1
  293. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +23 -23
  294. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +8 -8
  295. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +84 -84
  296. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +28 -28
  297. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +87 -87
  298. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +31 -31
  299. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +24 -24
  300. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +5 -5
  301. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +130 -132
  302. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +43 -43
  303. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +6 -6
  304. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +2 -2
  305. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +60 -60
  306. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +26 -26
  307. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +7 -7
  308. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +3 -3
  309. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +6 -6
  310. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +2 -2
  311. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +7 -7
  312. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +3 -3
  313. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +11 -11
  314. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +4 -4
  315. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +85 -89
  316. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +20 -20
  317. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +80 -83
  318. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +27 -27
  319. data/src/core/ext/upb-gen/google/api/http.upb.h +51 -51
  320. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +22 -22
  321. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +327 -301
  322. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +97 -85
  323. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +1 -0
  324. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +9 -11
  325. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +9 -10
  326. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +110 -113
  327. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +25 -25
  328. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +6 -6
  329. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +4 -4
  330. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +21 -22
  331. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +3 -3
  332. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +70 -72
  333. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +17 -17
  334. data/src/core/ext/upb-gen/validate/validate.upb.h +368 -368
  335. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +117 -117
  336. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +9 -10
  337. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +7 -7
  338. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +3 -3
  339. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +12 -12
  340. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +2 -2
  341. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +27 -30
  342. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +7 -7
  343. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +3 -3
  344. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +3 -3
  345. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +1 -1
  346. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +22 -24
  347. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +3 -3
  348. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +98 -87
  349. data/src/core/{lib/security/transport → filter/auth}/auth_filters.h +8 -7
  350. data/src/core/{lib/security/transport → filter/auth}/client_auth_filter.cc +7 -6
  351. data/src/core/{lib/security/transport → filter/auth}/server_auth_filter.cc +5 -4
  352. data/src/core/handshaker/handshaker.cc +0 -8
  353. data/src/core/handshaker/security/security_handshaker.cc +1 -1
  354. data/src/core/handshaker/security/security_handshaker.h +1 -1
  355. data/src/core/lib/channel/channel_args.h +49 -30
  356. data/src/core/lib/channel/channel_stack.h +1 -2
  357. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
  358. data/src/core/lib/channel/connected_channel.cc +2 -2
  359. data/src/core/lib/channel/promise_based_filter.h +3 -3
  360. data/src/core/lib/debug/trace_flags.cc +2 -4
  361. data/src/core/lib/debug/trace_flags.h +1 -2
  362. data/src/core/lib/event_engine/default_event_engine_factory.cc +6 -6
  363. data/src/core/lib/event_engine/default_event_engine_factory.h +1 -1
  364. data/src/core/lib/event_engine/extensions/iomgr_compatible.h +39 -0
  365. data/src/core/lib/event_engine/extensions/supports_win_sockets.h +48 -0
  366. data/src/core/lib/event_engine/extensions/tcp_trace.h +1 -1
  367. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +0 -2
  368. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +1 -3
  369. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +26 -0
  370. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +4 -0
  371. data/src/core/lib/event_engine/posix_engine/set_socket_dualstack.cc +64 -0
  372. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +0 -11
  373. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +10 -2
  374. data/src/core/lib/event_engine/shim.cc +9 -16
  375. data/src/core/lib/event_engine/shim.h +11 -0
  376. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +15 -7
  377. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +2 -1
  378. data/src/core/lib/event_engine/windows/win_socket.cc +11 -0
  379. data/src/core/lib/event_engine/windows/win_socket.h +3 -0
  380. data/src/core/lib/event_engine/windows/windows_endpoint.cc +5 -10
  381. data/src/core/lib/event_engine/windows/windows_engine.cc +42 -0
  382. data/src/core/lib/event_engine/windows/windows_engine.h +8 -2
  383. data/src/core/lib/event_engine/windows/windows_listener.cc +5 -6
  384. data/src/core/lib/event_engine/windows/windows_listener.h +9 -4
  385. data/src/core/lib/experiments/experiments.cc +174 -21
  386. data/src/core/lib/experiments/experiments.h +70 -13
  387. data/src/core/lib/iomgr/endpoint_pair_posix.cc +43 -16
  388. data/src/core/lib/iomgr/endpoint_pair_windows.cc +43 -8
  389. data/src/core/lib/iomgr/error.cc +27 -43
  390. data/src/core/lib/iomgr/ev_epoll1_linux.cc +13 -1
  391. data/src/core/lib/iomgr/ev_poll_posix.cc +13 -0
  392. data/src/core/lib/iomgr/polling_entity.cc +2 -7
  393. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
  394. data/src/core/lib/iomgr/socket_utils_posix.cc +22 -11
  395. data/src/core/lib/iomgr/socket_utils_posix.h +12 -2
  396. data/src/core/lib/iomgr/tcp_client_cfstream.cc +8 -9
  397. data/src/core/lib/iomgr/tcp_client_posix.cc +11 -15
  398. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  399. data/src/core/lib/iomgr/tcp_posix.cc +58 -31
  400. data/src/core/lib/iomgr/tcp_posix.h +10 -2
  401. data/src/core/lib/iomgr/tcp_server_posix.cc +9 -1
  402. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -4
  403. data/src/core/lib/iomgr/tcp_server_windows.cc +27 -16
  404. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -2
  405. data/src/core/lib/promise/all_ok.h +31 -0
  406. data/src/core/lib/promise/loop.h +8 -5
  407. data/src/core/lib/promise/map.h +65 -2
  408. data/src/core/lib/promise/party.h +5 -1
  409. data/src/core/lib/promise/poll.h +22 -20
  410. data/src/core/lib/promise/promise.h +2 -2
  411. data/src/core/lib/promise/status_flag.h +23 -11
  412. data/src/core/lib/security/authorization/evaluate_args.cc +1 -1
  413. data/src/core/lib/security/authorization/evaluate_args.h +1 -1
  414. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
  415. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  416. data/src/core/lib/slice/slice.h +6 -0
  417. data/src/core/lib/surface/call.cc +20 -18
  418. data/src/core/lib/surface/call_utils.cc +3 -3
  419. data/src/core/lib/surface/call_utils.h +3 -3
  420. data/src/core/lib/surface/channel.h +2 -2
  421. data/src/core/lib/surface/channel_init.h +2 -2
  422. data/src/core/lib/surface/completion_queue.cc +77 -17
  423. data/src/core/lib/surface/filter_stack_call.cc +40 -27
  424. data/src/core/lib/surface/filter_stack_call.h +1 -1
  425. data/src/core/lib/surface/init.cc +2 -3
  426. data/src/core/lib/surface/lame_client.cc +1 -1
  427. data/src/core/lib/surface/legacy_channel.cc +27 -23
  428. data/src/core/lib/surface/legacy_channel.h +1 -1
  429. data/src/core/lib/surface/version.cc +2 -2
  430. data/src/core/lib/transport/error_utils.cc +65 -11
  431. data/src/core/lib/transport/error_utils.h +2 -2
  432. data/src/core/lib/transport/status_conversion.cc +16 -14
  433. data/src/core/lib/transport/status_conversion.h +5 -4
  434. data/src/core/lib/transport/transport.h +5 -5
  435. data/src/core/lib/transport/transport_op_string.cc +1 -1
  436. data/src/core/load_balancing/delegating_helper.h +1 -1
  437. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -1
  438. data/src/core/load_balancing/grpclb/grpclb.cc +1 -2
  439. data/src/core/load_balancing/pick_first/pick_first.cc +0 -955
  440. data/src/core/load_balancing/rls/rls.cc +31 -37
  441. data/src/core/load_balancing/weighted_target/weighted_target.cc +1 -1
  442. data/src/core/load_balancing/xds/cds.cc +3 -10
  443. data/src/core/load_balancing/xds/xds_cluster_impl.cc +1 -1
  444. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
  445. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -2
  446. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +1 -3
  447. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -0
  448. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +1 -1
  449. data/src/core/resolver/xds/xds_dependency_manager.cc +8 -3
  450. data/src/core/resolver/xds/xds_resolver.cc +2 -2
  451. data/src/core/server/server.cc +7 -4
  452. data/src/core/server/server.h +1 -1
  453. data/src/core/server/server_call_tracer_filter.cc +1 -1
  454. data/src/core/server/server_config_selector.h +1 -1
  455. data/src/core/server/server_config_selector_filter.cc +1 -1
  456. data/src/core/server/xds_server_config_fetcher.cc +5 -5
  457. data/src/core/service_config/service_config_channel_arg_filter.cc +1 -1
  458. data/src/core/telemetry/call_tracer.cc +2 -4
  459. data/src/core/telemetry/call_tracer.h +3 -3
  460. data/src/core/telemetry/metrics.cc +30 -12
  461. data/src/core/telemetry/metrics.h +15 -3
  462. data/src/core/telemetry/stats_data.cc +75 -2
  463. data/src/core/telemetry/stats_data.h +46 -4
  464. data/src/core/telemetry/tcp_tracer.h +90 -84
  465. data/src/core/{lib/security/context/security_context.cc → transport/auth_context.cc} +1 -96
  466. data/src/core/{lib/security/context/security_context.h → transport/auth_context.h} +6 -76
  467. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  468. data/src/core/tsi/ssl_transport_security.cc +1 -1
  469. data/src/core/util/check_class_size.h +48 -0
  470. data/src/core/util/gcp_metadata_query.cc +1 -1
  471. data/src/core/util/http_client/httpcli.cc +3 -3
  472. data/src/core/util/http_client/httpcli_security_connector.cc +3 -3
  473. data/src/core/util/load_file.cc +26 -14
  474. data/src/core/util/status_helper.cc +86 -63
  475. data/src/core/util/status_helper.h +9 -26
  476. data/src/core/xds/grpc/certificate_provider_store.cc +1 -1
  477. data/src/core/xds/grpc/certificate_provider_store.h +3 -3
  478. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
  479. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
  480. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +10 -7
  481. data/src/core/xds/grpc/xds_certificate_provider.cc +1 -1
  482. data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
  483. data/src/core/xds/grpc/xds_client_grpc.cc +7 -6
  484. data/src/core/xds/grpc/xds_client_grpc.h +4 -2
  485. data/src/core/xds/grpc/xds_cluster.h +3 -3
  486. data/src/core/xds/grpc/xds_cluster_parser.cc +3 -2
  487. data/src/core/xds/grpc/xds_http_fault_filter.cc +1 -1
  488. data/src/core/xds/grpc/xds_http_filter.h +1 -1
  489. data/src/core/xds/grpc/xds_http_filter_registry.h +1 -1
  490. data/src/core/xds/grpc/xds_route_config.h +1 -1
  491. data/src/core/xds/grpc/xds_route_config_parser.cc +1 -1
  492. data/src/core/xds/grpc/xds_route_config_parser.h +1 -1
  493. data/src/core/xds/grpc/xds_routing.h +1 -1
  494. data/src/core/xds/grpc/xds_server_grpc.cc +60 -48
  495. data/src/core/xds/grpc/xds_server_grpc.h +23 -13
  496. data/src/core/xds/grpc/xds_server_grpc_interface.h +2 -2
  497. data/src/core/xds/grpc/xds_transport_grpc.cc +5 -5
  498. data/src/core/xds/grpc/xds_transport_grpc.h +5 -3
  499. data/src/core/xds/xds_client/lrs_client.cc +6 -5
  500. data/src/core/xds/xds_client/lrs_client.h +7 -7
  501. data/src/core/xds/xds_client/xds_bootstrap.h +16 -1
  502. data/src/core/xds/xds_client/xds_client.cc +25 -23
  503. data/src/core/xds/xds_client/xds_client.h +3 -1
  504. data/src/core/xds/xds_client/xds_resource_type.h +1 -2
  505. data/src/core/xds/xds_client/xds_transport.h +1 -1
  506. data/src/ruby/ext/grpc/extconf.rb +1 -1
  507. data/src/ruby/lib/grpc/version.rb +1 -1
  508. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.cc +0 -2
  509. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.cc +0 -2
  510. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.cc +0 -2
  511. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.cc +0 -2
  512. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.cc +0 -2
  513. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.cc +0 -2
  514. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.cc +0 -1
  515. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +0 -1
  516. data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +0 -2
  517. data/third_party/boringssl-with-bazel/src/crypto/internal.h +20 -3
  518. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -25
  519. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +3 -7
  520. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +1 -1
  521. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
  522. data/third_party/boringssl-with-bazel/src/ssl/internal.h +13 -6
  523. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +2 -1
  524. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
  525. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +1 -1
  526. data/third_party/upb/upb/base/internal/log2.h +3 -1
  527. data/third_party/upb/upb/base/string_view.h +10 -0
  528. data/third_party/upb/upb/hash/common.c +5 -1
  529. data/third_party/upb/upb/json/decode.c +2 -2
  530. data/third_party/upb/upb/json/decode.h +0 -1
  531. data/third_party/upb/upb/mem/alloc.h +5 -0
  532. data/third_party/upb/upb/mem/arena.c +296 -142
  533. data/third_party/upb/upb/mem/arena.h +47 -11
  534. data/third_party/upb/upb/mem/arena.hpp +4 -20
  535. data/third_party/upb/upb/mem/internal/arena.h +4 -6
  536. data/third_party/upb/upb/message/accessors.h +41 -0
  537. data/third_party/upb/upb/message/compat.c +11 -14
  538. data/third_party/upb/upb/message/compat.h +4 -3
  539. data/third_party/upb/upb/message/copy.c +35 -30
  540. data/third_party/upb/upb/message/internal/accessors.h +139 -10
  541. data/third_party/upb/upb/message/internal/extension.c +28 -25
  542. data/third_party/upb/upb/message/internal/extension.h +21 -5
  543. data/third_party/upb/upb/message/internal/iterator.c +58 -0
  544. data/third_party/upb/upb/message/internal/iterator.h +29 -0
  545. data/third_party/upb/upb/message/internal/map.h +2 -3
  546. data/third_party/upb/upb/message/internal/map_sorter.h +3 -2
  547. data/third_party/upb/upb/message/internal/message.c +48 -29
  548. data/third_party/upb/upb/message/internal/message.h +154 -24
  549. data/third_party/upb/upb/message/map_sorter.c +20 -8
  550. data/third_party/upb/upb/message/message.c +90 -38
  551. data/third_party/upb/upb/message/message.h +58 -2
  552. data/third_party/upb/upb/message/value.h +9 -0
  553. data/third_party/upb/upb/mini_descriptor/build_enum.c +1 -1
  554. data/third_party/upb/upb/mini_descriptor/decode.c +97 -136
  555. data/third_party/upb/upb/mini_descriptor/decode.h +4 -3
  556. data/third_party/upb/upb/mini_descriptor/internal/encode.hpp +1 -1
  557. data/third_party/upb/upb/mini_table/extension_registry.c +24 -12
  558. data/third_party/upb/upb/mini_table/extension_registry.h +13 -6
  559. data/third_party/upb/upb/mini_table/message.c +21 -13
  560. data/third_party/upb/upb/port/atomic.h +134 -7
  561. data/third_party/upb/upb/port/def.inc +140 -38
  562. data/third_party/upb/upb/port/undef.inc +11 -1
  563. data/third_party/upb/upb/reflection/def.hpp +5 -1
  564. data/third_party/upb/upb/reflection/def_pool.c +10 -3
  565. data/third_party/upb/upb/reflection/descriptor_bootstrap.h +1 -1
  566. data/third_party/upb/upb/reflection/file_def.c +12 -5
  567. data/third_party/upb/upb/reflection/internal/def_builder.c +1 -1
  568. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  569. data/third_party/upb/upb/reflection/message.c +19 -16
  570. data/third_party/upb/upb/reflection/message.h +3 -1
  571. data/third_party/upb/upb/text/encode.c +1 -13
  572. data/third_party/upb/upb/text/internal/encode.c +25 -6
  573. data/third_party/upb/upb/text/internal/encode.h +4 -0
  574. data/third_party/upb/upb/wire/decode.c +60 -45
  575. data/third_party/upb/upb/wire/decode.h +4 -2
  576. data/third_party/upb/upb/wire/encode.c +77 -42
  577. data/third_party/upb/upb/wire/encode.h +2 -0
  578. data/third_party/upb/upb/wire/eps_copy_input_stream.h +18 -20
  579. data/third_party/upb/upb/wire/internal/decoder.h +4 -11
  580. data/third_party/utf8_range/utf8_range.c +15 -275
  581. data/third_party/utf8_range/utf8_range_neon.inc +117 -0
  582. data/third_party/utf8_range/utf8_range_sse.inc +272 -0
  583. data/third_party/zlib/deflate.c +40 -15
  584. data/third_party/zlib/deflate.h +33 -2
  585. data/third_party/zlib/gzguts.h +2 -6
  586. data/third_party/zlib/inflate.c +1 -1
  587. data/third_party/zlib/inftrees.c +3 -3
  588. data/third_party/zlib/inftrees.h +2 -2
  589. data/third_party/zlib/trees.c +18 -4
  590. data/third_party/zlib/zconf.h +1 -9
  591. data/third_party/zlib/zlib.h +12 -12
  592. data/third_party/zlib/zutil.h +4 -25
  593. metadata +155 -145
  594. data/include/grpc/grpc_cronet.h +0 -37
  595. data/src/core/lib/transport/http2_errors.h +0 -43
  596. data/third_party/upb/upb/message/internal/compare_unknown.c +0 -289
  597. data/third_party/upb/upb/message/internal/compare_unknown.h +0 -49
@@ -47,6 +47,8 @@
47
47
  #include "absl/strings/str_cat.h"
48
48
  #include "absl/strings/str_join.h"
49
49
  #include "absl/strings/string_view.h"
50
+ #include "src/core/call/metadata_batch.h"
51
+ #include "src/core/call/status_util.h"
50
52
  #include "src/core/channelz/channel_trace.h"
51
53
  #include "src/core/client_channel/backup_poller.h"
52
54
  #include "src/core/client_channel/client_channel_internal.h"
@@ -60,11 +62,11 @@
60
62
  #include "src/core/client_channel/subchannel.h"
61
63
  #include "src/core/client_channel/subchannel_interface_internal.h"
62
64
  #include "src/core/config/core_configuration.h"
65
+ #include "src/core/credentials/transport/transport_credentials.h"
63
66
  #include "src/core/handshaker/proxy_mapper_registry.h"
64
67
  #include "src/core/lib/address_utils/sockaddr_utils.h"
65
68
  #include "src/core/lib/channel/channel_args.h"
66
69
  #include "src/core/lib/channel/channel_stack.h"
67
- #include "src/core/lib/channel/status_util.h"
68
70
  #include "src/core/lib/debug/trace.h"
69
71
  #include "src/core/lib/experiments/experiments.h"
70
72
  #include "src/core/lib/iomgr/exec_ctx.h"
@@ -79,13 +81,11 @@
79
81
  #include "src/core/lib/promise/poll.h"
80
82
  #include "src/core/lib/promise/promise.h"
81
83
  #include "src/core/lib/promise/try_seq.h"
82
- #include "src/core/lib/security/credentials/credentials.h"
83
84
  #include "src/core/lib/slice/slice.h"
84
85
  #include "src/core/lib/slice/slice_internal.h"
85
86
  #include "src/core/lib/surface/call.h"
86
87
  #include "src/core/lib/transport/connectivity_state.h"
87
88
  #include "src/core/lib/transport/error_utils.h"
88
- #include "src/core/lib/transport/metadata_batch.h"
89
89
  #include "src/core/load_balancing/backend_metric_parser.h"
90
90
  #include "src/core/load_balancing/child_policy_handler.h"
91
91
  #include "src/core/load_balancing/lb_policy_registry.h"
@@ -268,7 +268,6 @@ class ClientChannelFilter::FilterBasedCallData final
268
268
  static void RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
269
269
  void* arg, grpc_error_handle error);
270
270
 
271
- grpc_slice path_; // Request path.
272
271
  gpr_cycle_counter call_start_time_;
273
272
  Timestamp deadline_;
274
273
 
@@ -398,7 +397,6 @@ class DynamicTerminationFilter::CallData final {
398
397
  auto* chand = static_cast<DynamicTerminationFilter*>(elem->channel_data);
399
398
  ClientChannelFilter* client_channel = chand->chand_;
400
399
  grpc_call_element_args args = {calld->owning_call_, nullptr,
401
- calld->path_,
402
400
  /*start_time=*/0, calld->deadline_,
403
401
  calld->arena_, calld->call_combiner_};
404
402
  auto* service_config_call_data = GetServiceConfigCallData(calld->arena_);
@@ -413,15 +411,11 @@ class DynamicTerminationFilter::CallData final {
413
411
 
414
412
  private:
415
413
  explicit CallData(const grpc_call_element_args& args)
416
- : path_(CSliceRef(args.path)),
417
- deadline_(args.deadline),
414
+ : deadline_(args.deadline),
418
415
  arena_(args.arena),
419
416
  owning_call_(args.call_stack),
420
417
  call_combiner_(args.call_combiner) {}
421
418
 
422
- ~CallData() { CSliceUnref(path_); }
423
-
424
- grpc_slice path_; // Request path.
425
419
  Timestamp deadline_;
426
420
  Arena* arena_;
427
421
  grpc_call_stack* owning_call_;
@@ -986,7 +980,7 @@ class ClientChannelFilter::ClientChannelControlHelper final
986
980
  }
987
981
 
988
982
  GlobalStatsPluginRegistry::StatsPluginGroup& GetStatsPluginGroup() override {
989
- return *chand_->owning_stack_->stats_plugin_group;
983
+ return **chand_->owning_stack_->stats_plugin_group;
990
984
  }
991
985
 
992
986
  void AddTraceEvent(TraceSeverity severity, absl::string_view message) override
@@ -1928,8 +1922,7 @@ bool ClientChannelFilter::CallData::CheckResolutionLocked(
1928
1922
 
1929
1923
  ClientChannelFilter::FilterBasedCallData::FilterBasedCallData(
1930
1924
  grpc_call_element* elem, const grpc_call_element_args& args)
1931
- : path_(CSliceRef(args.path)),
1932
- call_start_time_(args.start_time),
1925
+ : call_start_time_(args.start_time),
1933
1926
  deadline_(args.deadline),
1934
1927
  arena_(args.arena),
1935
1928
  elem_(elem),
@@ -1940,7 +1933,6 @@ ClientChannelFilter::FilterBasedCallData::FilterBasedCallData(
1940
1933
  }
1941
1934
 
1942
1935
  ClientChannelFilter::FilterBasedCallData::~FilterBasedCallData() {
1943
- CSliceUnref(path_);
1944
1936
  // Make sure there are no remaining pending batches.
1945
1937
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
1946
1938
  CHECK_EQ(pending_batches_[i], nullptr);
@@ -2252,9 +2244,9 @@ void ClientChannelFilter::FilterBasedCallData::RetryCheckResolutionLocked() {
2252
2244
  }
2253
2245
 
2254
2246
  void ClientChannelFilter::FilterBasedCallData::CreateDynamicCall() {
2255
- DynamicFilters::Call::Args args = {dynamic_filters(), pollent_, path_,
2256
- call_start_time_, deadline_, arena(),
2257
- call_combiner()};
2247
+ DynamicFilters::Call::Args args = {dynamic_filters(), pollent_,
2248
+ call_start_time_, deadline_,
2249
+ arena(), call_combiner()};
2258
2250
  grpc_error_handle error;
2259
2251
  DynamicFilters* channel_stack = args.channel_stack.get();
2260
2252
  GRPC_TRACE_LOG(client_channel_call, INFO)
@@ -3042,10 +3034,8 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::RetryPickLocked() {
3042
3034
  }
3043
3035
 
3044
3036
  void ClientChannelFilter::FilterBasedLoadBalancedCall::CreateSubchannelCall() {
3045
- Slice* path = send_initial_metadata()->get_pointer(HttpPathMetadata());
3046
- CHECK_NE(path, nullptr);
3047
3037
  SubchannelCall::Args call_args = {
3048
- connected_subchannel()->Ref(), pollent_, path->Ref(), /*start_time=*/0,
3038
+ connected_subchannel()->Ref(), pollent_, /*start_time=*/0,
3049
3039
  arena()->GetContext<Call>()->deadline(),
3050
3040
  // TODO(roth): When we implement hedging support, we will probably
3051
3041
  // need to use a separate call arena for each subchannel call.
@@ -34,6 +34,7 @@
34
34
  #include "absl/functional/any_invocable.h"
35
35
  #include "absl/status/status.h"
36
36
  #include "absl/strings/string_view.h"
37
+ #include "src/core/call/metadata_batch.h"
37
38
  #include "src/core/channelz/channelz.h"
38
39
  #include "src/core/client_channel/client_channel_args.h"
39
40
  #include "src/core/client_channel/client_channel_factory.h"
@@ -53,7 +54,6 @@
53
54
  #include "src/core/lib/resource_quota/arena.h"
54
55
  #include "src/core/lib/slice/slice.h"
55
56
  #include "src/core/lib/transport/connectivity_state.h"
56
- #include "src/core/lib/transport/metadata_batch.h"
57
57
  #include "src/core/lib/transport/transport.h"
58
58
  #include "src/core/load_balancing/backend_metric_data.h"
59
59
  #include "src/core/load_balancing/lb_policy.h"
@@ -23,8 +23,8 @@
23
23
 
24
24
  #include "absl/functional/any_invocable.h"
25
25
  #include "absl/log/check.h"
26
+ #include "src/core/call/call_destination.h"
26
27
  #include "src/core/lib/resource_quota/arena.h"
27
- #include "src/core/lib/transport/call_destination.h"
28
28
  #include "src/core/load_balancing/lb_policy.h"
29
29
  #include "src/core/service_config/service_config_call_data.h"
30
30
  #include "src/core/telemetry/call_tracer.h"
@@ -27,12 +27,12 @@
27
27
  #include "absl/log/check.h"
28
28
  #include "absl/status/status.h"
29
29
  #include "absl/strings/string_view.h"
30
+ #include "src/core/call/interception_chain.h"
31
+ #include "src/core/call/metadata_batch.h"
30
32
  #include "src/core/client_channel/client_channel_internal.h"
31
33
  #include "src/core/lib/channel/channel_fwd.h"
32
34
  #include "src/core/lib/resource_quota/arena.h"
33
35
  #include "src/core/lib/slice/slice.h"
34
- #include "src/core/lib/transport/interception_chain.h"
35
- #include "src/core/lib/transport/metadata_batch.h"
36
36
  #include "src/core/service_config/service_config.h"
37
37
  #include "src/core/util/ref_counted.h"
38
38
  #include "src/core/util/ref_counted_ptr.h"
@@ -14,11 +14,11 @@
14
14
 
15
15
  #include "src/core/client_channel/direct_channel.h"
16
16
 
17
+ #include "src/core/call/client_call.h"
18
+ #include "src/core/call/interception_chain.h"
17
19
  #include "src/core/config/core_configuration.h"
18
20
  #include "src/core/lib/event_engine/event_engine_context.h"
19
21
  #include "src/core/lib/surface/channel_stack_type.h"
20
- #include "src/core/lib/surface/client_call.h"
21
- #include "src/core/lib/transport/interception_chain.h"
22
22
  #include "src/core/util/orphanable.h"
23
23
 
24
24
  namespace grpc_core {
@@ -55,7 +55,6 @@ DynamicFilters::Call::Call(Args args, grpc_error_handle* error)
55
55
  const grpc_call_element_args call_args = {
56
56
  call_stack, // call_stack
57
57
  nullptr, // server_transport_data
58
- args.path, // path
59
58
  args.start_time, // start_time
60
59
  args.deadline, // deadline
61
60
  args.arena, // arena
@@ -49,7 +49,6 @@ class DynamicFilters final : public RefCounted<DynamicFilters> {
49
49
  struct Args {
50
50
  RefCountedPtr<DynamicFilters> channel_stack;
51
51
  grpc_polling_entity* pollent;
52
- grpc_slice path;
53
52
  gpr_cycle_counter start_time;
54
53
  Timestamp deadline;
55
54
  Arena* arena;
@@ -22,7 +22,7 @@
22
22
  #include <vector>
23
23
 
24
24
  #include "absl/strings/string_view.h"
25
- #include "src/core/lib/transport/metadata_batch.h"
25
+ #include "src/core/call/metadata_batch.h"
26
26
  #include "src/core/load_balancing/lb_policy.h"
27
27
 
28
28
  namespace grpc_core {
@@ -15,12 +15,12 @@
15
15
  #include "src/core/client_channel/load_balanced_call_destination.h"
16
16
 
17
17
  #include "absl/log/log.h"
18
+ #include "src/core/call/status_util.h"
18
19
  #include "src/core/client_channel/client_channel.h"
19
20
  #include "src/core/client_channel/client_channel_internal.h"
20
21
  #include "src/core/client_channel/lb_metadata.h"
21
22
  #include "src/core/client_channel/subchannel.h"
22
23
  #include "src/core/config/core_configuration.h"
23
- #include "src/core/lib/channel/status_util.h"
24
24
  #include "src/core/lib/promise/loop.h"
25
25
  #include "src/core/telemetry/call_tracer.h"
26
26
 
@@ -16,9 +16,9 @@
16
16
  #define GRPC_SRC_CORE_CLIENT_CHANNEL_LOAD_BALANCED_CALL_DESTINATION_H
17
17
 
18
18
  #include "absl/functional/any_invocable.h"
19
+ #include "src/core/call/call_destination.h"
19
20
  #include "src/core/client_channel/client_channel.h"
20
21
  #include "src/core/lib/promise/context.h"
21
- #include "src/core/lib/transport/call_destination.h"
22
22
  #include "src/core/load_balancing/lb_policy.h"
23
23
 
24
24
  namespace grpc_core {
@@ -24,11 +24,12 @@
24
24
  #include "absl/log/log.h"
25
25
  #include "absl/status/status.h"
26
26
  #include "absl/strings/str_cat.h"
27
+ #include "src/core/call/metadata_batch.h"
28
+ #include "src/core/call/status_util.h"
27
29
  #include "src/core/client_channel/client_channel_internal.h"
28
30
  #include "src/core/client_channel/retry_service_config.h"
29
31
  #include "src/core/client_channel/retry_throttle.h"
30
32
  #include "src/core/lib/channel/channel_stack.h"
31
- #include "src/core/lib/channel/status_util.h"
32
33
  #include "src/core/lib/debug/trace.h"
33
34
  #include "src/core/lib/iomgr/call_combiner.h"
34
35
  #include "src/core/lib/iomgr/closure.h"
@@ -39,7 +40,6 @@
39
40
  #include "src/core/lib/slice/slice.h"
40
41
  #include "src/core/lib/slice/slice_buffer.h"
41
42
  #include "src/core/lib/transport/error_utils.h"
42
- #include "src/core/lib/transport/metadata_batch.h"
43
43
  #include "src/core/lib/transport/transport.h"
44
44
  #include "src/core/util/backoff.h"
45
45
  #include "src/core/util/construct_destruct.h"
@@ -53,6 +53,8 @@
53
53
 
54
54
  namespace grpc_core {
55
55
 
56
+ using TaskHandle = grpc_event_engine::experimental::EventEngine::TaskHandle;
57
+
56
58
  //
57
59
  // RetryFilter::LegacyCallData::CallStackDestructionBarrier
58
60
  //
@@ -220,7 +222,7 @@ void RetryFilter::LegacyCallData::CallAttempt::MaybeSwitchToFastPath() {
220
222
  // If we've already switched to fast path, there's nothing to do here.
221
223
  if (calld_->committed_call_ != nullptr) return;
222
224
  // If the perAttemptRecvTimeout timer is pending, we can't switch yet.
223
- if (per_attempt_recv_timer_handle_.has_value()) return;
225
+ if (per_attempt_recv_timer_handle_ != TaskHandle::kInvalid) return;
224
226
  // If there are still send ops to replay, we can't switch yet.
225
227
  if (HaveSendOpsToReplay()) return;
226
228
  // If we started an internal batch for recv_trailing_metadata but have not
@@ -643,31 +645,33 @@ void RetryFilter::LegacyCallData::CallAttempt::OnPerAttemptRecvTimerLocked(
643
645
  << "chand=" << calld->chand_ << " calld=" << calld
644
646
  << " attempt=" << call_attempt
645
647
  << ": perAttemptRecvTimeout timer fired: error=" << StatusToString(error)
646
- << ", per_attempt_recv_timer_handle_.has_value()="
647
- << call_attempt->per_attempt_recv_timer_handle_.has_value();
648
+ << ", per_attempt_recv_timer_handle_ is valid ="
649
+ << (call_attempt->per_attempt_recv_timer_handle_ != TaskHandle::kInvalid);
648
650
  CallCombinerClosureList closures;
649
- call_attempt->per_attempt_recv_timer_handle_.reset();
650
- // Cancel this attempt.
651
- // TODO(roth): When implementing hedging, we should not cancel the
652
- // current attempt.
653
- call_attempt->MaybeAddBatchForCancelOp(
654
- grpc_error_set_int(
655
- GRPC_ERROR_CREATE("retry perAttemptRecvTimeout exceeded"),
656
- StatusIntProperty::kRpcStatus, GRPC_STATUS_CANCELLED),
657
- &closures);
658
- // Check whether we should retry.
659
- if (call_attempt->ShouldRetry(/*status=*/std::nullopt,
660
- /*server_pushback_ms=*/std::nullopt)) {
661
- // Mark current attempt as abandoned.
662
- call_attempt->Abandon();
663
- // We are retrying. Start backoff timer.
664
- calld->StartRetryTimer(/*server_pushback=*/std::nullopt);
665
- } else {
666
- // Not retrying, so commit the call.
667
- calld->RetryCommit(call_attempt);
668
- // If retry state is no longer needed, switch to fast path for
669
- // subsequent batches.
670
- call_attempt->MaybeSwitchToFastPath();
651
+ if (call_attempt->per_attempt_recv_timer_handle_ != TaskHandle::kInvalid) {
652
+ call_attempt->per_attempt_recv_timer_handle_ = TaskHandle::kInvalid;
653
+ // Cancel this attempt.
654
+ // TODO(roth): When implementing hedging, we should not cancel the
655
+ // current attempt.
656
+ call_attempt->MaybeAddBatchForCancelOp(
657
+ grpc_error_set_int(
658
+ GRPC_ERROR_CREATE("retry perAttemptRecvTimeout exceeded"),
659
+ StatusIntProperty::kRpcStatus, GRPC_STATUS_CANCELLED),
660
+ &closures);
661
+ // Check whether we should retry.
662
+ if (call_attempt->ShouldRetry(/*status=*/std::nullopt,
663
+ /*server_pushback_ms=*/std::nullopt)) {
664
+ // Mark current attempt as abandoned.
665
+ call_attempt->Abandon();
666
+ // We are retrying. Start backoff timer.
667
+ calld->StartRetryTimer(/*server_pushback=*/std::nullopt);
668
+ } else {
669
+ // Not retrying, so commit the call.
670
+ calld->RetryCommit(call_attempt);
671
+ // If retry state is no longer needed, switch to fast path for
672
+ // subsequent batches.
673
+ call_attempt->MaybeSwitchToFastPath();
674
+ }
671
675
  }
672
676
  closures.RunClosures(calld->call_combiner_);
673
677
  call_attempt->Unref(DEBUG_LOCATION, "OnPerAttemptRecvTimer");
@@ -676,16 +680,16 @@ void RetryFilter::LegacyCallData::CallAttempt::OnPerAttemptRecvTimerLocked(
676
680
 
677
681
  void RetryFilter::LegacyCallData::CallAttempt::
678
682
  MaybeCancelPerAttemptRecvTimer() {
679
- if (per_attempt_recv_timer_handle_.has_value()) {
683
+ if (per_attempt_recv_timer_handle_ != TaskHandle::kInvalid) {
680
684
  GRPC_TRACE_LOG(retry, INFO)
681
685
  << "chand=" << calld_->chand_ << " calld=" << calld_
682
686
  << " attempt=" << this << ": cancelling perAttemptRecvTimeout timer";
683
687
  if (calld_->chand_->event_engine()->Cancel(
684
- *per_attempt_recv_timer_handle_)) {
688
+ per_attempt_recv_timer_handle_)) {
685
689
  Unref(DEBUG_LOCATION, "OnPerAttemptRecvTimer");
686
690
  GRPC_CALL_STACK_UNREF(calld_->owning_call_, "OnPerAttemptRecvTimer");
687
691
  }
688
- per_attempt_recv_timer_handle_.reset();
692
+ per_attempt_recv_timer_handle_ = TaskHandle::kInvalid;
689
693
  }
690
694
  }
691
695
 
@@ -1481,7 +1485,6 @@ RetryFilter::LegacyCallData::LegacyCallData(RetryFilter* chand,
1481
1485
  .set_max_backoff(retry_policy_ == nullptr
1482
1486
  ? Duration::Zero()
1483
1487
  : retry_policy_->max_backoff())),
1484
- path_(CSliceRef(args.path)),
1485
1488
  deadline_(args.deadline),
1486
1489
  arena_(args.arena),
1487
1490
  owning_call_(args.call_stack),
@@ -1497,7 +1500,6 @@ RetryFilter::LegacyCallData::LegacyCallData(RetryFilter* chand,
1497
1500
 
1498
1501
  RetryFilter::LegacyCallData::~LegacyCallData() {
1499
1502
  FreeAllCachedSendOpData();
1500
- CSliceUnref(path_);
1501
1503
  // Make sure there are no remaining pending batches.
1502
1504
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
1503
1505
  CHECK_EQ(pending_batches_[i].batch, nullptr);
@@ -1550,13 +1552,13 @@ void RetryFilter::LegacyCallData::StartTransportStreamOpBatch(
1550
1552
  return;
1551
1553
  }
1552
1554
  // Cancel retry timer if needed.
1553
- if (retry_timer_handle_.has_value()) {
1555
+ if (retry_timer_handle_ != TaskHandle::kInvalid) {
1554
1556
  GRPC_TRACE_LOG(retry, INFO) << "chand=" << chand_ << " calld=" << this
1555
1557
  << ": cancelling retry timer";
1556
- if (chand_->event_engine()->Cancel(*retry_timer_handle_)) {
1558
+ if (chand_->event_engine()->Cancel(retry_timer_handle_)) {
1557
1559
  GRPC_CALL_STACK_UNREF(owning_call_, "OnRetryTimer");
1558
1560
  }
1559
- retry_timer_handle_.reset();
1561
+ retry_timer_handle_ = TaskHandle::kInvalid;
1560
1562
  FreeAllCachedSendOpData();
1561
1563
  }
1562
1564
  // We have no call attempt, so there's nowhere to send the cancellation
@@ -1570,7 +1572,7 @@ void RetryFilter::LegacyCallData::StartTransportStreamOpBatch(
1570
1572
  PendingBatch* pending = PendingBatchesAdd(batch);
1571
1573
  // If the timer is pending, yield the call combiner and wait for it to
1572
1574
  // run, since we don't want to start another call attempt until it does.
1573
- if (retry_timer_handle_.has_value()) {
1575
+ if (retry_timer_handle_ != TaskHandle::kInvalid) {
1574
1576
  GRPC_CALL_COMBINER_STOP(call_combiner_,
1575
1577
  "added pending batch while retry timer pending");
1576
1578
  return;
@@ -1627,9 +1629,9 @@ void RetryFilter::LegacyCallData::StartTransportStreamOpBatch(
1627
1629
  OrphanablePtr<ClientChannelFilter::FilterBasedLoadBalancedCall>
1628
1630
  RetryFilter::LegacyCallData::CreateLoadBalancedCall(
1629
1631
  absl::AnyInvocable<void()> on_commit, bool is_transparent_retry) {
1630
- grpc_call_element_args args = {owning_call_, nullptr, path_,
1631
- /*start_time=*/0, deadline_, arena_,
1632
- call_combiner_};
1632
+ grpc_call_element_args args = {owning_call_, nullptr,
1633
+ /*start_time=*/0, deadline_,
1634
+ arena_, call_combiner_};
1633
1635
  return chand_->client_channel()->CreateLoadBalancedCall(
1634
1636
  args, pollent_,
1635
1637
  // This callback holds a ref to the CallStackDestructionBarrier
@@ -1912,8 +1914,8 @@ void RetryFilter::LegacyCallData::OnRetryTimer() {
1912
1914
  void RetryFilter::LegacyCallData::OnRetryTimerLocked(
1913
1915
  void* arg, grpc_error_handle /*error*/) {
1914
1916
  auto* calld = static_cast<RetryFilter::LegacyCallData*>(arg);
1915
- if (calld->retry_timer_handle_.has_value()) {
1916
- calld->retry_timer_handle_.reset();
1917
+ if (calld->retry_timer_handle_ != TaskHandle::kInvalid) {
1918
+ calld->retry_timer_handle_ = TaskHandle::kInvalid;
1917
1919
  calld->CreateCallAttempt(/*is_transparent_retry=*/false);
1918
1920
  }
1919
1921
  GRPC_CALL_STACK_UNREF(calld->owning_call_, "OnRetryTimer");
@@ -27,6 +27,7 @@
27
27
 
28
28
  #include "absl/container/inlined_vector.h"
29
29
  #include "absl/functional/any_invocable.h"
30
+ #include "src/core/call/metadata_batch.h"
30
31
  #include "src/core/client_channel/client_channel_filter.h"
31
32
  #include "src/core/client_channel/retry_filter.h"
32
33
  #include "src/core/client_channel/retry_service_config.h"
@@ -39,7 +40,6 @@
39
40
  #include "src/core/lib/iomgr/polling_entity.h"
40
41
  #include "src/core/lib/resource_quota/arena.h"
41
42
  #include "src/core/lib/slice/slice_buffer.h"
42
- #include "src/core/lib/transport/metadata_batch.h"
43
43
  #include "src/core/lib/transport/transport.h"
44
44
  #include "src/core/util/backoff.h"
45
45
  #include "src/core/util/debug_location.h"
@@ -256,8 +256,9 @@ class RetryFilter::LegacyCallData final {
256
256
  bool lb_call_committed_ = false;
257
257
 
258
258
  grpc_closure on_per_attempt_recv_timer_;
259
- std::optional<grpc_event_engine::experimental::EventEngine::TaskHandle>
260
- per_attempt_recv_timer_handle_;
259
+ grpc_event_engine::experimental::EventEngine::TaskHandle
260
+ per_attempt_recv_timer_handle_ =
261
+ grpc_event_engine::experimental::EventEngine::TaskHandle::kInvalid;
261
262
 
262
263
  // BatchData.batch.payload points to this.
263
264
  grpc_transport_stream_op_batch_payload batch_payload_;
@@ -373,7 +374,6 @@ class RetryFilter::LegacyCallData final {
373
374
  const internal::RetryMethodConfig* retry_policy_ = nullptr;
374
375
  BackOff retry_backoff_;
375
376
 
376
- grpc_slice path_; // Request path.
377
377
  Timestamp deadline_;
378
378
  Arena* arena_;
379
379
  grpc_call_stack* owning_call_;
@@ -410,8 +410,8 @@ class RetryFilter::LegacyCallData final {
410
410
  bool retry_codepath_started_ : 1;
411
411
  bool sent_transparent_retry_not_seen_by_server_ : 1;
412
412
  int num_attempts_completed_ = 0;
413
- std::optional<grpc_event_engine::experimental::EventEngine::TaskHandle>
414
- retry_timer_handle_;
413
+ grpc_event_engine::experimental::EventEngine::TaskHandle retry_timer_handle_ =
414
+ grpc_event_engine::experimental::EventEngine::TaskHandle::kInvalid;
415
415
  grpc_closure retry_closure_;
416
416
 
417
417
  // Cached data for retrying send ops.
@@ -15,12 +15,12 @@
15
15
  #ifndef GRPC_SRC_CORE_CLIENT_CHANNEL_RETRY_INTERCEPTOR_H
16
16
  #define GRPC_SRC_CORE_CLIENT_CHANNEL_RETRY_INTERCEPTOR_H
17
17
 
18
+ #include "src/core/call/interception_chain.h"
18
19
  #include "src/core/call/request_buffer.h"
19
20
  #include "src/core/client_channel/client_channel_args.h"
20
21
  #include "src/core/client_channel/retry_service_config.h"
21
22
  #include "src/core/client_channel/retry_throttle.h"
22
23
  #include "src/core/filter/filter_args.h"
23
- #include "src/core/lib/transport/interception_chain.h"
24
24
  #include "src/core/util/backoff.h"
25
25
 
26
26
  namespace grpc_core {
@@ -30,9 +30,9 @@
30
30
  #include "absl/log/log.h"
31
31
  #include "absl/strings/numbers.h"
32
32
  #include "absl/strings/str_cat.h"
33
+ #include "src/core/call/status_util.h"
33
34
  #include "src/core/config/core_configuration.h"
34
35
  #include "src/core/lib/channel/channel_args.h"
35
- #include "src/core/lib/channel/status_util.h"
36
36
  #include "src/core/util/json/json_channel_args.h"
37
37
 
38
38
  // As per the retry design, we do not allow more than 5 retry attempts.
@@ -25,9 +25,9 @@
25
25
  #include <optional>
26
26
 
27
27
  #include "absl/strings/string_view.h"
28
+ #include "src/core/call/status_util.h"
28
29
  #include "src/core/config/core_configuration.h"
29
30
  #include "src/core/lib/channel/channel_args.h"
30
- #include "src/core/lib/channel/status_util.h"
31
31
  #include "src/core/service_config/service_config_parser.h"
32
32
  #include "src/core/util/json/json.h"
33
33
  #include "src/core/util/json/json_args.h"
@@ -49,32 +49,12 @@ T ClampedAdd(std::atomic<T>& value, T delta, T min, T max) {
49
49
  // ServerRetryThrottleData
50
50
  //
51
51
 
52
- ServerRetryThrottleData::ServerRetryThrottleData(
53
- uintptr_t max_milli_tokens, uintptr_t milli_token_ratio,
54
- ServerRetryThrottleData* old_throttle_data)
52
+ ServerRetryThrottleData::ServerRetryThrottleData(uintptr_t max_milli_tokens,
53
+ uintptr_t milli_token_ratio,
54
+ uintptr_t milli_tokens)
55
55
  : max_milli_tokens_(max_milli_tokens),
56
- milli_token_ratio_(milli_token_ratio) {
57
- uintptr_t initial_milli_tokens = max_milli_tokens;
58
- // If there was a pre-existing entry for this server name, initialize
59
- // the token count by scaling proportionately to the old data. This
60
- // ensures that if we're already throttling retries on the old scale,
61
- // we will start out doing the same thing on the new one.
62
- if (old_throttle_data != nullptr) {
63
- double token_fraction =
64
- static_cast<double>(
65
- old_throttle_data->milli_tokens_.load(std::memory_order_relaxed)) /
66
- static_cast<double>(old_throttle_data->max_milli_tokens_);
67
- initial_milli_tokens =
68
- static_cast<uintptr_t>(token_fraction * max_milli_tokens);
69
- }
70
- milli_tokens_.store(initial_milli_tokens, std::memory_order_relaxed);
71
- // If there was a pre-existing entry, mark it as stale and give it a
72
- // pointer to the new entry, which is its replacement.
73
- if (old_throttle_data != nullptr) {
74
- Ref().release(); // Ref held by pre-existing entry.
75
- old_throttle_data->replacement_.store(this, std::memory_order_release);
76
- }
77
- }
56
+ milli_token_ratio_(milli_token_ratio),
57
+ milli_tokens_(milli_tokens) {}
78
58
 
79
59
  ServerRetryThrottleData::~ServerRetryThrottleData() {
80
60
  ServerRetryThrottleData* replacement =
@@ -84,6 +64,11 @@ ServerRetryThrottleData::~ServerRetryThrottleData() {
84
64
  }
85
65
  }
86
66
 
67
+ void ServerRetryThrottleData::SetReplacement(
68
+ RefCountedPtr<ServerRetryThrottleData> replacement) {
69
+ replacement_.store(replacement.release(), std::memory_order_release);
70
+ }
71
+
87
72
  void ServerRetryThrottleData::GetReplacementThrottleDataIfNeeded(
88
73
  ServerRetryThrottleData** throttle_data) {
89
74
  while (true) {
@@ -133,20 +118,31 @@ RefCountedPtr<ServerRetryThrottleData> ServerRetryThrottleMap::GetDataForServer(
133
118
  const std::string& server_name, uintptr_t max_milli_tokens,
134
119
  uintptr_t milli_token_ratio) {
135
120
  MutexLock lock(&mu_);
136
- auto it = map_.find(server_name);
137
- ServerRetryThrottleData* throttle_data =
138
- it == map_.end() ? nullptr : it->second.get();
121
+ auto& throttle_data = map_[server_name];
139
122
  if (throttle_data == nullptr ||
140
123
  throttle_data->max_milli_tokens() != max_milli_tokens ||
141
124
  throttle_data->milli_token_ratio() != milli_token_ratio) {
142
125
  // Entry not found, or found with old parameters. Create a new one.
143
- it = map_.emplace(server_name,
144
- MakeRefCounted<ServerRetryThrottleData>(
145
- max_milli_tokens, milli_token_ratio, throttle_data))
146
- .first;
147
- throttle_data = it->second.get();
126
+ auto old_throttle_data = std::move(throttle_data);
127
+ uintptr_t initial_milli_tokens = max_milli_tokens;
128
+ // If there was a pre-existing entry for this server name, initialize
129
+ // the token count by scaling proportionately to the old data. This
130
+ // ensures that if we're already throttling retries on the old scale,
131
+ // we will start out doing the same thing on the new one.
132
+ if (old_throttle_data != nullptr) {
133
+ double token_fraction =
134
+ static_cast<double>(old_throttle_data->milli_tokens()) /
135
+ static_cast<double>(old_throttle_data->max_milli_tokens());
136
+ initial_milli_tokens =
137
+ static_cast<uintptr_t>(token_fraction * max_milli_tokens);
138
+ }
139
+ throttle_data = MakeRefCounted<ServerRetryThrottleData>(
140
+ max_milli_tokens, milli_token_ratio, initial_milli_tokens);
141
+ if (old_throttle_data != nullptr) {
142
+ old_throttle_data->SetReplacement(throttle_data);
143
+ }
148
144
  }
149
- return throttle_data->Ref();
145
+ return throttle_data;
150
146
  }
151
147
 
152
148
  } // namespace internal
@@ -34,13 +34,14 @@
34
34
  namespace grpc_core {
35
35
  namespace internal {
36
36
 
37
+ class ServerRetryThrottleMap;
38
+
37
39
  /// Tracks retry throttling data for an individual server name.
38
40
  class ServerRetryThrottleData final
39
41
  : public RefCounted<ServerRetryThrottleData> {
40
42
  public:
41
43
  ServerRetryThrottleData(uintptr_t max_milli_tokens,
42
- uintptr_t milli_token_ratio,
43
- ServerRetryThrottleData* old_throttle_data);
44
+ uintptr_t milli_token_ratio, uintptr_t milli_tokens);
44
45
  ~ServerRetryThrottleData() override;
45
46
 
46
47
  /// Records a failure. Returns true if it's okay to send a retry.
@@ -51,8 +52,15 @@ class ServerRetryThrottleData final
51
52
 
52
53
  uintptr_t max_milli_tokens() const { return max_milli_tokens_; }
53
54
  uintptr_t milli_token_ratio() const { return milli_token_ratio_; }
55
+ intptr_t milli_tokens() const {
56
+ return milli_tokens_.load(std::memory_order_relaxed);
57
+ }
54
58
 
55
59
  private:
60
+ friend ServerRetryThrottleMap;
61
+
62
+ void SetReplacement(RefCountedPtr<ServerRetryThrottleData> replacement);
63
+
56
64
  void GetReplacementThrottleDataIfNeeded(
57
65
  ServerRetryThrottleData** throttle_data);
58
66