grpc 1.53.1 → 1.54.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (689) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +78 -66
  3. data/include/grpc/event_engine/event_engine.h +30 -14
  4. data/include/grpc/grpc_security.h +4 -0
  5. data/include/grpc/support/port_platform.h +4 -4
  6. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
  7. data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
  8. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
  9. data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
  10. data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
  11. data/src/core/ext/filters/client_channel/client_channel.h +131 -173
  12. data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
  13. data/src/core/ext/filters/client_channel/config_selector.h +4 -3
  14. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
  15. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
  16. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
  17. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2 -16
  18. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
  19. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
  20. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -3
  21. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
  22. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
  24. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
  25. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
  26. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
  27. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
  28. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
  29. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
  30. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
  31. data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
  32. data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
  33. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
  34. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
  35. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
  36. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
  37. data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
  38. data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
  39. data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
  40. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
  41. data/src/core/ext/gcp/metadata_query.cc +142 -0
  42. data/src/core/ext/gcp/metadata_query.h +82 -0
  43. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
  44. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +8 -12
  45. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -5
  46. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +116 -58
  47. data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -2
  48. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -1
  49. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
  50. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +222 -118
  51. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +113 -295
  52. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -2
  53. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +0 -2
  54. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +277 -451
  55. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
  56. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -14
  57. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -9
  58. data/src/core/ext/transport/chttp2/transport/internal.h +16 -3
  59. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
  60. data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
  61. data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
  62. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
  63. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
  64. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
  65. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
  66. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
  67. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
  68. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
  69. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
  70. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
  71. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
  72. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
  73. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
  74. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
  75. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
  76. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
  77. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
  78. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
  79. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +5 -3
  80. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +24 -0
  81. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
  82. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
  83. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
  84. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
  85. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
  86. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
  87. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  88. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
  89. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
  90. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
  91. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
  92. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
  93. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
  94. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
  95. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  96. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
  97. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
  98. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
  99. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
  100. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
  101. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
  102. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
  103. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
  104. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
  105. data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
  106. data/src/core/ext/xds/xds_client_stats.cc +29 -15
  107. data/src/core/ext/xds/xds_client_stats.h +24 -20
  108. data/src/core/ext/xds/xds_endpoint.cc +5 -2
  109. data/src/core/ext/xds/xds_endpoint.h +9 -1
  110. data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
  111. data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
  112. data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
  113. data/src/core/lib/channel/call_finalization.h +1 -1
  114. data/src/core/lib/channel/call_tracer.cc +51 -0
  115. data/src/core/lib/channel/call_tracer.h +101 -38
  116. data/src/core/lib/channel/connected_channel.cc +483 -1050
  117. data/src/core/lib/channel/context.h +8 -1
  118. data/src/core/lib/channel/promise_based_filter.cc +106 -42
  119. data/src/core/lib/channel/promise_based_filter.h +27 -13
  120. data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
  121. data/src/core/lib/config/config_vars.cc +151 -0
  122. data/src/core/lib/config/config_vars.h +127 -0
  123. data/src/core/lib/config/config_vars_non_generated.cc +51 -0
  124. data/src/core/lib/config/load_config.cc +66 -0
  125. data/src/core/lib/config/load_config.h +49 -0
  126. data/src/core/lib/debug/trace.cc +5 -6
  127. data/src/core/lib/debug/trace.h +0 -5
  128. data/src/core/lib/event_engine/event_engine.cc +37 -2
  129. data/src/core/lib/event_engine/handle_containers.h +7 -22
  130. data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
  131. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
  132. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
  133. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
  134. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
  135. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
  136. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -3
  137. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
  138. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
  139. data/src/core/lib/event_engine/resolved_address.cc +2 -1
  140. data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
  141. data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
  142. data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
  143. data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
  144. data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
  145. data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
  146. data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
  147. data/src/core/lib/experiments/config.cc +3 -10
  148. data/src/core/lib/experiments/experiments.cc +7 -0
  149. data/src/core/lib/experiments/experiments.h +9 -1
  150. data/src/core/lib/gpr/log.cc +15 -28
  151. data/src/core/lib/gprpp/fork.cc +8 -14
  152. data/src/core/lib/gprpp/orphanable.h +4 -3
  153. data/src/core/lib/gprpp/per_cpu.h +9 -3
  154. data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
  155. data/src/core/lib/gprpp/ref_counted.h +33 -34
  156. data/src/core/lib/gprpp/thd.h +16 -0
  157. data/src/core/lib/gprpp/time.cc +1 -0
  158. data/src/core/lib/gprpp/time.h +4 -4
  159. data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
  160. data/src/core/lib/iomgr/call_combiner.h +2 -2
  161. data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
  162. data/src/core/lib/iomgr/ev_posix.cc +13 -53
  163. data/src/core/lib/iomgr/ev_posix.h +0 -3
  164. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
  165. data/src/core/lib/iomgr/iomgr.cc +4 -8
  166. data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
  167. data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
  168. data/src/core/lib/iomgr/pollset_windows.cc +1 -1
  169. data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
  170. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
  171. data/src/core/lib/iomgr/tcp_posix.cc +0 -1
  172. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -16
  173. data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
  174. data/src/core/lib/iomgr/tcp_windows.cc +12 -8
  175. data/src/core/lib/load_balancing/lb_policy.cc +9 -13
  176. data/src/core/lib/load_balancing/lb_policy.h +4 -2
  177. data/src/core/lib/promise/activity.cc +22 -6
  178. data/src/core/lib/promise/activity.h +61 -24
  179. data/src/core/lib/promise/cancel_callback.h +77 -0
  180. data/src/core/lib/promise/detail/basic_seq.h +1 -1
  181. data/src/core/lib/promise/detail/promise_factory.h +4 -0
  182. data/src/core/lib/promise/for_each.h +176 -0
  183. data/src/core/lib/promise/if.h +9 -0
  184. data/src/core/lib/promise/interceptor_list.h +23 -2
  185. data/src/core/lib/promise/latch.h +89 -3
  186. data/src/core/lib/promise/loop.h +13 -9
  187. data/src/core/lib/promise/map.h +7 -0
  188. data/src/core/lib/promise/party.cc +286 -0
  189. data/src/core/lib/promise/party.h +499 -0
  190. data/src/core/lib/promise/pipe.h +197 -57
  191. data/src/core/lib/promise/poll.h +48 -0
  192. data/src/core/lib/promise/promise.h +2 -2
  193. data/src/core/lib/resource_quota/arena.cc +19 -3
  194. data/src/core/lib/resource_quota/arena.h +119 -5
  195. data/src/core/lib/resource_quota/memory_quota.cc +1 -1
  196. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
  197. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
  198. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
  199. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
  200. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  201. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
  202. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
  203. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
  204. data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
  205. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
  206. data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
  207. data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
  208. data/src/core/lib/slice/slice.cc +1 -1
  209. data/src/core/lib/surface/builtins.cc +2 -0
  210. data/src/core/lib/surface/call.cc +926 -1024
  211. data/src/core/lib/surface/call.h +10 -0
  212. data/src/core/lib/surface/lame_client.cc +1 -0
  213. data/src/core/lib/surface/validate_metadata.cc +42 -43
  214. data/src/core/lib/surface/validate_metadata.h +0 -9
  215. data/src/core/lib/surface/version.cc +2 -2
  216. data/src/core/lib/transport/batch_builder.cc +179 -0
  217. data/src/core/lib/transport/batch_builder.h +468 -0
  218. data/src/core/lib/transport/bdp_estimator.cc +7 -7
  219. data/src/core/lib/transport/bdp_estimator.h +10 -6
  220. data/src/core/lib/transport/custom_metadata.h +30 -0
  221. data/src/core/lib/transport/metadata_batch.cc +5 -2
  222. data/src/core/lib/transport/metadata_batch.h +17 -113
  223. data/src/core/lib/transport/parsed_metadata.h +6 -16
  224. data/src/core/lib/transport/timeout_encoding.cc +6 -1
  225. data/src/core/lib/transport/transport.cc +30 -2
  226. data/src/core/lib/transport/transport.h +70 -14
  227. data/src/core/lib/transport/transport_impl.h +7 -0
  228. data/src/core/lib/transport/transport_op_string.cc +52 -42
  229. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
  230. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
  231. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
  232. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
  233. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  234. data/src/core/tsi/ssl_transport_security.cc +4 -2
  235. data/src/ruby/lib/grpc/version.rb +1 -1
  236. data/third_party/abseil-cpp/absl/base/config.h +1 -1
  237. data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
  238. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
  239. data/third_party/abseil-cpp/absl/flags/config.h +68 -0
  240. data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
  241. data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
  242. data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
  243. data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
  244. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
  245. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
  246. data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
  247. data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
  248. data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
  249. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
  250. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
  251. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
  252. data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
  253. data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
  254. data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
  255. data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
  256. data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
  257. data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
  258. data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
  259. data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
  260. data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
  261. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
  262. data/third_party/boringssl-with-bazel/err_data.c +728 -712
  263. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
  264. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
  265. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
  266. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
  267. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
  268. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
  269. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
  270. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
  271. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
  272. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
  273. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
  274. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
  275. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
  276. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
  277. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
  278. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
  279. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
  280. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
  281. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
  282. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
  283. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
  284. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
  285. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
  286. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
  287. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
  288. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
  289. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
  290. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
  291. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
  292. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
  293. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
  294. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
  295. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
  296. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
  297. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
  298. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
  299. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
  300. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
  301. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
  302. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
  303. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
  304. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
  305. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
  306. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
  307. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
  308. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
  309. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
  310. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
  311. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
  312. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
  313. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
  314. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
  315. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
  316. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
  317. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
  318. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
  319. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
  320. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
  321. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
  322. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
  323. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
  324. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
  325. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
  326. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
  327. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
  328. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
  329. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
  330. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
  331. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
  332. data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
  333. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
  334. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
  335. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
  336. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
  337. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
  338. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
  339. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
  340. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
  341. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
  342. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
  343. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
  344. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
  345. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
  346. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
  347. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
  348. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
  349. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
  350. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
  351. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
  352. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
  353. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
  354. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
  355. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
  356. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
  357. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
  358. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
  359. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
  360. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
  361. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
  362. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
  363. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
  364. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
  365. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
  366. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
  367. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
  368. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
  369. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
  370. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
  371. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
  372. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
  373. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
  374. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
  375. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
  376. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
  377. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
  378. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
  379. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
  380. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
  381. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
  382. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
  383. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
  384. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
  385. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
  386. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
  387. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
  388. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
  389. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
  390. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
  391. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
  392. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
  393. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
  394. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
  395. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
  396. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
  397. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
  398. data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
  399. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
  400. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
  401. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
  402. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
  403. data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
  404. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
  405. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
  406. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
  407. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
  408. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
  409. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
  410. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
  411. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
  412. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
  413. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
  414. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
  415. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
  416. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
  417. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
  418. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
  419. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
  420. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
  421. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
  422. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
  423. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
  424. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
  425. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
  426. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
  427. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
  428. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
  429. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
  430. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
  431. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
  432. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
  433. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
  434. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
  435. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
  436. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
  437. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
  438. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
  439. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
  440. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
  441. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
  442. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
  443. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
  444. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
  445. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
  446. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
  447. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
  448. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
  449. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
  450. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
  451. data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
  452. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
  453. data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
  454. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
  455. data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
  456. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
  457. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
  458. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
  459. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
  460. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
  461. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
  462. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
  463. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
  464. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
  465. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
  466. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
  467. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
  468. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
  469. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
  470. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
  471. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
  472. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
  473. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
  474. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
  475. data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
  476. data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
  477. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
  478. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
  479. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
  480. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
  481. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
  482. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
  483. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
  484. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
  485. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
  486. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
  487. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
  488. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
  489. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
  490. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
  491. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
  499. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
  501. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
  502. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
  503. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
  504. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
  505. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
  506. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
  507. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
  508. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
  509. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
  510. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
  511. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
  512. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
  513. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
  514. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
  515. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
  516. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
  517. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
  518. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
  519. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
  520. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
  521. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
  522. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
  523. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
  524. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
  525. data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
  526. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
  527. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
  528. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
  529. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
  530. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
  531. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
  532. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
  533. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
  534. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
  535. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
  536. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
  537. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
  538. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
  539. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
  540. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
  541. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
  542. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
  543. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
  544. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
  545. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
  546. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
  547. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
  548. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
  549. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
  550. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
  551. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
  552. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
  553. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
  554. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
  555. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
  556. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
  557. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
  558. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
  559. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
  560. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
  561. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
  562. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
  563. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
  564. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
  565. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
  566. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
  567. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
  568. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
  569. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
  570. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
  571. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
  572. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
  573. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
  574. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
  575. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
  576. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
  577. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
  578. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
  579. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
  580. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
  581. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
  582. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
  583. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
  584. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
  585. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
  586. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
  587. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
  588. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
  589. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
  590. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
  591. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
  592. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
  593. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
  594. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
  595. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
  596. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
  597. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
  598. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
  599. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
  600. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
  601. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
  602. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
  603. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
  604. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
  605. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
  606. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
  607. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
  608. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
  609. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
  610. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
  611. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
  612. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
  613. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
  614. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
  615. data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
  616. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
  617. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  618. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
  619. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
  620. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
  621. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
  622. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
  623. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
  624. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
  625. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
  626. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
  627. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
  628. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
  629. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
  630. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
  631. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
  632. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
  633. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
  634. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
  635. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
  636. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
  637. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
  638. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
  639. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
  640. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
  641. metadata +103 -70
  642. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
  643. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
  644. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +0 -29
  645. data/src/core/lib/gprpp/global_config.h +0 -93
  646. data/src/core/lib/gprpp/global_config_env.cc +0 -140
  647. data/src/core/lib/gprpp/global_config_env.h +0 -133
  648. data/src/core/lib/gprpp/global_config_generic.h +0 -40
  649. data/src/core/lib/promise/intra_activity_waiter.h +0 -55
  650. data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
  651. data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
  652. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
  653. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
  654. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
  655. data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
  656. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
  657. data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
  658. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
  659. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
  660. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
  661. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
  662. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
  663. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
  664. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
  665. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
  666. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
  667. /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
  668. /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
  669. /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
  670. /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
  671. /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
  672. /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
  673. /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
  674. /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
  675. /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
  676. /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
  677. /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
  678. /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
  679. /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
  680. /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
  681. /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
  682. /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
  683. /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
  684. /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
  685. /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
  686. /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
  687. /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
  688. /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
  689. /data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +0 -0
