grpc 1.55.0 → 1.56.0.pre3

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 (374) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +100 -68
  3. data/include/grpc/event_engine/event_engine.h +4 -3
  4. data/include/grpc/grpc_audit_logging.h +96 -0
  5. data/include/grpc/module.modulemap +2 -0
  6. data/include/grpc/support/json.h +218 -0
  7. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
  8. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
  9. data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
  10. data/src/core/ext/filters/client_channel/client_channel.cc +86 -104
  11. data/src/core/ext/filters/client_channel/client_channel.h +6 -0
  12. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
  13. data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
  14. data/src/core/ext/filters/client_channel/config_selector.h +9 -24
  15. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
  17. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
  18. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
  19. data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
  20. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
  21. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +52 -20
  22. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
  23. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
  24. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
  25. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
  26. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
  28. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
  29. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
  30. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
  31. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +32 -39
  32. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
  40. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
  41. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
  42. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
  43. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
  44. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
  45. data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
  46. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
  47. data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
  48. data/src/core/ext/filters/client_channel/subchannel.h +3 -43
  49. data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
  50. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
  51. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
  52. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
  53. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
  54. data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
  55. data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
  56. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
  57. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
  58. data/src/core/ext/xds/certificate_provider_store.cc +4 -9
  59. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  60. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
  61. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
  62. data/src/core/ext/xds/xds_api.cc +9 -6
  63. data/src/core/ext/xds/xds_api.h +3 -2
  64. data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
  65. data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
  66. data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
  67. data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
  68. data/src/core/ext/xds/xds_client.cc +5 -4
  69. data/src/core/ext/xds/xds_client_stats.h +1 -1
  70. data/src/core/ext/xds/xds_cluster.cc +20 -19
  71. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
  72. data/src/core/ext/xds/xds_common_types.cc +3 -1
  73. data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
  74. data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
  75. data/src/core/ext/xds/xds_http_filters.h +4 -2
  76. data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
  77. data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
  78. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
  79. data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
  80. data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
  81. data/src/core/ext/xds/xds_listener.cc +1 -0
  82. data/src/core/ext/xds/xds_route_config.cc +40 -3
  83. data/src/core/ext/xds/xds_routing.cc +2 -2
  84. data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
  85. data/src/core/lib/avl/avl.h +5 -0
  86. data/src/core/lib/channel/channel_args.cc +80 -22
  87. data/src/core/lib/channel/channel_args.h +34 -1
  88. data/src/core/lib/channel/channel_trace.cc +16 -12
  89. data/src/core/lib/channel/channelz.cc +159 -132
  90. data/src/core/lib/channel/channelz.h +42 -35
  91. data/src/core/lib/channel/channelz_registry.cc +23 -20
  92. data/src/core/lib/channel/connected_channel.cc +17 -6
  93. data/src/core/lib/channel/promise_based_filter.cc +0 -4
  94. data/src/core/lib/channel/promise_based_filter.h +2 -0
  95. data/src/core/lib/compression/compression_internal.cc +2 -5
  96. data/src/core/lib/config/config_vars.cc +20 -18
  97. data/src/core/lib/config/config_vars.h +4 -4
  98. data/src/core/lib/config/load_config.cc +13 -0
  99. data/src/core/lib/config/load_config.h +6 -0
  100. data/src/core/lib/debug/event_log.h +1 -1
  101. data/src/core/lib/debug/stats_data.h +1 -1
  102. data/src/core/lib/debug/trace.cc +24 -55
  103. data/src/core/lib/debug/trace.h +3 -1
  104. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
  105. data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
  106. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
  107. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
  108. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
  109. data/src/core/lib/event_engine/default_event_engine.cc +13 -1
  110. data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
  111. data/src/core/lib/event_engine/poller.h +2 -2
  112. data/src/core/lib/event_engine/posix.h +4 -0
  113. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
  114. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
  115. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
  116. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -19
  117. data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -1
  118. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -4
  119. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -8
  120. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
  121. data/src/core/lib/event_engine/shim.cc +7 -1
  122. data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
  123. data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
  124. data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
  125. data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
  126. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
  127. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
  128. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
  129. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
  130. data/src/core/lib/event_engine/windows/iocp.cc +4 -3
  131. data/src/core/lib/event_engine/windows/iocp.h +3 -3
  132. data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
  133. data/src/core/lib/event_engine/windows/win_socket.h +4 -4
  134. data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
  135. data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
  136. data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
  137. data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
  138. data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
  139. data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
  140. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
  141. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
  142. data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
  143. data/src/core/lib/experiments/config.cc +38 -7
  144. data/src/core/lib/experiments/config.h +16 -0
  145. data/src/core/lib/experiments/experiments.cc +67 -20
  146. data/src/core/lib/experiments/experiments.h +27 -21
  147. data/src/core/lib/gpr/log_internal.h +55 -0
  148. data/src/core/lib/gprpp/crash.cc +10 -0
  149. data/src/core/lib/gprpp/crash.h +3 -0
  150. data/src/core/lib/gprpp/per_cpu.cc +33 -0
  151. data/src/core/lib/gprpp/per_cpu.h +29 -6
  152. data/src/core/lib/gprpp/time.cc +1 -0
  153. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  154. data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
  155. data/src/core/lib/iomgr/ev_apple.cc +12 -12
  156. data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
  157. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
  158. data/src/core/lib/iomgr/iocp_windows.cc +24 -3
  159. data/src/core/lib/iomgr/iocp_windows.h +11 -0
  160. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
  161. data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
  162. data/src/core/lib/iomgr/socket_windows.cc +61 -7
  163. data/src/core/lib/iomgr/socket_windows.h +9 -2
  164. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
  165. data/src/core/lib/iomgr/tcp_server_posix.cc +148 -107
  166. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  167. data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
  168. data/src/core/lib/json/json.h +2 -166
  169. data/src/core/lib/json/json_object_loader.cc +8 -9
  170. data/src/core/lib/json/json_object_loader.h +25 -18
  171. data/src/core/lib/json/json_reader.cc +13 -6
  172. data/src/core/lib/json/json_util.cc +6 -11
  173. data/src/core/lib/json/json_writer.cc +7 -8
  174. data/src/core/lib/load_balancing/lb_policy.h +13 -0
  175. data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
  176. data/src/core/lib/matchers/matchers.cc +3 -4
  177. data/src/core/lib/matchers/matchers.h +2 -1
  178. data/src/core/lib/promise/activity.cc +5 -0
  179. data/src/core/lib/promise/activity.h +10 -0
  180. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  181. data/src/core/lib/promise/party.cc +31 -13
  182. data/src/core/lib/promise/party.h +11 -2
  183. data/src/core/lib/promise/pipe.h +9 -2
  184. data/src/core/lib/promise/prioritized_race.h +95 -0
  185. data/src/core/lib/promise/sleep.cc +2 -1
  186. data/src/core/lib/resolver/server_address.cc +0 -8
  187. data/src/core/lib/resolver/server_address.h +0 -6
  188. data/src/core/lib/resource_quota/memory_quota.cc +7 -7
  189. data/src/core/lib/resource_quota/memory_quota.h +1 -2
  190. data/src/core/lib/security/authorization/audit_logging.cc +98 -0
  191. data/src/core/lib/security/authorization/audit_logging.h +73 -0
  192. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
  193. data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
  194. data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
  195. data/src/core/lib/security/authorization/rbac_policy.h +19 -2
  196. data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
  197. data/src/core/lib/security/authorization/stdout_logger.h +61 -0
  198. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
  199. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
  200. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
  201. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
  202. data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
  203. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
  204. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
  205. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
  206. data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
  207. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
  208. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
  209. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
  210. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
  211. data/src/core/lib/security/util/json_util.cc +1 -0
  212. data/src/core/lib/service_config/service_config_call_data.h +49 -20
  213. data/src/core/lib/service_config/service_config_impl.cc +2 -1
  214. data/src/core/lib/surface/call.cc +38 -23
  215. data/src/core/lib/surface/completion_queue.cc +6 -2
  216. data/src/core/lib/surface/version.cc +2 -2
  217. data/src/core/lib/transport/batch_builder.cc +15 -12
  218. data/src/core/lib/transport/batch_builder.h +39 -35
  219. data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
  220. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  221. data/src/ruby/ext/grpc/extconf.rb +8 -9
  222. data/src/ruby/lib/grpc/version.rb +1 -1
  223. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
  224. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
  225. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
  226. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
  227. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
  228. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
  229. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
  230. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
  231. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
  232. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
  233. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
  234. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
  235. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
  236. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
  237. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
  238. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
  239. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
  240. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
  241. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
  242. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
  243. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
  244. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
  245. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
  246. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  247. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
  248. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
  249. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
  250. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
  251. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
  252. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
  253. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
  254. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
  255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
  256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
  257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
  258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
  259. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
  260. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
  261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
  262. data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
  263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
  264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
  265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
  266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
  267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
  268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
  269. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
  270. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
  271. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
  272. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
  273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
  274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
  275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
  276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
  277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
  278. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
  279. data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
  280. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
  281. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
  282. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
  283. data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
  284. data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
  285. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
  286. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
  287. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
  288. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
  289. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
  290. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
  291. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
  292. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
  293. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
  294. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
  295. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
  296. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
  297. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
  298. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
  299. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  300. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
  301. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
  302. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
  303. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
  304. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
  305. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
  306. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
  307. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
  308. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
  309. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
  310. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
  311. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
  312. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
  313. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
  314. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
  315. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
  316. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
  317. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
  318. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
  319. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
  320. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
  321. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  322. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
  323. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
  324. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
  325. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
  326. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
  327. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
  328. data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
  329. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
  330. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
  331. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
  332. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
  333. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
  334. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
  335. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
  336. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
  337. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
  338. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
  339. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
  340. data/third_party/cares/cares/include/ares.h +23 -1
  341. data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
  342. data/third_party/cares/cares/include/ares_rules.h +2 -2
  343. data/third_party/cares/cares/include/ares_version.h +3 -3
  344. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
  345. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
  346. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
  347. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
  348. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
  349. data/third_party/cares/cares/src/lib/ares_data.c +16 -0
  350. data/third_party/cares/cares/src/lib/ares_data.h +7 -0
  351. data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
  352. data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
  353. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
  354. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
  355. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
  356. data/third_party/cares/cares/src/lib/ares_init.c +97 -485
  357. data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
  358. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
  359. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
  360. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
  361. data/third_party/cares/cares/src/lib/ares_private.h +30 -16
  362. data/third_party/cares/cares/src/lib/ares_process.c +55 -16
  363. data/third_party/cares/cares/src/lib/ares_query.c +1 -35
  364. data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
  365. data/third_party/cares/cares/src/lib/ares_send.c +5 -7
  366. data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
  367. data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
  368. data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
  369. data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
  370. data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
  371. metadata +50 -14
  372. data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
  373. data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
  374. data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -27,6 +27,7 @@
