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
@@ -65,13 +65,13 @@
65
65
  #include "src/core/channelz/channelz.h"
66
66
  #include "src/core/client_channel/client_channel_filter.h"
67
67
  #include "src/core/config/core_configuration.h"
68
+ #include "src/core/credentials/transport/fake/fake_credentials.h"
68
69
  #include "src/core/lib/channel/channel_args.h"
69
70
  #include "src/core/lib/debug/trace.h"
70
71
  #include "src/core/lib/iomgr/closure.h"
71
72
  #include "src/core/lib/iomgr/error.h"
72
73
  #include "src/core/lib/iomgr/exec_ctx.h"
73
74
  #include "src/core/lib/iomgr/pollset_set.h"
74
- #include "src/core/lib/security/credentials/fake/fake_credentials.h"
75
75
  #include "src/core/lib/slice/slice.h"
76
76
  #include "src/core/lib/slice/slice_internal.h"
77
77
  #include "src/core/lib/surface/call.h"
@@ -401,7 +401,8 @@ class RlsLb final : public LoadBalancingPolicy {
401
401
  size_t Size() const ABSL_EXCLUSIVE_LOCKS_REQUIRED(&RlsLb::mu_);
402
402
 
403
403
  // Pick subchannel for request based on the entry's state.
404
- PickResult Pick(PickArgs args) ABSL_EXCLUSIVE_LOCKS_REQUIRED(&RlsLb::mu_);
404
+ PickResult Pick(PickArgs args, absl::string_view lookup_service)
405
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&RlsLb::mu_);
405
406
 
406
407
  // If the cache entry is in backoff state, resets the backoff and, if
407
408
  // applicable, its backoff timer. The method does not update the LB
@@ -684,17 +685,16 @@ class RlsLb final : public LoadBalancingPolicy {
684
685
 
685
686
  void ShutdownLocked() override;
686
687
 
687
- // Returns a new picker to the channel to trigger reprocessing of
688
- // pending picks. Schedules the actual picker update on the ExecCtx
689
- // to be run later, so it's safe to invoke this while holding the lock.
688
+ // Schedules a call to UpdatePickerLocked() on the WorkSerializer.
689
+ // The call will be run asynchronously, so it's safe to invoke this
690
+ // while holding the lock.
690
691
  void UpdatePickerAsync();
691
- // Hops into work serializer and calls UpdatePickerLocked().
692
- static void UpdatePickerCallback(void* arg, grpc_error_handle error);
693
692
  // Updates the picker in the work serializer.
694
693
  void UpdatePickerLocked() ABSL_LOCKS_EXCLUDED(&mu_);
695
694
 
696
695
  template <typename HandleType>
697
696
  void MaybeExportPickCount(HandleType handle, absl::string_view target,
697
+ absl::string_view lookup_service,
698
698
  const PickResult& pick_result);
699
699
 
700
700
  const std::string instance_uuid_;
@@ -1002,7 +1002,7 @@ LoadBalancingPolicy::PickResult RlsLb::Picker::Pick(PickArgs args) {
1002
1002
  GRPC_TRACE_LOG(rls_lb, INFO)
1003
1003
  << "[rlslb " << lb_policy_.get() << "] picker=" << this
1004
1004
  << ": using cache entry " << entry;
1005
- return entry->Pick(args);
1005
+ return entry->Pick(args, config_->lookup_service());
1006
1006
  }
1007
1007
  // If the entry is in backoff, then use the default target if set,
1008
1008
  // or else fail the pick.
@@ -1028,7 +1028,8 @@ LoadBalancingPolicy::PickResult RlsLb::Picker::PickFromDefaultTargetOrFail(
1028
1028
  << reason << "; using default target";
1029
1029
  auto pick_result = default_child_policy_->Pick(args);
1030
1030
  lb_policy_->MaybeExportPickCount(kMetricDefaultTargetPicks,
1031
- config_->default_target(), pick_result);
1031
+ config_->default_target(),
1032
+ config_->lookup_service(), pick_result);
1032
1033
  return pick_result;
1033
1034
  }
1034
1035
  GRPC_TRACE_LOG(rls_lb, INFO)
@@ -1139,7 +1140,8 @@ size_t RlsLb::Cache::Entry::Size() const {
1139
1140
  return lb_policy_->cache_.EntrySizeForKey(*lru_iterator_);
1140
1141
  }
1141
1142
 