@@ -18,13 +18,16 @@
18
18
 
19
19
  #include <inttypes.h>
20
20
  #include <stdlib.h>
21
+ #include <string.h>
21
22
 
22
23
  #include <algorithm>
24
+ #include <atomic>
23
25
  #include <memory>
24
26
  #include <string>
25
27
  #include <utility>
26
28
  #include <vector>
27
29
 
30
+ #include "absl/random/random.h"
28
31
  #include "absl/status/status.h"
29
32
  #include "absl/status/statusor.h"
30
33
  #include "absl/strings/str_cat.h"
@@ -174,7 +177,7 @@ class RoundRobin : public LoadBalancingPolicy {
174
177
  // Using pointer value only, no ref held -- do not dereference!
175
178
  RoundRobin* parent_;
176
179
 
177
- size_t last_picked_index_;
180
+ std::atomic<size_t> last_picked_index_;
178
181
  std::vector<RefCountedPtr<SubchannelInterface>> subchannels_;
179
182
  };
180
183
 
@@ -189,6 +192,8 @@ class RoundRobin : public LoadBalancingPolicy {
189
192
  RefCountedPtr<RoundRobinSubchannelList> latest_pending_subchannel_list_;
190
193
 
191
194
  bool shutdown_ = false;
195
+
196
+ absl::BitGen bit_gen_;
192
197
  };