27
27
  #include <vector>
28
28
 
29
29
  #include <grpc/grpc.h>
30
+ #include <grpc/support/json.h>
30
31
  #include <grpc/support/log.h>
31
32
  #include <grpc/support/string_util.h>
32
33
 
@@ -108,11 +109,12 @@ std::string ChannelzRegistry::InternalGetTopChannels(
108
109
  for (size_t i = 0; i < top_level_channels.size(); ++i) {
109
110
  array.emplace_back(top_level_channels[i]->RenderJson());
110
111
  }
111
- object["channel"] = std::move(array);
112
+ object["channel"] = Json::FromArray(std::move(array));
112
113
  }
113
- if (node_after_pagination_limit == nullptr) object["end"] = true;
114
- Json json(std::move(object));
115
- return JsonDump(json);
114
+ if (node_after_pagination_limit == nullptr) {
115
+ object["end"] = Json::FromBool(true);
116
+ }
117
+ return JsonDump(Json::FromObject(std::move(object)));
116
118
  }
117
119
 
118
120
  std::string ChannelzRegistry::InternalGetServers(intptr_t start_server_id) {
@@ -147,11 +149,12 @@ std::string ChannelzRegistry::InternalGetServers(intptr_t start_server_id) {
147
149
  for (size_t i = 0; i < servers.size(); ++i) {
148
150
  array.emplace_back(servers[i]->RenderJson());
149
151
  }
150
- object["server"] = std::move(array);
152
+ object["server"] = Json::FromArray(std::move(array));
153
+ }
154
+ if (node_after_pagination_limit == nullptr) {
155
+ object["end"] = Json::FromBool(true);
151
156
  }
152
- if (node_after_pagination_limit == nullptr) object["end"] = true;
153
- Json json(std::move(object));
154
- return JsonDump(json);
157
+ return JsonDump(Json::FromObject(std::move(object)));
155
158
  }