1142
- LoadBalancingPolicy::PickResult RlsLb::Cache::Entry::Pick(PickArgs args) {
1143
+ LoadBalancingPolicy::PickResult RlsLb::Cache::Entry::Pick(
1144
+ PickArgs args, absl::string_view lookup_service) {
1143
1145
  size_t i = 0;
1144
1146
  ChildPolicyWrapper* child_policy_wrapper = nullptr;
1145
1147
  // Skip targets before the last one that are in state TRANSIENT_FAILURE.
@@ -1169,7 +1171,8 @@ LoadBalancingPolicy::PickResult RlsLb::Cache::Entry::Pick(PickArgs args) {
1169
1171
  << "; delegating";
1170
1172
  auto pick_result = child_policy_wrapper->Pick(args);
1171
1173
  lb_policy_->MaybeExportPickCount(kMetricTargetPicks,
1172
- child_policy_wrapper->target(), pick_result);
1174
+ child_policy_wrapper->target(),
1175
+ lookup_service, pick_result);
1173
1176
  // Add header data.
1174
1177
  if (!header_data_.empty()) {
1175
1178
  auto* complete_pick =
@@ -2057,23 +2060,10 @@ void RlsLb::ShutdownLocked() {
2057
2060
  }
2058
2061
 
2059
2062
  void RlsLb::UpdatePickerAsync() {
2060
- // Run via the ExecCtx, since the caller may be holding the lock, and
2061
- // we don't want to be doing that when we hop into the WorkSerializer,
2062
- // in case the WorkSerializer callback happens to run inline.
2063
- ExecCtx::Run(
2064
- DEBUG_LOCATION,
2065
- GRPC_CLOSURE_CREATE(UpdatePickerCallback,
2066
- Ref(DEBUG_LOCATION, "UpdatePickerCallback").release(),
2067
- grpc_schedule_on_exec_ctx),
2068
- absl::OkStatus());
2069
- }
2070
-
2071
- void RlsLb::UpdatePickerCallback(void* arg, grpc_error_handle /*error*/) {
2072
- auto* rls_lb = static_cast<RlsLb*>(arg);
2073
- rls_lb->work_serializer()->Run([rls_lb]() {
2074
- RefCountedPtr<RlsLb> lb_policy(rls_lb);
2075
- lb_policy->UpdatePickerLocked();
2076
- lb_policy.reset(DEBUG_LOCATION, "UpdatePickerCallback");
2063
+ work_serializer()->Run([self = RefAsSubclass<RlsLb>(
2064
+ DEBUG_LOCATION, "UpdatePickerAsync")]() mutable {
2065
+ self->UpdatePickerLocked();
2066
+ self.reset(DEBUG_LOCATION, "UpdatePickerAsync");
2077
2067
  });
2078
2068
  }
2079
2069
 
@@ -2129,6 +2119,7 @@ void RlsLb::UpdatePickerLocked() {
2129
2119
 
2130
2120
  template <typename HandleType>
2131
2121
  void RlsLb::MaybeExportPickCount(HandleType handle, absl::string_view target,
2122
+ absl::string_view lookup_service,
2132
2123
  const PickResult& pick_result) {
2133
2124
  absl::string_view pick_result_string = Match(
2134
2125
  pick_result.result,
@@ -2140,11 +2131,10 @@ void RlsLb::MaybeExportPickCount(HandleType handle, absl::string_view target,
2140
2131
  [](const LoadBalancingPolicy::PickResult::Drop&) { return "drop"; });
2141
2132
  if (pick_result_string.empty()) return; // Don't report queued picks.
2142
2133
  auto& stats_plugins = channel_control_helper()->GetStatsPluginGroup();
2143
- stats_plugins.AddCounter(
2144
- handle, 1,
2145
- {channel_control_helper()->GetTarget(), config_->lookup_service(), target,
2146
- pick_result_string},
2147
- {});
2134
+ stats_plugins.AddCounter(handle, 1,
2135
+ {channel_control_helper()->GetTarget(),
2136
+ lookup_service, target, pick_result_string},
2137
+ {});
2148
2138
  }
2149
2139
 
2150
2140
  //
@@ -2373,14 +2363,18 @@ void RlsLbConfig::RouteLookupConfig::JsonPostLoad(const Json& json,
2373
2363
  errors->AddError("must be valid gRPC target URI");
2374
2364
  }
2375
2365
  }
2376
- // Clamp maxAge to the max allowed value.
2377
- if (max_age > kMaxMaxAge) max_age = kMaxMaxAge;
2378
2366
  // If staleAge is set, then maxAge must also be set.
2379
- if (json.object().find("staleAge") != json.object().end() &&
2380
- json.object().find("maxAge") == json.object().end()) {
2367
+ const bool stale_age_set =
2368
+ json.object().find("staleAge") != json.object().end();
2369
+ const bool max_age_set = json.object().find("maxAge") != json.object().end();
2370
+ if (stale_age_set && !max_age_set) {
2381
2371
  ValidationErrors::ScopedField field(errors, ".maxAge");
2382
2372
  errors->AddError("must be set if staleAge is set");
2383
2373
  }
2374
+ // Clamp staleAge to the max allowed value.
2375
+ if (stale_age > kMaxMaxAge) stale_age = kMaxMaxAge;
2376
+ // If staleAge is not set, clamp maxAge to the max allowed value.
2377
+ if (!stale_age_set && max_age > kMaxMaxAge) max_age = kMaxMaxAge;
2384
2378
  // Ignore staleAge if greater than or equal to maxAge.
2385
2379
  if (stale_age >= max_age) stale_age = max_age;
2386
2380
  // Validate cacheSizeBytes.
@@ -350,7 +350,7 @@ absl::Status WeightedTargetLb::UpdateLocked(UpdateArgs args) {
350
350
  update_in_progress_ = false;
351
351
  if (config_->target_map().empty()) {
352
352
  absl::Status status = absl::UnavailableError(absl::StrCat(
353
- "no children in weighted_target policy: ", args.resolution_note));
353
+ "no children in weighted_target policy (", args.resolution_note, ")"));
354
354
  channel_control_helper()->UpdateState(
355
355
  GRPC_CHANNEL_TRANSIENT_FAILURE, status,
356
356
  MakeRefCounted<TransientFailurePicker>(status));
@@ -542,16 +542,9 @@ Json CdsLb::CreateChildPolicyConfigForLeafCluster(
542
542
  cluster_resource.type);
543
543
  // Determine what xDS LB policy to use.
544
544
  Json xds_lb_policy;
545
- if (is_logical_dns) {
546
- xds_lb_policy = Json::FromArray({
547
- Json::FromObject({
548
- {"pick_first", Json::FromObject({})},
549
- }),
550
- });
551
- }
552
- // TODO(roth): Remove this "else if" block after the 1.63 release.
553
- else if (XdsAggregateClusterBackwardCompatibilityEnabled() &&
554
- aggregate_cluster_resource != nullptr) {
545
+ // TODO(roth): Remove this "if" condition after the 1.63 release.
546
+ if (XdsAggregateClusterBackwardCompatibilityEnabled() &&
547
+ aggregate_cluster_resource != nullptr) {
555
548
  xds_lb_policy =
556
549
  Json::FromArray(aggregate_cluster_resource->lb_policy_config);
557
550
  } else {
@@ -37,11 +37,11 @@
37
37
  #include "absl/strings/string_view.h"
38
38
  #include "src/core/client_channel/client_channel_internal.h"
39
39
  #include "src/core/config/core_configuration.h"
40
+ #include "src/core/credentials/transport/xds/xds_credentials.h"
40
41
  #include "src/core/lib/channel/channel_args.h"
41
42
  #include "src/core/lib/debug/trace.h"
42
43
  #include "src/core/lib/iomgr/pollset_set.h"
43
44
  #include "src/core/lib/iomgr/resolved_address.h"
44
- #include "src/core/lib/security/credentials/xds/xds_credentials.h"
45
45
  #include "src/core/lib/transport/connectivity_state.h"
46
46
  #include "src/core/load_balancing/backend_metric_data.h"
47
47
  #include "src/core/load_balancing/child_policy_handler.h"
@@ -62,6 +62,7 @@ extern void RegisterOutlierDetectionLbPolicy(
62
62
  CoreConfiguration::Builder* builder);
63
63
  extern void RegisterWeightedTargetLbPolicy(CoreConfiguration::Builder* builder);
64
64
  extern void RegisterPickFirstLbPolicy(CoreConfiguration::Builder* builder);
65
+ extern void RegisterRingHashLbPolicy(CoreConfiguration::Builder* builder);
65
66
  extern void RegisterRoundRobinLbPolicy(CoreConfiguration::Builder* builder);
66
67
  extern void RegisterWeightedRoundRobinLbPolicy(
67
68
  CoreConfiguration::Builder* builder);
@@ -102,6 +103,7 @@ void BuildCoreConfiguration(CoreConfiguration::Builder* builder) {
102
103
  RegisterWeightedTargetLbPolicy(builder);
103
104
  RegisterPickFirstLbPolicy(builder);
104
105
  RegisterRoundRobinLbPolicy(builder);
106
+ RegisterRingHashLbPolicy(builder);
105
107
  RegisterWeightedRoundRobinLbPolicy(builder);
106
108
  BuildClientChannelConfiguration(builder);
107
109
  SecurityRegisterHandshakerFactories(builder);
@@ -37,7 +37,6 @@ extern void RegisterCdsLbPolicy(CoreConfiguration::Builder* builder);
37
37
  extern void RegisterXdsOverrideHostLbPolicy(
38
38
  CoreConfiguration::Builder* builder);
39
39
  extern void RegisterXdsWrrLocalityLbPolicy(CoreConfiguration::Builder* builder);
40
- extern void RegisterRingHashLbPolicy(CoreConfiguration::Builder* builder);
41
40
  extern void RegisterFileWatcherCertificateProvider(
42
41
  CoreConfiguration::Builder* builder);
43
42
  extern void RegisterXdsHttpProxyMapper(CoreConfiguration::Builder* builder);
@@ -60,7 +59,6 @@ void RegisterExtraFilters(CoreConfiguration::Builder* builder) {
60
59
  RegisterCdsLbPolicy(builder);
61
60
  RegisterXdsOverrideHostLbPolicy(builder);
62
61
  RegisterXdsWrrLocalityLbPolicy(builder);
63
- RegisterRingHashLbPolicy(builder);
64
62
  RegisterFileWatcherCertificateProvider(builder);
65
63
  RegisterXdsHttpProxyMapper(builder);
66
64
  #endif
@@ -330,11 +330,9 @@ AresClientChannelDNSResolver::AresRequestWrapper::OnResolvedLocked(
330
330
  GRPC_TRACE_VLOG(cares_resolver, 2)
331
331
  << "(c-ares resolver) resolver:" << this
332
332
  << " dns resolution failed: " << StatusToString(error);
333
- std::string error_message;
334
- grpc_error_get_str(error, StatusStrProperty::kDescription, &error_message);
335
333
  absl::Status status = absl::UnavailableError(
336
334
  absl::StrCat("DNS resolution failed for ", resolver_->name_to_resolve(),
337
- ": ", error_message));
335
+ ": ", error.message()));
338
336
  result.addresses = status;
339
337
  result.service_config = status;
340
338
  }
@@ -34,6 +34,8 @@
34
34
  #include "src/core/resolver/endpoint_addresses.h"
35
35
  #include "src/core/util/sync.h"
36
36
 
37
+ #if GRPC_ARES == 1
38
+
37
39
  #define GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS 120000
38
40
 
39
41
  typedef struct grpc_ares_ev_driver grpc_ares_ev_driver;
@@ -122,4 +124,6 @@ extern void (*grpc_ares_test_only_inject_config)(ares_channel* channel);
122
124
  // Exposed in this header for C-core tests only
123
125
  extern bool g_grpc_ares_test_only_force_tcp;
124
126
 
127
+ #endif
128
+
125
129
  #endif // GRPC_SRC_CORE_RESOLVER_DNS_C_ARES_GRPC_ARES_WRAPPER_H
@@ -32,10 +32,10 @@
32
32
  #include "absl/strings/string_view.h"
33
33
  #include "absl/strings/strip.h"
34
34
  #include "src/core/config/core_configuration.h"
35
+ #include "src/core/credentials/transport/alts/check_gcp_environment.h"
35
36
  #include "src/core/lib/channel/channel_args.h"
36
37
  #include "src/core/lib/iomgr/polling_entity.h"
37
38
  #include "src/core/lib/resource_quota/resource_quota.h"
38
- #include "src/core/lib/security/credentials/alts/check_gcp_environment.h"
39
39
  #include "src/core/resolver/resolver.h"
40
40
  #include "src/core/resolver/resolver_factory.h"
41
41
  #include "src/core/resolver/resolver_registry.h"
@@ -605,11 +605,16 @@ void XdsDependencyManager::PopulateDnsUpdate(const std::string& dns_name,
605
605
  locality.name = MakeRefCounted<XdsLocalityName>("", "", "");
606
606
  locality.lb_weight = 1;
607
607
  if (result.addresses.ok()) {
608
+ std::vector<grpc_resolved_address> addresses;
609
+ ChannelArgs address_args = result.addresses->front().args();
608
610
  for (const auto& address : *result.addresses) {
609
- locality.endpoints.emplace_back(
610
- address.addresses(),
611
- address.args().Set(GRPC_ARG_ADDRESS_NAME, dns_name));
611
+ CHECK_EQ(address.addresses().size(), 1UL);
612
+ addresses.emplace_back(address.addresses().front());
613
+ CHECK_EQ(address_args, address.args());
612
614
  }
615
+ locality.endpoints.emplace_back(
616
+ std::move(addresses),
617
+ address_args.Set(GRPC_ARG_ADDRESS_NAME, dns_name));
613
618
  dns_state->update.resolution_note = std::move(result.resolution_note);
614
619
  } else if (result.resolution_note.empty()) {
615
620
  dns_state->update.resolution_note =
@@ -46,6 +46,8 @@
46
46
  #include "absl/strings/string_view.h"
47
47
  #include "absl/strings/strip.h"
48
48
  #include "re2/re2.h"
49
+ #include "src/core/call/metadata_batch.h"
50
+ #include "src/core/call/status_util.h"
49
51
  #include "src/core/client_channel/client_channel_internal.h"
50
52
  #include "src/core/client_channel/config_selector.h"
51
53
  #include "src/core/config/core_configuration.h"
@@ -53,7 +55,6 @@
53
55
  #include "src/core/lib/channel/channel_fwd.h"
54
56
  #include "src/core/lib/channel/channel_stack.h"
55
57
  #include "src/core/lib/channel/promise_based_filter.h"
56
- #include "src/core/lib/channel/status_util.h"
57
58
  #include "src/core/lib/debug/trace.h"
58
59
  #include "src/core/lib/experiments/experiments.h"
59
60
  #include "src/core/lib/iomgr/iomgr_fwd.h"
@@ -62,7 +63,6 @@
62
63
  #include "src/core/lib/promise/context.h"
63
64
  #include "src/core/lib/resource_quota/arena.h"
64
65
  #include "src/core/lib/slice/slice.h"
65
- #include "src/core/lib/transport/metadata_batch.h"
66
66
  #include "src/core/lib/transport/transport.h"
67
67
  #include "src/core/load_balancing/ring_hash/ring_hash.h"
68
68
  #include "src/core/resolver/endpoint_addresses.h"
@@ -44,9 +44,12 @@
44
44
  #include "absl/log/check.h"
45
45
  #include "absl/log/log.h"
46
46
  #include "absl/status/status.h"
47
+ #include "src/core/call/interception_chain.h"
48
+ #include "src/core/call/server_call.h"
47
49
  #include "src/core/channelz/channel_trace.h"
48
50
  #include "src/core/channelz/channelz.h"
49
51
  #include "src/core/config/core_configuration.h"
52
+ #include "src/core/credentials/transport/transport_credentials.h"
50
53
  #include "src/core/lib/address_utils/sockaddr_utils.h"
51
54
  #include "src/core/lib/channel/channel_args.h"
52
55
  #include "src/core/lib/channel/channel_args_preconditioning.h"
@@ -63,7 +66,6 @@
63
66
  #include "src/core/lib/promise/seq.h"
64
67
  #include "src/core/lib/promise/try_join.h"
65
68
  #include "src/core/lib/promise/try_seq.h"
66
- #include "src/core/lib/security/credentials/credentials.h"
67
69
  #include "src/core/lib/slice/slice_buffer.h"
68
70
  #include "src/core/lib/slice/slice_internal.h"
69
71
  #include "src/core/lib/surface/call.h"
@@ -72,10 +74,8 @@
72
74
  #include "src/core/lib/surface/channel_stack_type.h"
73
75
  #include "src/core/lib/surface/completion_queue.h"
74
76
  #include "src/core/lib/surface/legacy_channel.h"
75
- #include "src/core/lib/surface/server_call.h"
76
77
  #include "src/core/lib/transport/connectivity_state.h"
77
78
  #include "src/core/lib/transport/error_utils.h"
78
- #include "src/core/lib/transport/interception_chain.h"
79
79
  #include "src/core/telemetry/stats.h"
80
80
  #include "src/core/util/crash.h"
81
81
  #include "src/core/util/debug_location.h"
@@ -86,6 +86,8 @@
86
86
 
87
87
  namespace grpc_core {
88
88
 
89
+ using http2::Http2ErrorCode;
90
+
89
91
  //
90
92
  // Server::ListenerState::ConfigFetcherWatcher
91
93
  //
@@ -991,7 +993,8 @@ class ChannelBroadcaster {
991
993
  op->goaway_error =
992
994
  send_goaway
993
995
  ? grpc_error_set_int(GRPC_ERROR_CREATE("Server shutdown"),
994
- StatusIntProperty::kRpcStatus, GRPC_STATUS_OK)
996
+ StatusIntProperty::kHttp2Error,
997
+ static_cast<int>(Http2ErrorCode::kNoError))
995
998
  : absl::OkStatus();
996
999
  sc->slice = grpc_slice_from_copied_string("Server shutdown");
997
1000
  op->disconnect_with_error = send_disconnect;
@@ -43,6 +43,7 @@
43
43
  #include "absl/random/random.h"
44
44
  #include "absl/status/statusor.h"
45
45
  #include "absl/strings/string_view.h"
46
+ #include "src/core/call/metadata_batch.h"
46
47
  #include "src/core/channelz/channelz.h"
47
48
  #include "src/core/lib/channel/channel_args.h"
48
49
  #include "src/core/lib/channel/channel_fwd.h"
@@ -59,7 +60,6 @@
59
60
  #include "src/core/lib/slice/slice.h"
60
61
  #include "src/core/lib/surface/channel.h"
61
62
  #include "src/core/lib/surface/completion_queue.h"
62
- #include "src/core/lib/transport/metadata_batch.h"
63
63
  #include "src/core/lib/transport/transport.h"
64
64
  #include "src/core/server/server_interface.h"
65
65
  #include "src/core/telemetry/call_tracer.h"
@@ -24,8 +24,8 @@
24
24
 
25
25
  #include "absl/status/status.h"
26
26
  #include "absl/status/statusor.h"
27
+ #include "src/core/call/call_finalization.h"
27
28
  #include "src/core/config/core_configuration.h"
28
- #include "src/core/lib/channel/call_finalization.h"
29
29
  #include "src/core/lib/channel/channel_args.h"
30
30
  #include "src/core/lib/channel/channel_fwd.h"
31
31
  #include "src/core/lib/channel/channel_stack.h"
@@ -23,7 +23,7 @@
23
23
 
24
24
  #include "absl/status/statusor.h"
25
25
  #include "absl/strings/string_view.h"
26
- #include "src/core/lib/transport/metadata_batch.h"
26
+ #include "src/core/call/metadata_batch.h"
27
27
  #include "src/core/service_config/service_config.h"
28
28
  #include "src/core/service_config/service_config_parser.h"
29
29
  #include "src/core/util/dual_ref_counted.h"
@@ -25,6 +25,7 @@
25
25
  #include "absl/log/check.h"
26
26
  #include "absl/status/status.h"
27
27
  #include "absl/status/statusor.h"
28
+ #include "src/core/call/metadata_batch.h"
28
29
  #include "src/core/lib/channel/channel_args.h"
29
30
  #include "src/core/lib/channel/promise_based_filter.h"
30
31
  #include "src/core/lib/event_engine/event_engine_context.h"
@@ -32,7 +33,6 @@
32
33
  #include "src/core/lib/promise/context.h"
33
34
  #include "src/core/lib/promise/promise.h"
34
35
  #include "src/core/lib/resource_quota/arena.h"
35
- #include "src/core/lib/transport/metadata_batch.h"
36
36
  #include "src/core/lib/transport/transport.h"
37
37
  #include "src/core/server/server_config_selector.h"
38
38
  #include "src/core/service_config/service_config.h"
@@ -45,7 +45,12 @@
45
45
  #include "absl/strings/str_join.h"
46
46
  #include "absl/strings/str_replace.h"
47
47
  #include "absl/strings/string_view.h"
48
+ #include "src/core/call/metadata_batch.h"
48
49
  #include "src/core/config/core_configuration.h"
50
+ #include "src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h"
51
+ #include "src/core/credentials/transport/tls/grpc_tls_certificate_provider.h"
52
+ #include "src/core/credentials/transport/transport_credentials.h"
53
+ #include "src/core/credentials/transport/xds/xds_credentials.h"
49
54
  #include "src/core/lib/address_utils/parse_address.h"
50
55
  #include "src/core/lib/address_utils/sockaddr_utils.h"
51
56
  #include "src/core/lib/channel/channel_args.h"
@@ -58,11 +63,6 @@
58
63
  #include "src/core/lib/iomgr/resolved_address.h"
59
64
  #include "src/core/lib/iomgr/sockaddr.h"
60
65
  #include "src/core/lib/iomgr/socket_utils.h"
61
- #include "src/core/lib/security/credentials/credentials.h"
62
- #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
63
- #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
64
- #include "src/core/lib/security/credentials/xds/xds_credentials.h"
65
- #include "src/core/lib/transport/metadata_batch.h"
66
66
  #include "src/core/server/server.h"
67
67
  #include "src/core/server/server_config_selector.h"
68
68
  #include "src/core/server/server_config_selector_filter.h"
@@ -29,6 +29,7 @@
29
29
  #include "absl/log/log.h"
30
30
  #include "absl/status/status.h"
31
31
  #include "absl/status/statusor.h"
32
+ #include "src/core/call/metadata_batch.h"
32
33
  #include "src/core/config/core_configuration.h"
33
34
  #include "src/core/ext/filters/message_size/message_size_filter.h"
34
35
  #include "src/core/lib/channel/channel_args.h"
@@ -39,7 +40,6 @@
39
40
  #include "src/core/lib/promise/context.h"
40
41
  #include "src/core/lib/resource_quota/arena.h"
41
42
  #include "src/core/lib/surface/channel_stack_type.h"
42
- #include "src/core/lib/transport/metadata_batch.h"
43
43
  #include "src/core/lib/transport/transport.h"
44
44
  #include "src/core/service_config/service_config.h"
45
45
  #include "src/core/service_config/service_config_call_data.h"
@@ -169,7 +169,7 @@ class DelegatingClientCallTracer : public ClientCallTracer {
169
169
  tracer->RecordAnnotation(annotation);
170
170
  }
171
171
  }
172
- std::shared_ptr<TcpTracerInterface> StartNewTcpTrace() override {
172
+ std::shared_ptr<TcpCallTracer> StartNewTcpTrace() override {
173
173
  return nullptr;
174
174
  }
175
175
  void SetOptionalLabel(OptionalLabelKey key,
@@ -313,9 +313,7 @@ class DelegatingServerCallTracer : public ServerCallTracer {
313
313
  tracer->RecordAnnotation(annotation);
314
314
  }
315
315
  }
316
- std::shared_ptr<TcpTracerInterface> StartNewTcpTrace() override {
317
- return nullptr;
318
- }
316
+ std::shared_ptr<TcpCallTracer> StartNewTcpTrace() override { return nullptr; }
319
317
  std::string TraceId() override { return tracers_[0]->TraceId(); }
320
318
  std::string SpanId() override { return tracers_[0]->SpanId(); }
321
319
  bool IsSampled() override { return tracers_[0]->IsSampled(); }
@@ -28,14 +28,14 @@
28
28
 
29
29
  #include "absl/status/status.h"
30
30
  #include "absl/strings/string_view.h"
31
+ #include "src/core/call/message.h"
32
+ #include "src/core/call/metadata_batch.h"
31
33
  #include "src/core/lib/channel/channel_args.h"
32
34
  #include "src/core/lib/iomgr/error.h"
33
35
  #include "src/core/lib/promise/context.h"
34
36
  #include "src/core/lib/resource_quota/arena.h"
35
37
  #include "src/core/lib/slice/slice_buffer.h"
36
38
  #include "src/core/lib/transport/call_final_info.h"
37
- #include "src/core/lib/transport/message.h"
38
- #include "src/core/lib/transport/metadata_batch.h"
39
39
  #include "src/core/telemetry/tcp_tracer.h"
40
40
  #include "src/core/util/ref_counted_string.h"
41
41
 
@@ -126,7 +126,7 @@ class CallTracerInterface : public CallTracerAnnotationInterface {
126
126
  // Traces a new TCP transport attempt for this call attempt. Note the TCP
127
127
  // transport may finish tracing and unref the TCP tracer before or after the
128
128
  // call completion in gRPC core. No TCP tracing when null is returned.
129
- virtual std::shared_ptr<TcpTracerInterface> StartNewTcpTrace() = 0;
129
+ virtual std::shared_ptr<TcpCallTracer> StartNewTcpTrace() = 0;
130
130
  };
131
131
 
132
132
  // Interface for a tracer that records activities on a call. Actual attempts for
@@ -120,6 +120,28 @@ void GlobalStatsPluginRegistry::StatsPluginGroup::AddServerCallTracers(
120
120
  }
121
121
  }
122
122
 
123
+ int GlobalStatsPluginRegistry::StatsPluginGroup::ChannelArgsCompare(
124
+ const StatsPluginGroup* a, const StatsPluginGroup* b) {
125
+ for (size_t i = 0; i < a->plugins_state_.size(); ++i) {
126
+ if (b->plugins_state_.size() == i) return 1; // a is greater
127
+ auto& a_state = a->plugins_state_[i];
128
+ auto& b_state = b->plugins_state_[i];
129
+ int r = QsortCompare(a_state.plugin.get(), b_state.plugin.get());
130
+ if (r != 0) return r;
131
+ if (a_state.scope_config == nullptr) {
132
+ if (b_state.scope_config != nullptr) return -1; // a is less
133
+ // If both are null, they're equal.
134
+ } else {
135
+ if (b_state.scope_config == nullptr) return 1; // a is greater
136
+ // Neither is null, so compare.
137
+ r = a_state.scope_config->Compare(*b_state.scope_config);
138
+ if (r != 0) return r;
139
+ }
140
+ }
141
+ if (b->plugins_state_.size() > a->plugins_state_.size()) return -1;
142
+ return 0;
143
+ }
144
+
123
145
  std::atomic<GlobalStatsPluginRegistry::GlobalStatsPluginNode*>
124
146
  GlobalStatsPluginRegistry::plugins_;
125
147
 
@@ -133,32 +155,28 @@ void GlobalStatsPluginRegistry::RegisterStatsPlugin(
133
155
  }
134
156
  }
135
157
 
136
- GlobalStatsPluginRegistry::StatsPluginGroup
158
+ std::shared_ptr<GlobalStatsPluginRegistry::StatsPluginGroup>
137
159
  GlobalStatsPluginRegistry::GetStatsPluginsForChannel(
138
160
  const experimental::StatsPluginChannelScope& scope) {
139
- StatsPluginGroup group;
161
+ auto group = std::make_shared<StatsPluginGroup>();
140
162
  for (GlobalStatsPluginNode* node = plugins_.load(std::memory_order_acquire);
141
163
  node != nullptr; node = node->next) {
142
- bool is_enabled = false;
143
- std::shared_ptr<StatsPlugin::ScopeConfig> config;
144
- std::tie(is_enabled, config) = node->plugin->IsEnabledForChannel(scope);
164
+ auto [is_enabled, config] = node->plugin->IsEnabledForChannel(scope);
145
165
  if (is_enabled) {
146
- group.AddStatsPlugin(node->plugin, std::move(config));
166
+ group->AddStatsPlugin(node->plugin, std::move(config));
147
167
  }
148
168
  }
149
169
  return group;
150
170
  }
151
171
 
152
- GlobalStatsPluginRegistry::StatsPluginGroup
172
+ std::shared_ptr<GlobalStatsPluginRegistry::StatsPluginGroup>
153
173
  GlobalStatsPluginRegistry::GetStatsPluginsForServer(const ChannelArgs& args) {
154
- StatsPluginGroup group;
174
+ auto group = std::make_shared<StatsPluginGroup>();
155
175
  for (GlobalStatsPluginNode* node = plugins_.load(std::memory_order_acquire);
156
176
  node != nullptr; node = node->next) {
157
- bool is_enabled = false;
158
- std::shared_ptr<StatsPlugin::ScopeConfig> config;
159
- std::tie(is_enabled, config) = node->plugin->IsEnabledForServer(args);
177
+ auto [is_enabled, config] = node->plugin->IsEnabledForServer(args);
160
178
  if (is_enabled) {
161
- group.AddStatsPlugin(node->plugin, std::move(config));
179
+ group->AddStatsPlugin(node->plugin, std::move(config));
162
180
  }
163
181
  }
164
182
  return group;
@@ -275,6 +275,10 @@ class StatsPlugin {
275
275
  class ScopeConfig {
276
276
  public:
277
277
  virtual ~ScopeConfig() = default;
278
+
279
+ // NOTE: This is safe to invoke ONLY if both ScopeConfig objects
280
+ // come from the same StatsPlugin.
281
+ virtual int Compare(const ScopeConfig& other) const = 0;
278
282
  };
279
283
 
280
284
  virtual ~StatsPlugin() = default;
@@ -369,7 +373,8 @@ class GlobalStatsPluginRegistry {
369
373
  // stats plugins. They got a stats plugin group which contains all the stats
370
374
  // plugins for a specific scope and all operations on the stats plugin group
371
375
  // will be applied to all the stats plugins within the group.
372
- class StatsPluginGroup {
376
+ class StatsPluginGroup
377
+ : public std::enable_shared_from_this<StatsPluginGroup> {
373
378
  public:
374
379
  // Adds a stats plugin and a scope config (per-channel or per-server) to the
375
380
  // group.
@@ -471,6 +476,12 @@ class GlobalStatsPluginRegistry {
471
476
  // within the group to \a call_context.
472
477
  void AddServerCallTracers(Arena* arena);
473
478
 
479
+ static absl::string_view ChannelArgName() {
480
+ return "grpc.internal.stats_plugin_group";
481
+ }
482
+ static int ChannelArgsCompare(const StatsPluginGroup* a,
483
+ const StatsPluginGroup* b);
484
+
474
485
  private:
475
486
  friend class RegisteredMetricCallback;
476
487
 
@@ -499,9 +510,10 @@ class GlobalStatsPluginRegistry {
499
510
 
500
511
  // The following functions can be invoked to get a StatsPluginGroup for
501
512
  // a specified scope.
502
- static StatsPluginGroup GetStatsPluginsForChannel(
513
+ static std::shared_ptr<StatsPluginGroup> GetStatsPluginsForChannel(
503
514
  const experimental::StatsPluginChannelScope& scope);
504
- static StatsPluginGroup GetStatsPluginsForServer(const ChannelArgs& args);
515
+ static std::shared_ptr<StatsPluginGroup> GetStatsPluginsForServer(
516
+ const ChannelArgs& args);
505
517
 
506
518
  private:
507
519
  struct GlobalStatsPluginNode {