193
198
 
194
199
  //
@@ -207,27 +212,26 @@ RoundRobin::Picker::Picker(RoundRobin* parent,
207
212
  }
208
213
  // For discussion on why we generate a random starting index for
209
214
  // the picker, see https://github.com/grpc/grpc-go/issues/2580.
210
- // TODO(roth): rand(3) is not thread-safe. This should be replaced with
211
- // something better as part of https://github.com/grpc/grpc/issues/17891.
212
- last_picked_index_ = rand() % subchannels_.size();
215
+ size_t index =
216
+ absl::Uniform<size_t>(parent->bit_gen_, 0, subchannels_.size());
217
+ last_picked_index_.store(index, std::memory_order_relaxed);
213
218
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
214
219
  gpr_log(GPR_INFO,
215
220
  "[RR %p picker %p] created picker from subchannel_list=%p "
216
221
  "with %" PRIuPTR " READY subchannels; last_picked_index_=%" PRIuPTR,
217
- parent_, this, subchannel_list, subchannels_.size(),
218
- last_picked_index_);
222
+ parent_, this, subchannel_list, subchannels_.size(), index);
219
223
  }
220
224
  }
221
225
 
222
226
  RoundRobin::PickResult RoundRobin::Picker::Pick(PickArgs /*args*/) {
223
- last_picked_index_ = (last_picked_index_ + 1) % subchannels_.size();
227
+ size_t index = last_picked_index_.fetch_add(1, std::memory_order_relaxed) %
228
+ subchannels_.size();
224
229
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
225
230
  gpr_log(GPR_INFO,
226
231
  "[RR %p picker %p] returning index %" PRIuPTR ", subchannel=%p",
227
- parent_, this, last_picked_index_,
228
- subchannels_[last_picked_index_].get());
232
+ parent_, this, index, subchannels_[index].get());
229
233
  }