156
159
 
157
160
  void ChannelzRegistry::InternalLogAllEntities() {
@@ -200,10 +203,10 @@ char* grpc_channelz_get_server(intptr_t server_id) {
200
203
  grpc_core::channelz::BaseNode::EntityType::kServer) {
201
204
  return nullptr;
202
205
  }
203
- grpc_core::Json json = grpc_core::Json::Object{
206
+ grpc_core::Json json = grpc_core::Json::FromObject({
204
207
  {"server", server_node->RenderJson()},
205
- };
206
- return gpr_strdup(JsonDump(json).c_str());
208
+ });
209
+ return gpr_strdup(grpc_core::JsonDump(json).c_str());
207
210
  }
208
211
 
209
212
  char* grpc_channelz_get_server_sockets(intptr_t server_id,
@@ -239,10 +242,10 @@ char* grpc_channelz_get_channel(intptr_t channel_id) {
239
242
  grpc_core::channelz::BaseNode::EntityType::kInternalChannel)) {
240
243
  return nullptr;
241
244
  }
242
- grpc_core::Json json = grpc_core::Json::Object{
245
+ grpc_core::Json json = grpc_core::Json::FromObject({
243
246
  {"channel", channel_node->RenderJson()},
244
- };
245
- return gpr_strdup(JsonDump(json).c_str());
247
+ });
248
+ return gpr_strdup(grpc_core::JsonDump(json).c_str());
246
249
  }
247
250
 
248
251
  char* grpc_channelz_get_subchannel(intptr_t subchannel_id) {
@@ -255,10 +258,10 @@ char* grpc_channelz_get_subchannel(intptr_t subchannel_id) {
255
258
  grpc_core::channelz::BaseNode::EntityType::kSubchannel) {
256
259
  return nullptr;
257
260
  }
258
- grpc_core::Json json = grpc_core::Json::Object{
261
+ grpc_core::Json json = grpc_core::Json::FromObject({
259
262
  {"subchannel", subchannel_node->RenderJson()},
260
- };
261
- return gpr_strdup(JsonDump(json).c_str());
263
+ });
264
+ return gpr_strdup(grpc_core::JsonDump(json).c_str());
262
265
  }
263
266
 
264
267
  char* grpc_channelz_get_socket(intptr_t socket_id) {
@@ -271,8 +274,8 @@ char* grpc_channelz_get_socket(intptr_t socket_id) {
271
274
  grpc_core::channelz::BaseNode::EntityType::kSocket) {
272
275
  return nullptr;
273
276
  }
274
- grpc_core::Json json = grpc_core::Json::Object{
277
+ grpc_core::Json json = grpc_core::Json::FromObject({
275
278
  {"socket", socket_node->RenderJson()},
276
- };
277
- return gpr_strdup(JsonDump(json).c_str());
279
+ });
280
+ return gpr_strdup(grpc_core::JsonDump(json).c_str());
278
281
  }