230
- return PickResult::Complete(subchannels_[last_picked_index_]);
234
+ return PickResult::Complete(subchannels_[index]);
231
235
  }
232
236
 
233
237
  //
@@ -99,6 +99,7 @@ class WeightedRoundRobinConfig : public LoadBalancingPolicy::Config {
99
99
  Duration weight_expiration_period() const {
100
100
  return weight_expiration_period_;
101
101
  }
102
+ float error_utilization_penalty() const { return error_utilization_penalty_; }
102
103
 
103
104
  static const JsonLoaderInterface* JsonLoader(const JsonArgs&) {
104
105
  static const auto* loader =
@@ -113,14 +114,21 @@ class WeightedRoundRobinConfig : public LoadBalancingPolicy::Config {
113
114
  &WeightedRoundRobinConfig::weight_update_period_)
114
115
  .OptionalField("weightExpirationPeriod",
115
116
  &WeightedRoundRobinConfig::weight_expiration_period_)
117
+ .OptionalField(
118
+ "errorUtilizationPenalty",
119
+ &WeightedRoundRobinConfig::error_utilization_penalty_)
116
120
  .Finish();
117
121
  return loader;
118
122
  }
119
123
 
120
- void JsonPostLoad(const Json&, const JsonArgs&, ValidationErrors*) {
124
+ void JsonPostLoad(const Json&, const JsonArgs&, ValidationErrors* errors) {
121
125
  // Impose lower bound of 100ms on weightUpdatePeriod.
122
126
  weight_update_period_ =
123
127
  std::max(weight_update_period_, Duration::Milliseconds(100));
128
+ if (error_utilization_penalty_ < 0) {
129
+ ValidationErrors::ScopedField field(errors, ".errorUtilizationPenalty");
130
+ errors->AddError("must be non-negative");
131
+ }
124
132
  }
125
133
 
126
134
  private:
@@ -129,6 +137,7 @@ class WeightedRoundRobinConfig : public LoadBalancingPolicy::Config {
129
137
  Duration blackout_period_ = Duration::Seconds(10);
130
138
  Duration weight_update_period_ = Duration::Seconds(1);
131
139
  Duration weight_expiration_period_ = Duration::Minutes(3);
140
+ float error_utilization_penalty_ = 1.0;
132
141
  };
133
142
 
134
143
  // WRR LB policy.
@@ -149,7 +158,8 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
149
158
  : wrr_(std::move(wrr)), key_(std::move(key)) {}
150
159
  ~AddressWeight() override;
151
160
 
152
- void MaybeUpdateWeight(double qps, double cpu_utilization);
161
+ void MaybeUpdateWeight(double qps, double eps, double cpu_utilization,
162
+ float error_utilization_penalty);
153
163
 
154
164
  float GetWeight(Timestamp now, Duration weight_expiration_period,
155
165
  Duration blackout_period);
@@ -191,14 +201,17 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
191
201
  private:
192
202
  class OobWatcher : public OobBackendMetricWatcher {
193
203
  public:
194
- explicit OobWatcher(RefCountedPtr<AddressWeight> weight)
195
- : weight_(std::move(weight)) {}
204
+ OobWatcher(RefCountedPtr<AddressWeight> weight,
205
+ float error_utilization_penalty)
206
+ : weight_(std::move(weight)),
207
+ error_utilization_penalty_(error_utilization_penalty) {}
196
208
 
197
209
  void OnBackendMetricReport(
198
210
  const BackendMetricData& backend_metric_data) override;
199
211
 
200
212
  private:
201
213
  RefCountedPtr<AddressWeight> weight_;
214
+ const float error_utilization_penalty_;
202
215
  };
203
216
 
204
217
  // Performs connectivity state updates that need to be done only
@@ -290,8 +303,10 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
290
303
  // A call tracker that collects per-call endpoint utilization reports.
291
304
  class SubchannelCallTracker : public SubchannelCallTrackerInterface {
292
305
  public:
293
- explicit SubchannelCallTracker(RefCountedPtr<AddressWeight> weight)
294
- : weight_(std::move(weight)) {}
306
+ SubchannelCallTracker(RefCountedPtr<AddressWeight> weight,
307
+ float error_utilization_penalty)
308
+ : weight_(std::move(weight)),
309
+ error_utilization_penalty_(error_utilization_penalty) {}
295
310
 
296
311
  void Start() override {}
297
312
 
@@ -299,6 +314,7 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
299
314
 
300
315
  private:
301
316
  RefCountedPtr<AddressWeight> weight_;
317
+ const float error_utilization_penalty_;
302
318
  };
303
319
 
304
320
  // Info stored about each subchannel.
@@ -324,6 +340,7 @@ class WeightedRoundRobin : public LoadBalancingPolicy {
324
340
  const Duration weight_update_period_;
325
341
  const Duration weight_expiration_period_;
326
342
  const Duration blackout_period_;
343
+ const float error_utilization_penalty_;
327
344
  std::vector<SubchannelInfo> subchannels_;
328
345
 
329
346
  Mutex scheduler_mu_;
@@ -381,16 +398,24 @@ WeightedRoundRobin::AddressWeight::~AddressWeight() {
381
398
  }
382
399
 
383
400
  void WeightedRoundRobin::AddressWeight::MaybeUpdateWeight(
384
- double qps, double cpu_utilization) {
401
+ double qps, double eps, double cpu_utilization,
402
+ float error_utilization_penalty) {
385
403
  // Compute weight.
386
404
  float weight = 0;
387
- if (qps > 0 && cpu_utilization > 0) weight = qps / cpu_utilization;
405
+ if (qps > 0 && cpu_utilization > 0) {
406
+ double penalty = 0.0;
407
+ if (eps > 0 && error_utilization_penalty > 0) {
408
+ penalty = eps / qps * error_utilization_penalty;
409
+ }
410
+ weight = qps / (cpu_utilization + penalty);
411
+ }
388
412
  if (weight == 0) {
389
413
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
390
414
  gpr_log(GPR_INFO,
391
- "[WRR %p] subchannel %s: qps=%f, cpu_utilization=%f: weight=%f "
392
- "(not updating)",
393
- wrr_.get(), key_.c_str(), qps, cpu_utilization, weight);
415
+ "[WRR %p] subchannel %s: qps=%f, eps=%f, cpu_utilization=%f: "
416
+ "error_util_penalty=%f, weight=%f (not updating)",
417
+ wrr_.get(), key_.c_str(), qps, eps, cpu_utilization,
418
+ error_utilization_penalty, weight);
394
419
  }
395
420
  return;
396
421
  }
@@ -399,11 +424,12 @@ void WeightedRoundRobin::AddressWeight::MaybeUpdateWeight(
399
424
  MutexLock lock(&mu_);
400
425
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
401
426
  gpr_log(GPR_INFO,
402
- "[WRR %p] subchannel %s: qps=%f, cpu_utilization=%f: setting "
403
- "weight=%f weight_=%f now=%s last_update_time_=%s "
404
- "non_empty_since_=%s",
405
- wrr_.get(), key_.c_str(), qps, cpu_utilization, weight, weight_,
406
- now.ToString().c_str(), last_update_time_.ToString().c_str(),
427
+ "[WRR %p] subchannel %s: qps=%f, eps=%f, cpu_utilization=%f "
428
+ "error_util_penalty=%f : setting weight=%f weight_=%f now=%s "
429
+ "last_update_time_=%s non_empty_since_=%s",
430
+ wrr_.get(), key_.c_str(), qps, eps, cpu_utilization,
431
+ error_utilization_penalty, weight, weight_, now.ToString().c_str(),
432
+ last_update_time_.ToString().c_str(),
407
433
  non_empty_since_.ToString().c_str());
408
434
  }
409
435
  if (non_empty_since_ == Timestamp::InfFuture()) non_empty_since_ = now;
@@ -456,12 +482,15 @@ void WeightedRoundRobin::Picker::SubchannelCallTracker::Finish(
456
482
  auto* backend_metric_data =
457
483
  args.backend_metric_accessor->GetBackendMetricData();
458
484
  double qps = 0;
485
+ double eps = 0;
459
486
  double cpu_utilization = 0;
460
487
  if (backend_metric_data != nullptr) {
461
488
  qps = backend_metric_data->qps;
489
+ eps = backend_metric_data->eps;
462
490
  cpu_utilization = backend_metric_data->cpu_utilization;
463
491
  }
464
- weight_->MaybeUpdateWeight(qps, cpu_utilization);
492
+ weight_->MaybeUpdateWeight(qps, eps, cpu_utilization,
493
+ error_utilization_penalty_);
465
494
  }
466
495
 
467
496
  //
@@ -476,6 +505,7 @@ WeightedRoundRobin::Picker::Picker(
476
505
  weight_update_period_(wrr_->config_->weight_update_period()),
477
506
  weight_expiration_period_(wrr_->config_->weight_expiration_period()),
478
507
  blackout_period_(wrr_->config_->blackout_period()),
508
+ error_utilization_penalty_(wrr_->config_->error_utilization_penalty()),
479
509
  last_picked_index_(absl::Uniform<size_t>(wrr_->bit_gen_)) {
480
510
  for (size_t i = 0; i < subchannel_list->num_subchannels(); ++i) {
481
511
  WeightedRoundRobinSubchannelData* sd = subchannel_list->subchannel(i);
@@ -515,8 +545,8 @@ WeightedRoundRobin::PickResult WeightedRoundRobin::Picker::Pick(
515
545
  // Collect per-call utilization data if needed.
516
546
  std::unique_ptr<SubchannelCallTrackerInterface> subchannel_call_tracker;
517
547
  if (use_per_rpc_utilization_) {
518
- subchannel_call_tracker =
519
- std::make_unique<SubchannelCallTracker>(subchannel_info.weight);
548
+ subchannel_call_tracker = std::make_unique<SubchannelCallTracker>(
549
+ subchannel_info.weight, error_utilization_penalty_);
520
550
  }
521
551
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
522
552
  gpr_log(GPR_INFO,
@@ -560,6 +590,13 @@ void WeightedRoundRobin::Picker::BuildSchedulerAndStartTimerLocked() {
560
590
  if (scheduler_or.has_value()) {
561
591
  scheduler =
562
592
  std::make_shared<StaticStrideScheduler>(std::move(*scheduler_or));
593
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
594
+ gpr_log(GPR_INFO, "[WRR %p picker %p] new scheduler: %p", wrr_.get(),
595
+ this, scheduler.get());
596
+ }
597
+ } else if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_wrr_trace)) {
598
+ gpr_log(GPR_INFO, "[WRR %p picker %p] no scheduler, falling back to RR",
599
+ wrr_.get(), this);
563
600
  }
564
601
  {
565
602
  MutexLock lock(&scheduler_mu_);
@@ -817,8 +854,9 @@ void WeightedRoundRobin::WeightedRoundRobinSubchannelList::
817
854
 
818
855
  void WeightedRoundRobin::WeightedRoundRobinSubchannelData::OobWatcher::
819
856
  OnBackendMetricReport(const BackendMetricData& backend_metric_data) {
820
- weight_->MaybeUpdateWeight(backend_metric_data.qps,
821
- backend_metric_data.cpu_utilization);
857
+ weight_->MaybeUpdateWeight(backend_metric_data.qps, backend_metric_data.eps,
858
+ backend_metric_data.cpu_utilization,
859
+ error_utilization_penalty_);
822
860
  }
823
861
 
824
862
  //
@@ -837,9 +875,10 @@ WeightedRoundRobin::WeightedRoundRobinSubchannelData::
837
875
  WeightedRoundRobin* p =
838
876
  static_cast<WeightedRoundRobin*>(subchannel_list->policy());
839
877
  if (p->config_->enable_oob_load_report()) {
840
- subchannel()->AddDataWatcher(
841
- MakeOobBackendMetricWatcher(p->config_->oob_reporting_period(),
842
- std::make_unique<OobWatcher>(weight_)));
878
+ subchannel()->AddDataWatcher(MakeOobBackendMetricWatcher(
879
+ p->config_->oob_reporting_period(),
880
+ std::make_unique<OobWatcher>(weight_,
881
+ p->config_->error_utilization_penalty())));
843
882
  }
844
883
  }
845
884
 
@@ -950,15 +989,14 @@ class WeightedRoundRobinFactory : public LoadBalancingPolicyFactory {
950
989
  absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
951
990
  ParseLoadBalancingConfig(const Json& json) const override {
952
991
  if (json.type() == Json::Type::JSON_NULL) {
953
- // priority was mentioned as a policy in the deprecated
954
- // loadBalancingPolicy field or in the client API.
955
992
  return absl::InvalidArgumentError(
956
- "field:loadBalancingPolicy error:priority policy requires "
957
- "configuration. Please use loadBalancingConfig field of service "
958
- "config instead.");
993
+ "field:loadBalancingPolicy error:weighted_round_robin policy "
994
+ "requires configuration. Please use loadBalancingConfig field of "
995
+ "service config instead.");
959
996
  }
960
997
  return LoadRefCountedFromJson<WeightedRoundRobinConfig>(
961
- json, JsonArgs(), "errors validating priority LB policy config");
998
+ json, JsonArgs(),
999
+ "errors validating weighted_round_robin LB policy config");
962
1000
  }
963
1001
  };
964
1002
 
@@ -26,6 +26,7 @@
26
26
  #include <utility>
27
27
  #include <vector>
28
28
 
29
+ #include "absl/base/thread_annotations.h"
29
30
  #include "absl/random/random.h"
30
31
  #include "absl/status/status.h"
31
32
  #include "absl/status/statusor.h"
@@ -46,6 +47,7 @@
46
47
  #include "src/core/lib/gprpp/debug_location.h"
47
48
  #include "src/core/lib/gprpp/orphanable.h"
48
49
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
50
+ #include "src/core/lib/gprpp/sync.h"
49
51
  #include "src/core/lib/gprpp/time.h"
50
52
  #include "src/core/lib/gprpp/validation_errors.h"
51
53
  #include "src/core/lib/gprpp/work_serializer.h"
@@ -138,7 +140,11 @@ class WeightedTargetLb : public LoadBalancingPolicy {
138
140
 
139
141
  private:
140
142
  PickerList pickers_;
141
- absl::BitGen bit_gen_;
143
+
144
+ // TODO(roth): Consider using a separate thread-local BitGen for each CPU
145
+ // to avoid the need for this mutex.
146
+ Mutex mu_;
147
+ absl::BitGen bit_gen_ ABSL_GUARDED_BY(&mu_);
142
148
  };
143
149
 
144
150
  // Each WeightedChild holds a ref to its parent WeightedTargetLb.
@@ -247,8 +253,10 @@ class WeightedTargetLb : public LoadBalancingPolicy {
247
253
  WeightedTargetLb::PickResult WeightedTargetLb::WeightedPicker::Pick(
248
254
  PickArgs args) {
249
255
  // Generate a random number in [0, total weight).
250
- const uint64_t key =
251
- absl::Uniform<uint64_t>(bit_gen_, 0, pickers_.back().first);
256
+ const uint64_t key = [&]() {
257
+ MutexLock lock(&mu_);
258
+ return absl::Uniform<uint64_t>(bit_gen_, 0, pickers_.back().first);
259
+ }();
252
260
  // Find the index in pickers_ corresponding to key.
253
261
  size_t mid = 0;
254
262
  size_t start_index = 0;
@@ -38,6 +38,7 @@
38
38
  #include <grpc/impl/connectivity_state.h>
39
39
  #include <grpc/support/log.h>
40
40
 
41
+ #include "src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h"
41
42
  #include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
42
43
  #include "src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h"
43
44
  #include "src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h"
@@ -332,7 +333,13 @@ class XdsClusterImplLb::Picker::SubchannelCallTracker
332
333
  }
333
334
  // Record call completion for load reporting.
334
335
  if (locality_stats_ != nullptr) {
335
- locality_stats_->AddCallFinished(!args.status.ok());
336
+ auto* backend_metric_data =
337
+ args.backend_metric_accessor->GetBackendMetricData();
338
+ const std::map<absl::string_view, double>* named_metrics = nullptr;
339
+ if (backend_metric_data != nullptr) {
340
+ named_metrics = &backend_metric_data->named_metrics;
341
+ }
342
+ locality_stats_->AddCallFinished(named_metrics, !args.status.ok());
336
343
  }
337
344
  // Decrement number of calls in flight.
338
345
  call_counter_->Decrement();
@@ -37,7 +37,7 @@
37
37
  #include <grpc/impl/connectivity_state.h>
38
38
  #include <grpc/support/log.h>
39
39
 
40
- #include "src/core/ext/filters/client_channel/client_channel.h"
40
+ #include "src/core/ext/filters/client_channel/client_channel_internal.h"
41
41
  #include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
42
42
  #include "src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h"
43
43
  #include "src/core/lib/channel/channel_args.h"
@@ -229,8 +229,7 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
229
229
 
230
230
  XdsClusterManagerLb::PickResult XdsClusterManagerLb::ClusterPicker::Pick(
231
231
  PickArgs args) {
232
- auto* call_state = static_cast<ClientChannel::LoadBalancedCall::LbCallState*>(
233
- args.call_state);
232
+ auto* call_state = static_cast<ClientChannelLbCallState*>(args.call_state);
234
233
  auto cluster_name =
235
234
  call_state->GetCallAttribute(XdsClusterAttributeTypeName());
236
235
  auto it = cluster_map_.find(std::string(cluster_name));
@@ -328,7 +327,6 @@ void XdsClusterManagerLb::UpdateStateLocked() {
328
327
  size_t num_ready = 0;
329
328
  size_t num_connecting = 0;
330
329
  size_t num_idle = 0;
331
- size_t num_transient_failures = 0;
332
330
  for (const auto& p : children_) {
333
331
  const auto& child_name = p.first;
334
332
  const ClusterChild* child = p.second.get();
@@ -351,7 +349,6 @@ void XdsClusterManagerLb::UpdateStateLocked() {
351
349
  break;
352
350
  }
353
351
  case GRPC_CHANNEL_TRANSIENT_FAILURE: {
354
- ++num_transient_failures;
355
352
  break;
356
353
  }
357
354
  default:
@@ -43,7 +43,7 @@
43
43
  #include <grpc/impl/connectivity_state.h>
44
44
  #include <grpc/support/log.h>
45
45
 
46
- #include "src/core/ext/filters/client_channel/lb_call_state_internal.h"
46
+ #include "src/core/ext/filters/client_channel/client_channel_internal.h"
47
47
  #include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
48
48
  #include "src/core/ext/filters/stateful_session/stateful_session_filter.h"
49
49
  #include "src/core/ext/xds/xds_health_status.h"
@@ -369,7 +369,7 @@ XdsOverrideHostLb::Picker::PickOverridenHost(absl::string_view override_host) {
369
369
 
370
370
  LoadBalancingPolicy::PickResult XdsOverrideHostLb::Picker::Pick(
371
371
  LoadBalancingPolicy::PickArgs args) {
372
- auto* call_state = static_cast<LbCallStateInternal*>(args.call_state);
372
+ auto* call_state = static_cast<ClientChannelLbCallState*>(args.call_state);
373
373
  auto override_host = call_state->GetCallAttribute(XdsOverrideHostTypeName());
374
374
  auto overridden_host_pick = PickOverridenHost(override_host);
375
375
  if (overridden_host_pick.has_value()) {
@@ -30,10 +30,12 @@
30
30
  #include "absl/base/thread_annotations.h"
31
31
  #include "absl/status/status.h"
32
32
  #include "absl/status/statusor.h"
33
+ #include "absl/strings/match.h"
33
34
  #include "absl/strings/string_view.h"
34
35
  #include "absl/strings/strip.h"
35
36
  #include "absl/types/optional.h"
36
37
 
38
+ #include <grpc/event_engine/event_engine.h>
37
39
  #include <grpc/grpc.h>
38
40
  #include <grpc/support/alloc.h>
39
41
  #include <grpc/support/log.h>
@@ -41,8 +43,6 @@
41
43
  #include "src/core/lib/config/core_configuration.h"
42
44
  #include "src/core/lib/debug/trace.h"
43
45
  #include "src/core/lib/gprpp/debug_location.h"
44
- #include "src/core/lib/gprpp/global_config_generic.h"
45
- #include "src/core/lib/gprpp/memory.h"
46
46
  #include "src/core/lib/gprpp/orphanable.h"
47
47
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
48
48
  #include "src/core/lib/gprpp/status_helper.h"
@@ -61,7 +61,6 @@
61
61
  #if GRPC_ARES == 1
62
62
 
63
63
  #include <stdio.h>
64
- #include <string.h>
65
64
 
66
65
  #include <address_sorting/address_sorting.h>
67
66
 
@@ -70,12 +69,11 @@
70
69
 
71
70
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
72
71
  #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
73
- #include "src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h"
74
72
  #include "src/core/ext/filters/client_channel/resolver/polling_resolver.h"
75
73
  #include "src/core/lib/backoff/backoff.h"
76
74
  #include "src/core/lib/channel/channel_args.h"
75
+ #include "src/core/lib/config/config_vars.h"
77
76
  #include "src/core/lib/event_engine/handle_containers.h"
78
- #include "src/core/lib/gpr/string.h"
79
77
  #include "src/core/lib/iomgr/gethostname.h"
80
78
  #include "src/core/lib/iomgr/resolve_address.h"
81
79
  #include "src/core/lib/json/json.h"
@@ -95,7 +93,7 @@ namespace {
95
93
  class AresClientChannelDNSResolver : public PollingResolver {
96
94
  public:
97
95
  AresClientChannelDNSResolver(ResolverArgs args,
98
- const ChannelArgs& channel_args);
96
+ Duration min_time_between_resolutions);
99
97
 
100
98
  OrphanablePtr<Orphanable> StartRequest() override;
101
99
 
@@ -205,29 +203,26 @@ class AresClientChannelDNSResolver : public PollingResolver {
205
203
  };
206
204
 
207
205
  AresClientChannelDNSResolver::AresClientChannelDNSResolver(
208
- ResolverArgs args, const ChannelArgs& channel_args)
209
- : PollingResolver(
210
- std::move(args), channel_args,
211
- std::max(Duration::Zero(),
212
- channel_args
213
- .GetDurationFromIntMillis(
214
- GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS)
215
- .value_or(Duration::Seconds(30))),
216
- BackOff::Options()
217
- .set_initial_backoff(Duration::Milliseconds(
218
- GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS * 1000))
219
- .set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
220
- .set_jitter(GRPC_DNS_RECONNECT_JITTER)
221
- .set_max_backoff(Duration::Milliseconds(
222
- GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000)),
223
- &grpc_trace_cares_resolver),
206
+ ResolverArgs args, Duration min_time_between_resolutions)
207
+ : PollingResolver(std::move(args), min_time_between_resolutions,
208
+ BackOff::Options()
209
+ .set_initial_backoff(Duration::Milliseconds(
210
+ GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS * 1000))
211
+ .set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
212
+ .set_jitter(GRPC_DNS_RECONNECT_JITTER)
213
+ .set_max_backoff(Duration::Milliseconds(
214
+ GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000)),
215
+ &grpc_trace_cares_resolver),
224
216
  request_service_config_(
225
- !channel_args.GetBool(GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION)
217
+ !channel_args()
218
+ .GetBool(GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION)
226
219
  .value_or(true)),
227
- enable_srv_queries_(channel_args.GetBool(GRPC_ARG_DNS_ENABLE_SRV_QUERIES)
220
+ enable_srv_queries_(channel_args()
221
+ .GetBool(GRPC_ARG_DNS_ENABLE_SRV_QUERIES)
228
222
  .value_or(false)),
229
223
  query_timeout_ms_(
230
- std::max(0, channel_args.GetInt(GRPC_ARG_DNS_ARES_QUERY_TIMEOUT_MS)
224
+ std::max(0, channel_args()
225
+ .GetInt(GRPC_ARG_DNS_ARES_QUERY_TIMEOUT_MS)
231
226
  .value_or(GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS))) {}
232
227
 
233
228
  AresClientChannelDNSResolver::~AresClientChannelDNSResolver() {
@@ -460,9 +455,13 @@ class AresClientChannelDNSResolverFactory : public ResolverFactory {
460
455
  }
461
456
 
462
457
  OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
463
- ChannelArgs channel_args = args.args;
464
- return MakeOrphanable<AresClientChannelDNSResolver>(std::move(args),
465
- channel_args);
458
+ Duration min_time_between_resolutions = std::max(
459
+ Duration::Zero(), args.args
460
+ .GetDurationFromIntMillis(
461
+ GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS)
462
+ .value_or(Duration::Seconds(30)));
463
+ return MakeOrphanable<AresClientChannelDNSResolver>(
464
+ std::move(args), min_time_between_resolutions);
466
465
  }
467
466
  };
468
467
 
@@ -810,19 +809,12 @@ class AresDNSResolver : public DNSResolver {
810
809
  intptr_t aba_token_ ABSL_GUARDED_BY(mu_) = 0;
811
810
  };
812
811
 
813
- bool ShouldUseAres(const char* resolver_env) {
814
- return resolver_env == nullptr || strlen(resolver_env) == 0 ||
815
- gpr_stricmp(resolver_env, "ares") == 0;
812
+ bool ShouldUseAres(absl::string_view resolver_env) {
813
+ return resolver_env.empty() || absl::EqualsIgnoreCase(resolver_env, "ares");
816
814
  }
817
815
 
818
816
  bool UseAresDnsResolver() {
819
- static const bool result = []() {
820
- UniquePtr<char> resolver = GPR_GLOBAL_CONFIG_GET(grpc_dns_resolver);
821
- bool result = ShouldUseAres(resolver.get());
822
- if (result) gpr_log(GPR_DEBUG, "Using ares dns resolver");
823
- return result;
824
- }();
825
- return result;
817
+ return ShouldUseAres(ConfigVars::Get().DnsResolver());
826
818
  }
827
819
 
828
820
  } // namespace
@@ -252,7 +252,7 @@ class GrpcPolledFdWindows {
252
252
 
253
253
  bool IsFdStillReadableLocked() { return read_buf_has_data_; }
254
254
 
255
- void ShutdownLocked(grpc_error_handle error) {
255
+ void ShutdownLocked(grpc_error_handle /* error */) {
256
256
  grpc_winsocket_shutdown(winsocket_);
257
257
  }
258
258
 
@@ -263,7 +263,7 @@ class GrpcPolledFdWindows {
263
263
  const char* GetName() const { return name_.c_str(); }
264
264
 
265
265
  ares_ssize_t RecvFrom(WSAErrorContext* wsa_error_ctx, void* data,
266
- ares_socket_t data_len, int flags,
266
+ ares_socket_t data_len, int /* flags */,
267
267
  struct sockaddr* from, ares_socklen_t* from_len) {
268
268
  GRPC_CARES_TRACE_LOG(
269
269
  "fd:|%s| RecvFrom called read_buf_has_data:%d Current read buf "
@@ -301,7 +301,7 @@ class GrpcPolledFdWindows {
301
301
  grpc_slice out = GRPC_SLICE_MALLOC(total);
302
302
  size_t cur = 0;
303
303
  for (int i = 0; i < iov_count; i++) {
304
- for (int k = 0; k < iov[i].iov_len; k++) {
304
+ for (size_t k = 0; k < iov[i].iov_len; k++) {
305
305
  GRPC_SLICE_START_PTR(out)[cur++] = ((char*)iov[i].iov_base)[k];
306
306
  }
307
307
  }
@@ -862,7 +862,7 @@ class GrpcPolledFdFactoryWindows : public GrpcPolledFdFactory {
862
862
  explicit GrpcPolledFdFactoryWindows(Mutex* mu) : sock_to_polled_fd_map_(mu) {}
863
863
 
864
864
  GrpcPolledFd* NewGrpcPolledFdLocked(
865
- ares_socket_t as, grpc_pollset_set* driver_pollset_set) override {
865
+ ares_socket_t as, grpc_pollset_set* /* driver_pollset_set */) override {
866
866
  GrpcPolledFdWindows* polled_fd = sock_to_polled_fd_map_.LookupPolledFd(as);
867
867
  // Set a flag so that the virtual socket "close" method knows it
868
868
  // doesn't need to call ShutdownLocked, since now the driver will.