@@ -710,13 +710,16 @@ ArenaPromise<ServerMetadataHandle> MakeServerCallPromise(
710
710
 
711
711
  // Promise factory that accepts a ServerMetadataHandle, and sends it as the
712
712
  // trailing metadata for this call.
713
- auto send_trailing_metadata =
714
- [call_data, stream = stream->InternalRef()](
715
- ServerMetadataHandle server_trailing_metadata) {
716
- return GetContext<BatchBuilder>()->SendServerTrailingMetadata(
717
- stream->batch_target(), std::move(server_trailing_metadata),
713
+ auto send_trailing_metadata = [call_data, stream = stream->InternalRef()](
714
+ ServerMetadataHandle
715
+ server_trailing_metadata) {
716
+ bool is_cancellation =
717
+ server_trailing_metadata->get(GrpcCallWasCancelled()).value_or(false);
718
+ return GetContext<BatchBuilder>()->SendServerTrailingMetadata(
719
+ stream->batch_target(), std::move(server_trailing_metadata),
720
+ is_cancellation ||
718
721
  !std::exchange(call_data->sent_initial_metadata, true));
719
- };
722
+ };
720
723
 
721
724
  // Runs the receive message loop, either until all the messages
722
725
  // are received or the server call is complete.
@@ -821,11 +824,19 @@ ArenaPromise<ServerMetadataHandle> MakeServerCallPromise(
821
824
  auto cleanup_polling_entity_latch =
822
825
  std::unique_ptr<Latch<grpc_polling_entity>, CleanupPollingEntityLatch>(
823
826
  &call_data->polling_entity_latch);
827
+ struct CleanupSendInitialMetadata {
828
+ void operator()(CallData* call_data) {
829
+ call_data->server_initial_metadata.receiver.CloseWithError();
830
+ }
831
+ };
832
+ auto cleanup_send_initial_metadata =
833
+ std::unique_ptr<CallData, CleanupSendInitialMetadata>(call_data);
824
834
 
825
835
  return Map(
826
836
  Seq(std::move(recv_initial_metadata_then_run_promise),
827
837
  std::move(send_trailing_metadata)),
828
838
  [cleanup_polling_entity_latch = std::move(cleanup_polling_entity_latch),
839
+ cleanup_send_initial_metadata = std::move(cleanup_send_initial_metadata),
829
840
  stream = std::move(stream)](ServerMetadataHandle md) {
830
841
  stream->set_finished();
831
842
  return md;
@@ -245,10 +245,6 @@ void BaseCallData::CapturedBatch::CancelWith(grpc_error_handle error,
245
245
  uintptr_t& refcnt = *RefCountField(batch);
246
246
  if (refcnt == 0) {
247
247
  // refcnt==0 ==> cancelled
248
- if (grpc_trace_channel.enabled()) {
249
- gpr_log(GPR_INFO, "%sCANCEL BATCH REQUEST ALREADY CANCELLED",
250
- Activity::current()->DebugTag().c_str());
251
- }
252
248
  return;
253
249
  }
254
250
  refcnt = 0;
@@ -48,6 +48,7 @@
48
48
  #include "src/core/lib/channel/channel_stack.h"
49
49
  #include "src/core/lib/channel/context.h"
50
50
  #include "src/core/lib/event_engine/default_event_engine.h" // IWYU pragma: keep
51
+ #include "src/core/lib/gprpp/crash.h"
51
52
  #include "src/core/lib/gprpp/debug_location.h"
52
53
  #include "src/core/lib/gprpp/time.h"
53
54
  #include "src/core/lib/iomgr/call_combiner.h"
@@ -546,6 +547,7 @@ class BaseCallData : public Activity, private Wakeable {
546
547
  private:
547
548
  // Wakeable implementation.
548
549
  void Wakeup(WakeupMask) final;
550
+ void WakeupAsync(WakeupMask) final { Crash("not implemented"); }
549
551
  void Drop(WakeupMask) final;
550
552
 
551
553
  virtual void OnWakeup() = 0;
@@ -22,13 +22,10 @@
22
22
 
23
23
  #include <stdlib.h>
24
24
 
25
- #include <string>
26
-
27
25
  #include "absl/container/inlined_vector.h"
28
26
  #include "absl/strings/ascii.h"
29
27
  #include "absl/strings/str_format.h"
30
28
  #include "absl/strings/str_split.h"
31
- #include "absl/types/variant.h"
32
29
 
33
30
  #include <grpc/support/log.h>
34
31
 
@@ -230,10 +227,10 @@ absl::optional<grpc_compression_algorithm>
230
227
  DefaultCompressionAlgorithmFromChannelArgs(const ChannelArgs& args) {
231
228
  auto* value = args.Get(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM);
232
229
  if (value == nullptr) return absl::nullopt;
233
- if (auto* p = absl::get_if<int>(value)) {
230
+ if (auto* p = value->GetIfInt()) {
234
231
  return static_cast<grpc_compression_algorithm>(*p);
235
232
  }
236
- if (auto* p = absl::get_if<std::string>(value)) {
233
+ if (auto* p = value->GetIfString()) {
237
234
  return ParseCompressionAlgorithm(*p);
238
235
  }
239
236
  return absl::nullopt;
@@ -20,6 +20,9 @@
20
20
 
21
21
  #include "src/core/lib/config/config_vars.h"
22
22
 
23
+ #include <algorithm>
24
+ #include <vector>
25
+
23
26
  #include "absl/flags/flag.h"
24
27
  #include "absl/strings/escaping.h"
25
28
  #include "absl/strings/str_cat.h"
@@ -36,46 +39,45 @@
36
39
  #define GRPC_ENABLE_FORK_SUPPORT_DEFAULT false
37
40
  #endif // GRPC_ENABLE_FORK_SUPPORT
38
41
 
39
- ABSL_FLAG(absl::optional<std::string>, grpc_experiments, absl::nullopt,
42
+ ABSL_FLAG(std::vector<std::string>, grpc_experiments, {},
40
43
  "A comma separated list of currently active experiments. Experiments "
41
44
  "may be prefixed with a '-' to disable them.");
42
45
  ABSL_FLAG(absl::optional<int32_t>, grpc_client_channel_backup_poll_interval_ms,
43
- absl::nullopt,
46
+ {},
44
47
  "Declares the interval in ms between two backup polls on client "
45
48
  "channels. These polls are run in the timer thread so that gRPC can "
46
49
  "process connection failures while there is no active polling "
47
50
  "thread. They help reconnect disconnected client channels (mostly "
48
51
  "due to idleness), so that the next RPC on this channel won't fail. "
49
52
  "Set to 0 to turn off the backup polls.");
50
- ABSL_FLAG(absl::optional<std::string>, grpc_dns_resolver, absl::nullopt,
53
+ ABSL_FLAG(absl::optional<std::string>, grpc_dns_resolver, {},
51
54
  "Declares which DNS resolver to use. The default is ares if gRPC is "
52
55
  "built with c-ares support. Otherwise, the value of this environment "
53
56
  "variable is ignored.");
54
- ABSL_FLAG(absl::optional<std::string>, grpc_trace, absl::nullopt,
57
+ ABSL_FLAG(std::vector<std::string>, grpc_trace, {},
55
58
  "A comma separated list of tracers that provide additional insight "
56
59
  "into how gRPC C core is processing requests via debug logs.");
57
- ABSL_FLAG(absl::optional<std::string>, grpc_verbosity, absl::nullopt,
60
+ ABSL_FLAG(absl::optional<std::string>, grpc_verbosity, {},
58
61
  "Default gRPC logging verbosity");
59
- ABSL_FLAG(absl::optional<std::string>, grpc_stacktrace_minloglevel,
60
- absl::nullopt,
62
+ ABSL_FLAG(absl::optional<std::string>, grpc_stacktrace_minloglevel, {},
61
63
  "Messages logged at the same or higher level than this will print "
62
64
  "stacktrace");
63
- ABSL_FLAG(absl::optional<bool>, grpc_enable_fork_support, absl::nullopt,
65
+ ABSL_FLAG(absl::optional<bool>, grpc_enable_fork_support, {},
64
66
  "Enable fork support");
65
- ABSL_FLAG(absl::optional<std::string>, grpc_poll_strategy, absl::nullopt,
67
+ ABSL_FLAG(absl::optional<std::string>, grpc_poll_strategy, {},
66
68
  "Declares which polling engines to try when starting gRPC. This is a "
67
69
  "comma-separated list of engines, which are tried in priority order "
68
70
  "first -> last.");
69
- ABSL_FLAG(absl::optional<bool>, grpc_abort_on_leaks, absl::nullopt,
71
+ ABSL_FLAG(absl::optional<bool>, grpc_abort_on_leaks, {},
70
72
  "A debugging aid to cause a call to abort() when gRPC objects are "
71
73
  "leaked past grpc_shutdown()");
72
- ABSL_FLAG(absl::optional<std::string>, grpc_system_ssl_roots_dir, absl::nullopt,
74
+ ABSL_FLAG(absl::optional<std::string>, grpc_system_ssl_roots_dir, {},
73
75
  "Custom directory to SSL Roots");
74
- ABSL_FLAG(absl::optional<std::string>, grpc_default_ssl_roots_file_path,
75
- absl::nullopt, "Path to the default SSL roots file.");
76
- ABSL_FLAG(absl::optional<bool>, grpc_not_use_system_ssl_roots, absl::nullopt,
76
+ ABSL_FLAG(absl::optional<std::string>, grpc_default_ssl_roots_file_path, {},
77
+ "Path to the default SSL roots file.");
78
+ ABSL_FLAG(absl::optional<bool>, grpc_not_use_system_ssl_roots, {},
77
79
  "Disable loading system root certificates.");
78
- ABSL_FLAG(absl::optional<std::string>, grpc_ssl_cipher_suites, absl::nullopt,
80
+ ABSL_FLAG(absl::optional<std::string>, grpc_ssl_cipher_suites, {},
79
81
  "A colon separated list of cipher suites to use with OpenSSL");
80
82
 
81
83
  namespace grpc_core {
@@ -94,11 +96,8 @@ ConfigVars::ConfigVars(const Overrides& overrides)
94
96
  not_use_system_ssl_roots_(LoadConfig(
95
97
  FLAGS_grpc_not_use_system_ssl_roots, "GRPC_NOT_USE_SYSTEM_SSL_ROOTS",
96
98
  overrides.not_use_system_ssl_roots, false)),
97
- experiments_(LoadConfig(FLAGS_grpc_experiments, "GRPC_EXPERIMENTS",
98
- overrides.experiments, "")),
99
99
  dns_resolver_(LoadConfig(FLAGS_grpc_dns_resolver, "GRPC_DNS_RESOLVER",
100
100
  overrides.dns_resolver, "")),
101
- trace_(LoadConfig(FLAGS_grpc_trace, "GRPC_TRACE", overrides.trace, "")),
102
101
  verbosity_(LoadConfig(FLAGS_grpc_verbosity, "GRPC_VERBOSITY",
103
102
  overrides.verbosity,
104
103
  GPR_DEFAULT_LOG_VERBOSITY_STRING)),
@@ -113,6 +112,9 @@ ConfigVars::ConfigVars(const Overrides& overrides)
113
112
  "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_"
114
113
  "SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:"
115
114
  "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384")),
115
+ experiments_(LoadConfig(FLAGS_grpc_experiments, "GRPC_EXPERIMENTS",
116
+ overrides.experiments, "")),
117
+ trace_(LoadConfig(FLAGS_grpc_trace, "GRPC_TRACE", overrides.trace, "")),
116
118
  override_system_ssl_roots_dir_(overrides.system_ssl_roots_dir),
117
119
  override_default_ssl_roots_file_path_(
118
120
  overrides.default_ssl_roots_file_path) {}
@@ -38,15 +38,15 @@ class ConfigVars {
38
38
  absl::optional<bool> enable_fork_support;
39
39
  absl::optional<bool> abort_on_leaks;
40
40
  absl::optional<bool> not_use_system_ssl_roots;
41
- absl::optional<std::string> experiments;
42
41
  absl::optional<std::string> dns_resolver;
43
- absl::optional<std::string> trace;
44
42
  absl::optional<std::string> verbosity;
45
43
  absl::optional<std::string> stacktrace_minloglevel;
46
44
  absl::optional<std::string> poll_strategy;
47
45
  absl::optional<std::string> system_ssl_roots_dir;
48
46
  absl::optional<std::string> default_ssl_roots_file_path;
49
47
  absl::optional<std::string> ssl_cipher_suites;
48
+ absl::optional<std::string> experiments;
49
+ absl::optional<std::string> trace;
50
50
  };
51
51
  ConfigVars(const ConfigVars&) = delete;
52
52
  ConfigVars& operator=(const ConfigVars&) = delete;
@@ -111,13 +111,13 @@ class ConfigVars {
111
111
  bool enable_fork_support_;
112
112
  bool abort_on_leaks_;
113
113
  bool not_use_system_ssl_roots_;
114
- std::string experiments_;
115
114
  std::string dns_resolver_;
116
- std::string trace_;
117
115
  std::string verbosity_;
118
116
  std::string stacktrace_minloglevel_;
119
117
  std::string poll_strategy_;
120
118
  std::string ssl_cipher_suites_;
119
+ std::string experiments_;
120
+ std::string trace_;
121
121
  absl::optional<std::string> override_system_ssl_roots_dir_;
122
122
  absl::optional<std::string> override_default_ssl_roots_file_path_;
123
123
  };
@@ -20,8 +20,10 @@
20
20
 
21
21
  #include "absl/flags/marshalling.h"
22
22
  #include "absl/strings/numbers.h"
23
+ #include "absl/strings/str_join.h"
23
24
  #include "absl/types/optional.h"
24
25
 
26
+ #include "src/core/lib/gpr/log_internal.h"
25
27
  #include "src/core/lib/gprpp/env.h"
26
28
 
27
29
  namespace grpc_core {
@@ -34,6 +36,7 @@ absl::optional<std::string> LoadEnv(absl::string_view environment_variable) {
34
36
 
35
37
  std::string LoadConfigFromEnv(absl::string_view environment_variable,
36
38
  const char* default_value) {
39
+ GPR_ASSERT_INTERNAL(!environment_variable.empty());
37
40
  return LoadEnv(environment_variable).value_or(default_value);
38
41
  }
39
42
 
@@ -63,4 +66,14 @@ bool LoadConfigFromEnv(absl::string_view environment_variable,
63
66
  return default_value;
64
67
  }
65
68
 
69
+ std::string LoadConfig(const absl::Flag<std::vector<std::string>>& flag,
70
+ absl::string_view environment_variable,
71
+ const absl::optional<std::string>& override,
72
+ const char* default_value) {
73
+ if (override.has_value()) return *override;
74
+ auto from_flag = absl::GetFlag(flag);
75
+ if (!from_flag.empty()) return absl::StrJoin(from_flag, ",");
76
+ return LoadConfigFromEnv(environment_variable, default_value);
77
+ }
78
+
66
79
  } // namespace grpc_core
@@ -20,6 +20,7 @@
20
20
  #include <stdint.h>
21
21
 
22
22
  #include <string>
23
+ #include <vector>
23
24
 
24
25
  #include "absl/flags/flag.h"
25
26
  #include "absl/strings/string_view.h"
@@ -44,6 +45,11 @@ T LoadConfig(const absl::Flag<absl::optional<T>>& flag,
44
45
  return LoadConfigFromEnv(environment_variable, default_value);
45
46
  }
46
47
 
48
+ std::string LoadConfig(const absl::Flag<std::vector<std::string>>& flag,
49
+ absl::string_view environment_variable,
50
+ const absl::optional<std::string>& override,
51
+ const char* default_value);
52
+
47
53
  } // namespace grpc_core
48
54
 
49
55
  #endif // GRPC_SRC_CORE_LIB_CONFIG_LOAD_CONFIG_H
@@ -71,7 +71,7 @@ class EventLog {
71
71
  std::vector<Entry> EndCollection(
72
72
  absl::Span<const absl::string_view> wanted_events);
73
73
 
74
- PerCpu<Fragment> fragments_;
74
+ PerCpu<Fragment> fragments_{PerCpuOptions().SetCpusPerShard(2)};
75
75
  gpr_cycle_counter collection_begin_;
76
76
  static std::atomic<EventLog*> g_instance_;
77
77
  };
@@ -294,7 +294,7 @@ class GlobalStatsCollector {
294
294
  HistogramCollector_16777216_20 http2_send_message_size;
295
295
  HistogramCollector_65536_26 http2_metadata_size;
296
296
  };
297
- PerCpu<Data> data_;
297
+ PerCpu<Data> data_{PerCpuOptions().SetCpusPerShard(4).SetMaxShards(32)};
298
298
  };
299
299
  } // namespace grpc_core
300
300
 
@@ -20,16 +20,16 @@
20
20
 
21
21
  #include "src/core/lib/debug/trace.h"
22
22
 
23
- #include <string.h>
24
-
25
23
  #include <string>
26
24
  #include <type_traits>
27
25
  #include <utility>
28
26
 
27
+ #include "absl/strings/ascii.h"
28
+ #include "absl/strings/match.h"
29
+ #include "absl/strings/str_split.h"
29
30
  #include "absl/strings/string_view.h"
30
31
 
31
32
  #include <grpc/grpc.h>
32
- #include <grpc/support/alloc.h>
33
33
  #include <grpc/support/log.h>
34
34
 
35
35
  #include "src/core/lib/config/config_vars.h"
@@ -40,31 +40,31 @@ namespace grpc_core {
40
40
 
41
41
  TraceFlag* TraceFlagList::root_tracer_ = nullptr;
42
42
 
43
- bool TraceFlagList::Set(const char* name, bool enabled) {
43
+ bool TraceFlagList::Set(absl::string_view name, bool enabled) {
44
44
  TraceFlag* t;
45
- if (0 == strcmp(name, "all")) {
45
+ if (name == "all") {
46
46
  for (t = root_tracer_; t; t = t->next_tracer_) {
47
47
  t->set_enabled(enabled);
48
48
  }
49
- } else if (0 == strcmp(name, "list_tracers")) {
49
+ } else if (name == "list_tracers") {
50
50
  LogAllTracers();
51
- } else if (0 == strcmp(name, "refcount")) {
51
+ } else if (name == "refcount") {
52
52
  for (t = root_tracer_; t; t = t->next_tracer_) {
53
- if (strstr(t->name_, "refcount") != nullptr) {
53
+ if (absl::StrContains(t->name_, "refcount")) {
54
54
  t->set_enabled(enabled);
55
55
  }
56
56
  }
57
57
  } else {
58
58
  bool found = false;
59
59
  for (t = root_tracer_; t; t = t->next_tracer_) {
60
- if (0 == strcmp(name, t->name_)) {
60
+ if (name == t->name_) {
61
61
  t->set_enabled(enabled);
62
62
  found = true;
63
63
  }
64
64
  }
65
65
  // check for unknowns, but ignore "", to allow to GRPC_TRACE=
66
- if (!found && 0 != strcmp(name, "")) {
67
- gpr_log(GPR_ERROR, "Unknown trace var: '%s'", name);
66
+ if (!found && !name.empty()) {
67
+ gpr_log(GPR_ERROR, "Unknown trace var: '%s'", std::string(name).c_str());
68
68
  return false; // early return
69
69
  }
70
70
  }
@@ -101,59 +101,28 @@ SavedTraceFlags::SavedTraceFlags() { TraceFlagList::SaveTo(values_); }
101
101
 
102
102
  void SavedTraceFlags::Restore() {
103
103
  for (const auto& flag : values_) {
104
- TraceFlagList::Set(flag.first.c_str(), flag.second);
105
- }
106
- }
107
-
108
- } // namespace grpc_core
109
-
110
- static void add(const char* beg, const char* end, char*** ss, size_t* ns) {
111
- size_t n = *ns;
112
- size_t np = n + 1;
113
- char* s;
114
- size_t len;
115
- GPR_ASSERT(end >= beg);
116
- len = static_cast<size_t>(end - beg);
117
- s = static_cast<char*>(gpr_malloc(len + 1));
118
- memcpy(s, beg, len);
119
- s[len] = 0;
120
- *ss = static_cast<char**>(gpr_realloc(*ss, sizeof(char**) * np));
121
- (*ss)[n] = s;
122
- *ns = np;
123
- }
124
-
125
- static void split(const char* s, char*** ss, size_t* ns) {
126
- const char* c = strchr(s, ',');
127
- if (c == nullptr) {
128
- add(s, s + strlen(s), ss, ns);
129
- } else {
130
- add(s, c, ss, ns);
131
- split(c + 1, ss, ns);
104
+ TraceFlagList::Set(flag.first, flag.second);
132
105
  }
133
106
  }
134
107
 
135
- static void parse(const char* s) {
136
- char** strings = nullptr;
137
- size_t nstrings = 0;
138
- size_t i;
139
- split(s, &strings, &nstrings);
140
-
141
- for (i = 0; i < nstrings; i++) {
142
- if (strings[i][0] == '-') {
143
- grpc_core::TraceFlagList::Set(strings[i] + 1, false);
108
+ namespace {
109
+ void ParseTracers(absl::string_view tracers) {
110
+ for (auto s : absl::StrSplit(tracers, ',')) {
111
+ s = absl::StripAsciiWhitespace(s);
112
+ if (s.empty()) continue;
113
+ if (s[0] == '-') {
114
+ TraceFlagList::Set(s.substr(1), false);
144
115
  } else {
145
- grpc_core::TraceFlagList::Set(strings[i], true);
116
+ TraceFlagList::Set(s, true);
146
117
  }
147
118
  }
148
-
149
- for (i = 0; i < nstrings; i++) {
150
- gpr_free(strings[i]);
151
- }
152
- gpr_free(strings);
153
119
  }
120
+ } // namespace
121
+
122
+ } // namespace grpc_core
154
123
 
155
124
  void grpc_tracer_init() {
156
- parse(std::string(grpc_core::ConfigVars::Get().Trace()).c_str());
125
+ grpc_core::ParseTracers(grpc_core::ConfigVars::Get().Trace());
157
126
  }
158
127
 
159
128
  int grpc_tracer_set_enabled(const char* name, int enabled) {
@@ -25,6 +25,8 @@
25
25
  #include <map>
26
26
  #include <string>
27
27
 
28
+ #include "absl/strings/string_view.h"
29
+
28
30
  void grpc_tracer_init();
29
31
  void grpc_tracer_shutdown(void);
30
32
 
@@ -33,7 +35,7 @@ namespace grpc_core {
33
35
  class TraceFlag;
34
36
  class TraceFlagList {
35
37
  public:
36
- static bool Set(const char* name, bool enabled);
38
+ static bool Set(absl::string_view name, bool enabled);
37
39
  static void Add(TraceFlag* flag);
38
40
  static void SaveTo(std::map<std::string, bool>& values);
39
41