grpc 1.49.1 → 1.50.0.pre1

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 (270) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +54 -153
  3. data/include/grpc/event_engine/endpoint_config.h +11 -5
  4. data/include/grpc/event_engine/event_engine.h +1 -1
  5. data/include/grpc/impl/codegen/atm_gcc_atomic.h +19 -28
  6. data/include/grpc/impl/codegen/atm_gcc_sync.h +0 -2
  7. data/include/grpc/impl/codegen/atm_windows.h +0 -2
  8. data/include/grpc/impl/codegen/grpc_types.h +6 -0
  9. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +3 -3
  10. data/src/core/ext/filters/client_channel/backup_poller.cc +4 -6
  11. data/src/core/ext/filters/client_channel/client_channel.cc +33 -22
  12. data/src/core/ext/filters/client_channel/client_channel.h +1 -1
  13. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +0 -16
  14. data/src/core/ext/filters/client_channel/http_proxy.cc +12 -19
  15. data/src/core/ext/filters/client_channel/http_proxy.h +3 -2
  16. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -4
  17. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -4
  18. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +0 -2
  19. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +112 -96
  20. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +20 -11
  21. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +106 -108
  22. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +16 -0
  23. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +20 -13
  24. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +165 -257
  25. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +218 -231
  26. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -6
  27. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +389 -444
  28. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +16 -16
  29. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +8 -13
  30. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +84 -96
  31. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +38 -37
  32. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +106 -186
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +106 -93
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +170 -218
  35. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +2 -2
  36. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
  37. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -15
  38. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +84 -37
  39. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +11 -0
  40. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -0
  41. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +5 -3
  42. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +5 -4
  43. data/src/core/ext/filters/client_channel/retry_filter.cc +25 -29
  44. data/src/core/ext/filters/client_channel/subchannel.cc +38 -33
  45. data/src/core/ext/filters/client_channel/subchannel.h +12 -3
  46. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +1 -2
  47. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +23 -16
  48. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -0
  49. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -2
  50. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +2 -4
  51. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -2
  52. data/src/core/ext/filters/http/server/http_server_filter.cc +1 -2
  53. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +12 -8
  54. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +32 -26
  55. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -1
  56. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +25 -130
  57. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +287 -0
  58. data/src/core/ext/transport/chttp2/transport/decode_huff.h +1018 -0
  59. data/src/core/ext/transport/chttp2/transport/flow_control.cc +83 -51
  60. data/src/core/ext/transport/chttp2/transport/flow_control.h +11 -6
  61. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -2
  62. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -20
  63. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +28 -28
  64. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -10
  65. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +11 -6
  66. data/src/core/ext/transport/chttp2/transport/internal.h +2 -0
  67. data/src/core/ext/transport/chttp2/transport/parsing.cc +44 -0
  68. data/src/core/ext/transport/chttp2/transport/writing.cc +3 -14
  69. data/src/core/ext/transport/inproc/inproc_transport.cc +1 -3
  70. data/src/core/ext/xds/certificate_provider_store.cc +63 -3
  71. data/src/core/ext/xds/certificate_provider_store.h +9 -1
  72. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +5 -5
  73. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -1
  74. data/src/core/ext/xds/xds_api.cc +21 -17
  75. data/src/core/ext/xds/xds_api.h +7 -0
  76. data/src/core/ext/xds/xds_bootstrap.cc +5 -537
  77. data/src/core/ext/xds/xds_bootstrap.h +39 -111
  78. data/src/core/ext/xds/xds_bootstrap_grpc.cc +370 -0
  79. data/src/core/ext/xds/xds_bootstrap_grpc.h +169 -0
  80. data/src/core/ext/xds/xds_client.cc +219 -145
  81. data/src/core/ext/xds/xds_client.h +19 -17
  82. data/src/core/ext/xds/xds_client_grpc.cc +18 -80
  83. data/src/core/ext/xds/xds_client_grpc.h +2 -25
  84. data/src/core/ext/xds/xds_client_stats.cc +4 -4
  85. data/src/core/ext/xds/xds_cluster.cc +87 -79
  86. data/src/core/ext/xds/xds_cluster.h +5 -5
  87. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +3 -1
  88. data/src/core/ext/xds/xds_common_types.cc +13 -5
  89. data/src/core/ext/xds/xds_endpoint.cc +8 -6
  90. data/src/core/ext/xds/xds_endpoint.h +3 -4
  91. data/src/core/ext/xds/xds_lb_policy_registry.cc +4 -2
  92. data/src/core/ext/xds/xds_listener.cc +25 -20
  93. data/src/core/ext/xds/xds_listener.h +3 -4
  94. data/src/core/ext/xds/xds_resource_type.h +11 -8
  95. data/src/core/ext/xds/xds_route_config.cc +15 -16
  96. data/src/core/ext/xds/xds_route_config.h +3 -3
  97. data/src/core/ext/xds/xds_server_config_fetcher.cc +7 -5
  98. data/src/core/ext/xds/xds_transport_grpc.cc +15 -7
  99. data/src/core/lib/backoff/backoff.cc +2 -4
  100. data/src/core/lib/channel/call_finalization.h +1 -3
  101. data/src/core/lib/channel/channel_args.h +114 -14
  102. data/src/core/lib/channel/channel_trace.cc +3 -4
  103. data/src/core/lib/channel/promise_based_filter.cc +18 -19
  104. data/src/core/lib/channel/status_util.cc +27 -0
  105. data/src/core/lib/channel/status_util.h +10 -0
  106. data/src/core/lib/config/core_configuration.cc +5 -1
  107. data/src/core/lib/config/core_configuration.h +33 -0
  108. data/src/core/lib/debug/stats.cc +26 -30
  109. data/src/core/lib/debug/stats.h +2 -12
  110. data/src/core/lib/debug/stats_data.cc +118 -614
  111. data/src/core/lib/debug/stats_data.h +67 -465
  112. data/src/core/lib/debug/trace.cc +0 -2
  113. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +12 -20
  114. data/src/core/lib/event_engine/channel_args_endpoint_config.h +13 -7
  115. data/src/core/lib/event_engine/forkable.cc +1 -1
  116. data/src/core/lib/event_engine/poller.h +14 -12
  117. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +53 -32
  118. data/src/core/lib/event_engine/posix_engine/timer_manager.h +23 -1
  119. data/src/core/lib/event_engine/thread_pool.cc +131 -94
  120. data/src/core/lib/event_engine/thread_pool.h +56 -23
  121. data/src/core/lib/event_engine/time_util.cc +30 -0
  122. data/src/core/lib/event_engine/time_util.h +32 -0
  123. data/src/core/lib/event_engine/utils.cc +0 -5
  124. data/src/core/lib/event_engine/utils.h +0 -4
  125. data/src/core/lib/event_engine/windows/iocp.cc +13 -7
  126. data/src/core/lib/event_engine/windows/iocp.h +2 -1
  127. data/src/core/lib/event_engine/windows/win_socket.cc +1 -1
  128. data/src/core/lib/experiments/config.cc +146 -0
  129. data/src/core/lib/experiments/config.h +43 -0
  130. data/src/core/lib/experiments/experiments.cc +75 -0
  131. data/src/core/lib/experiments/experiments.h +56 -0
  132. data/src/core/lib/gpr/alloc.cc +1 -9
  133. data/src/core/lib/gpr/log_windows.cc +0 -1
  134. data/src/core/lib/gpr/string_util_windows.cc +3 -30
  135. data/src/core/lib/gpr/sync_abseil.cc +0 -14
  136. data/src/core/lib/gpr/sync_posix.cc +0 -14
  137. data/src/core/lib/gpr/time_posix.cc +0 -6
  138. data/src/core/lib/gpr/time_precise.h +1 -1
  139. data/src/core/lib/gpr/tmpfile_windows.cc +5 -7
  140. data/src/core/lib/gpr/useful.h +11 -0
  141. data/src/core/lib/{gpr → gprpp}/env.h +25 -12
  142. data/src/core/lib/{gpr → gprpp}/env_linux.cc +20 -15
  143. data/src/core/lib/{gpr → gprpp}/env_posix.cc +11 -10
  144. data/src/core/lib/gprpp/env_windows.cc +56 -0
  145. data/src/core/lib/gprpp/fork.cc +14 -22
  146. data/src/core/lib/gprpp/fork.h +0 -8
  147. data/src/core/lib/gprpp/global_config_env.cc +7 -6
  148. data/src/core/lib/gprpp/notification.h +67 -0
  149. data/src/core/lib/gprpp/packed_table.h +40 -0
  150. data/src/core/lib/gprpp/ref_counted_ptr.h +20 -33
  151. data/src/core/lib/gprpp/sorted_pack.h +98 -0
  152. data/src/core/lib/gprpp/status_helper.h +6 -0
  153. data/src/core/lib/gprpp/table.h +9 -1
  154. data/src/core/lib/gprpp/tchar.cc +49 -0
  155. data/src/core/lib/gprpp/tchar.h +33 -0
  156. data/src/core/lib/gprpp/time.cc +21 -0
  157. data/src/core/lib/gprpp/time.h +55 -0
  158. data/src/core/lib/gprpp/validation_errors.cc +61 -0
  159. data/src/core/lib/gprpp/validation_errors.h +110 -0
  160. data/src/core/{ext/filters/client_channel → lib/handshaker}/proxy_mapper.h +3 -3
  161. data/src/core/{ext/filters/client_channel → lib/handshaker}/proxy_mapper_registry.cc +14 -36
  162. data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
  163. data/src/core/lib/iomgr/call_combiner.cc +0 -8
  164. data/src/core/lib/iomgr/closure.h +0 -1
  165. data/src/core/lib/iomgr/endpoint_pair_posix.cc +14 -10
  166. data/src/core/lib/iomgr/endpoint_pair_windows.cc +2 -2
  167. data/src/core/lib/iomgr/ev_epoll1_linux.cc +1 -38
  168. data/src/core/lib/iomgr/ev_poll_posix.cc +2 -17
  169. data/src/core/lib/iomgr/exec_ctx.cc +0 -10
  170. data/src/core/lib/iomgr/exec_ctx.h +7 -31
  171. data/src/core/lib/iomgr/iocp_windows.cc +1 -2
  172. data/src/core/lib/iomgr/iomgr.cc +6 -8
  173. data/src/core/lib/iomgr/iomgr_fwd.h +1 -0
  174. data/src/core/lib/iomgr/pollset.h +1 -1
  175. data/src/core/lib/iomgr/pollset_set.h +0 -1
  176. data/src/core/lib/iomgr/resolve_address.h +1 -0
  177. data/src/core/lib/iomgr/resolve_address_impl.h +1 -0
  178. data/src/core/lib/iomgr/resolve_address_posix.cc +1 -0
  179. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -0
  180. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +2 -1
  181. data/src/core/lib/iomgr/socket_utils_common_posix.cc +12 -34
  182. data/src/core/lib/iomgr/socket_utils_posix.cc +83 -1
  183. data/src/core/lib/iomgr/socket_utils_posix.h +98 -6
  184. data/src/core/lib/iomgr/tcp_client.cc +6 -7
  185. data/src/core/lib/iomgr/tcp_client.h +11 -11
  186. data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -6
  187. data/src/core/lib/iomgr/tcp_client_posix.cc +33 -29
  188. data/src/core/lib/iomgr/tcp_client_posix.h +12 -9
  189. data/src/core/lib/iomgr/tcp_client_windows.cc +6 -6
  190. data/src/core/lib/iomgr/tcp_posix.cc +131 -114
  191. data/src/core/lib/iomgr/tcp_posix.h +3 -1
  192. data/src/core/lib/iomgr/tcp_server.cc +5 -4
  193. data/src/core/lib/iomgr/tcp_server.h +9 -6
  194. data/src/core/lib/iomgr/tcp_server_posix.cc +17 -28
  195. data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -2
  196. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +3 -3
  197. data/src/core/lib/iomgr/tcp_server_windows.cc +6 -7
  198. data/src/core/lib/iomgr/tcp_windows.cc +0 -1
  199. data/src/core/lib/iomgr/tcp_windows.h +0 -1
  200. data/src/core/lib/iomgr/timer_generic.cc +4 -4
  201. data/src/core/lib/iomgr/timer_manager.cc +1 -2
  202. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +0 -2
  203. data/src/core/lib/json/json_object_loader.cc +21 -52
  204. data/src/core/lib/json/json_object_loader.h +56 -76
  205. data/src/core/lib/json/json_util.cc +2 -1
  206. data/src/core/lib/load_balancing/lb_policy.h +5 -5
  207. data/src/core/lib/load_balancing/lb_policy_registry.cc +29 -55
  208. data/src/core/lib/load_balancing/lb_policy_registry.h +23 -11
  209. data/src/core/lib/promise/activity.h +2 -3
  210. data/src/core/lib/promise/context.h +1 -1
  211. data/src/core/lib/promise/sleep.cc +16 -4
  212. data/src/core/lib/promise/sleep.h +8 -2
  213. data/src/core/lib/resolver/resolver.h +13 -3
  214. data/src/core/lib/resource_quota/api.cc +9 -0
  215. data/src/core/lib/resource_quota/api.h +6 -0
  216. data/src/core/lib/resource_quota/arena.cc +1 -3
  217. data/src/core/lib/resource_quota/memory_quota.cc +8 -24
  218. data/src/core/lib/resource_quota/memory_quota.h +6 -19
  219. data/src/core/lib/resource_quota/periodic_update.cc +2 -3
  220. data/src/core/{ext/xds → lib/security/certificate_provider}/certificate_provider_factory.h +3 -3
  221. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
  222. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
  223. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +1 -0
  224. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +15 -16
  225. data/src/core/lib/security/credentials/external/external_account_credentials.cc +2 -1
  226. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +5 -8
  227. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +6 -6
  228. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +3 -2
  229. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
  230. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -2
  231. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +4 -3
  232. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +4 -2
  233. data/src/core/lib/security/credentials/tls/tls_utils.cc +3 -1
  234. data/src/core/lib/security/transport/client_auth_filter.cc +12 -1
  235. data/src/core/lib/security/transport/secure_endpoint.cc +0 -4
  236. data/src/core/lib/surface/call.cc +1 -11
  237. data/src/core/lib/surface/channel.cc +3 -2
  238. data/src/core/lib/surface/completion_queue.cc +16 -28
  239. data/src/core/lib/surface/completion_queue.h +1 -1
  240. data/src/core/lib/surface/completion_queue_factory.cc +5 -0
  241. data/src/core/lib/surface/init.cc +16 -11
  242. data/src/core/lib/surface/init_internally.cc +24 -0
  243. data/src/core/lib/surface/init_internally.h +28 -0
  244. data/src/core/lib/surface/server.cc +1 -7
  245. data/src/core/lib/surface/server.h +4 -6
  246. data/src/core/lib/surface/version.cc +2 -2
  247. data/src/core/lib/transport/bdp_estimator.cc +1 -3
  248. data/src/core/lib/transport/metadata_batch.cc +2 -3
  249. data/src/core/lib/transport/metadata_batch.h +9 -7
  250. data/src/core/lib/transport/parsed_metadata.h +4 -2
  251. data/src/core/lib/transport/status_conversion.cc +1 -3
  252. data/src/core/lib/transport/tcp_connect_handshaker.cc +9 -5
  253. data/src/core/lib/transport/transport.h +0 -1
  254. data/src/core/lib/transport/transport_impl.h +0 -1
  255. data/src/core/plugin_registry/grpc_plugin_registry.cc +23 -46
  256. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +13 -25
  257. data/src/ruby/lib/grpc/version.rb +1 -1
  258. data/src/ruby/spec/channel_spec.rb +5 -0
  259. data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
  260. data/src/ruby/spec/user_agent_spec.rb +1 -1
  261. metadata +33 -19
  262. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -56
  263. data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
  264. data/src/core/ext/xds/certificate_provider_registry.h +0 -59
  265. data/src/core/lib/event_engine/promise.h +0 -78
  266. data/src/core/lib/gpr/env_windows.cc +0 -74
  267. data/src/core/lib/gpr/string_windows.h +0 -32
  268. data/src/core/lib/profiling/basic_timers.cc +0 -295
  269. data/src/core/lib/profiling/stap_timers.cc +0 -50
  270. data/src/core/lib/profiling/timers.h +0 -94
@@ -18,7 +18,7 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
- #include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
21
+ #include "src/core/lib/handshaker/proxy_mapper_registry.h"
22
22
 
23
23
  #include <algorithm>
24
24
  #include <memory>
@@ -29,46 +29,25 @@
29
29
 
30
30
  namespace grpc_core {
31
31
 
32
- namespace {
33
-
34
- using ProxyMapperList = std::vector<std::unique_ptr<ProxyMapperInterface>>;
35
- ProxyMapperList* g_proxy_mapper_list;
36
-
37
- } // namespace
38
-
39
- void ProxyMapperRegistry::Init() {
40
- if (g_proxy_mapper_list == nullptr) {
41
- g_proxy_mapper_list = new ProxyMapperList();
42
- }
43
- }
44
-
45
- void ProxyMapperRegistry::Shutdown() {
46
- delete g_proxy_mapper_list;
47
- // Clean up in case we re-initialze later.
48
- // TODO(roth): This should ideally live in Init(). However, if we did this
49
- // there, then we would do it AFTER we start registering proxy mappers from
50
- // third-party plugins, so they'd never show up (and would leak memory).
51
- // We probably need some sort of dependency system for plugins to fix
52
- // this.
53
- g_proxy_mapper_list = nullptr;
54
- }
55
-
56
- void ProxyMapperRegistry::Register(
32
+ void ProxyMapperRegistry::Builder::Register(
57
33
  bool at_start, std::unique_ptr<ProxyMapperInterface> mapper) {
58
- Init();
59
34
  if (at_start) {
60
- g_proxy_mapper_list->insert(g_proxy_mapper_list->begin(),
61
- std::move(mapper));
35
+ mappers_.insert(mappers_.begin(), std::move(mapper));
62
36
  } else {
63
- g_proxy_mapper_list->emplace_back(std::move(mapper));
37
+ mappers_.emplace_back(std::move(mapper));
64
38
  }
65
39
  }
66
40
 
41
+ ProxyMapperRegistry ProxyMapperRegistry::Builder::Build() {
42
+ ProxyMapperRegistry registry;
43
+ registry.mappers_ = std::move(mappers_);
44
+ return registry;
45
+ }
46
+
67
47
  absl::optional<std::string> ProxyMapperRegistry::MapName(
68
- absl::string_view server_uri, ChannelArgs* args) {
69
- Init();
48
+ absl::string_view server_uri, ChannelArgs* args) const {
70
49
  ChannelArgs args_backup = *args;
71
- for (const auto& mapper : *g_proxy_mapper_list) {
50
+ for (const auto& mapper : mappers_) {
72
51
  *args = args_backup;
73
52
  auto r = mapper->MapName(server_uri, args);
74
53
  if (r.has_value()) return r;
@@ -78,10 +57,9 @@ absl::optional<std::string> ProxyMapperRegistry::MapName(
78
57
  }
79
58
 
80
59
  absl::optional<grpc_resolved_address> ProxyMapperRegistry::MapAddress(
81
- const grpc_resolved_address& address, ChannelArgs* args) {
82
- Init();
60
+ const grpc_resolved_address& address, ChannelArgs* args) const {
83
61
  ChannelArgs args_backup = *args;
84
- for (const auto& mapper : *g_proxy_mapper_list) {
62
+ for (const auto& mapper : mappers_) {
85
63
  *args = args_backup;
86
64
  auto r = mapper->MapAddress(address, args);
87
65
  if (r.has_value()) return r;
@@ -0,0 +1,75 @@
1
+ /*
2
+ *
3
+ * Copyright 2017 gRPC authors.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ *
17
+ */
18
+
19
+ #ifndef GRPC_CORE_LIB_HANDSHAKER_PROXY_MAPPER_REGISTRY_H
20
+ #define GRPC_CORE_LIB_HANDSHAKER_PROXY_MAPPER_REGISTRY_H
21
+
22
+ #include <grpc/support/port_platform.h>
23
+
24
+ #include <algorithm>
25
+ #include <memory>
26
+ #include <string>
27
+ #include <vector>
28
+
29
+ #include "absl/strings/string_view.h"
30
+ #include "absl/types/optional.h"
31
+
32
+ #include "src/core/lib/channel/channel_args.h"
33
+ #include "src/core/lib/handshaker/proxy_mapper.h"
34
+ #include "src/core/lib/iomgr/resolved_address.h"
35
+
36
+ namespace grpc_core {
37
+
38
+ class ProxyMapperRegistry {
39
+ using ProxyMapperList = std::vector<std::unique_ptr<ProxyMapperInterface>>;
40
+
41
+ public:
42
+ class Builder {
43
+ public:
44
+ /// Registers a new proxy mapper.
45
+ /// If \a at_start is true, the new mapper will be at the beginning of
46
+ /// the list. Otherwise, it will be added to the end.
47
+ void Register(bool at_start, std::unique_ptr<ProxyMapperInterface> mapper);
48
+
49
+ ProxyMapperRegistry Build();
50
+
51
+ private:
52
+ ProxyMapperList mappers_;
53
+ };
54
+
55
+ ~ProxyMapperRegistry() = default;
56
+ ProxyMapperRegistry(const ProxyMapperRegistry&) = delete;
57
+ ProxyMapperRegistry& operator=(const ProxyMapperRegistry&) = delete;
58
+ ProxyMapperRegistry(ProxyMapperRegistry&&) = default;
59
+ ProxyMapperRegistry& operator=(ProxyMapperRegistry&&) = default;
60
+
61
+ absl::optional<std::string> MapName(absl::string_view server_uri,
62
+ ChannelArgs* args) const;
63
+
64
+ absl::optional<grpc_resolved_address> MapAddress(
65
+ const grpc_resolved_address& address, ChannelArgs* args) const;
66
+
67
+ private:
68
+ ProxyMapperRegistry() = default;
69
+
70
+ ProxyMapperList mappers_;
71
+ };
72
+
73
+ } // namespace grpc_core
74
+
75
+ #endif /* GRPC_CORE_LIB_HANDSHAKER_PROXY_MAPPER_REGISTRY_H */
@@ -25,7 +25,6 @@
25
25
  #include <grpc/support/log.h>
26
26
 
27
27
  #include "src/core/lib/debug/stats.h"
28
- #include "src/core/lib/profiling/timers.h"
29
28
 
30
29
  namespace grpc_core {
31
30
 
@@ -113,7 +112,6 @@ void CallCombiner::ScheduleClosure(grpc_closure* closure,
113
112
 
114
113
  void CallCombiner::Start(grpc_closure* closure, grpc_error_handle error,
115
114
  DEBUG_ARGS const char* reason) {
116
- GPR_TIMER_SCOPE("CallCombiner::Start", 0);
117
115
  if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) {
118
116
  gpr_log(GPR_INFO,
119
117
  "==> CallCombiner::Start() [%p] closure=%p [" DEBUG_FMT_STR
@@ -127,10 +125,7 @@ void CallCombiner::Start(grpc_closure* closure, grpc_error_handle error,
127
125
  gpr_log(GPR_INFO, " size: %" PRIdPTR " -> %" PRIdPTR, prev_size,
128
126
  prev_size + 1);
129
127
  }
130
- GRPC_STATS_INC_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS();
131
128
  if (prev_size == 0) {
132
- GRPC_STATS_INC_CALL_COMBINER_LOCKS_INITIATED();
133
- GPR_TIMER_MARK("call_combiner_initiate", 0);
134
129
  if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) {
135
130
  gpr_log(GPR_INFO, " EXECUTING IMMEDIATELY");
136
131
  }
@@ -148,7 +143,6 @@ void CallCombiner::Start(grpc_closure* closure, grpc_error_handle error,
148
143
  }
149
144
 
150
145
  void CallCombiner::Stop(DEBUG_ARGS const char* reason) {
151
- GPR_TIMER_SCOPE("CallCombiner::Stop", 0);
152
146
  if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) {
153
147
  gpr_log(GPR_INFO, "==> CallCombiner::Stop() [%p] [" DEBUG_FMT_STR "%s]",
154
148
  this DEBUG_FMT_ARGS, reason);
@@ -192,7 +186,6 @@ void CallCombiner::Stop(DEBUG_ARGS const char* reason) {
192
186
  }
193
187
 
194
188
  void CallCombiner::SetNotifyOnCancel(grpc_closure* closure) {
195
- GRPC_STATS_INC_CALL_COMBINER_SET_NOTIFY_ON_CANCEL();
196
189
  while (true) {
197
190
  // Decode original state.
198
191
  gpr_atm original_state = gpr_atm_acq_load(&cancel_state_);
@@ -235,7 +228,6 @@ void CallCombiner::SetNotifyOnCancel(grpc_closure* closure) {
235
228
  }
236
229
 
237
230
  void CallCombiner::Cancel(grpc_error_handle error) {
238
- GRPC_STATS_INC_CALL_COMBINER_CANCELLED();
239
231
  intptr_t status_ptr = internal::StatusAllocHeapPtr(error);
240
232
  gpr_atm new_state = kErrorBit | status_ptr;
241
233
  while (true) {
@@ -31,7 +31,6 @@
31
31
  #include "src/core/lib/gprpp/manual_constructor.h"
32
32
  #include "src/core/lib/gprpp/mpscq.h"
33
33
  #include "src/core/lib/iomgr/error.h"
34
- #include "src/core/lib/profiling/timers.h"
35
34
 
36
35
  struct grpc_closure;
37
36
  typedef struct grpc_closure grpc_closure;
@@ -35,6 +35,7 @@
35
35
  #include <grpc/support/alloc.h>
36
36
  #include <grpc/support/log.h>
37
37
 
38
+ #include "src/core/lib/event_engine/channel_args_endpoint_config.h"
38
39
  #include "src/core/lib/gpr/string.h"
39
40
  #include "src/core/lib/iomgr/endpoint_pair.h"
40
41
  #include "src/core/lib/iomgr/socket_utils_posix.h"
@@ -60,17 +61,20 @@ grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char* name,
60
61
  create_sockets(sv);
61
62
  grpc_core::ExecCtx exec_ctx;
62
63
  std::string final_name = absl::StrCat(name, ":client");
63
- const grpc_channel_args* new_args = grpc_core::CoreConfiguration::Get()
64
- .channel_args_preconditioning()
65
- .PreconditionChannelArgs(args)
66
- .ToC()
67
- .release();
68
- p.client = grpc_tcp_create(grpc_fd_create(sv[1], final_name.c_str(), false),
69
- new_args, "socketpair-server");
64
+ auto new_args = grpc_core::CoreConfiguration::Get()
65
+ .channel_args_preconditioning()
66
+ .PreconditionChannelArgs(args);
67
+ p.client = grpc_tcp_create(
68
+ grpc_fd_create(sv[1], final_name.c_str(), false),
69
+ TcpOptionsFromEndpointConfig(
70
+ grpc_event_engine::experimental::ChannelArgsEndpointConfig(new_args)),
71
+ "socketpair-server");
70
72
  final_name = absl::StrCat(name, ":server");
71
- p.server = grpc_tcp_create(grpc_fd_create(sv[0], final_name.c_str(), false),
72
- new_args, "socketpair-client");
73
- grpc_channel_args_destroy(new_args);
73
+ p.server = grpc_tcp_create(
74
+ grpc_fd_create(sv[0], final_name.c_str(), false),
75
+ TcpOptionsFromEndpointConfig(
76
+ grpc_event_engine::experimental::ChannelArgsEndpointConfig(new_args)),
77
+ "socketpair-client");
74
78
  return p;
75
79
  }
76
80
 
@@ -77,9 +77,9 @@ grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(
77
77
  create_sockets(sv);
78
78
  grpc_core::ExecCtx exec_ctx;
79
79
  p.client = grpc_tcp_create(grpc_winsocket_create(sv[1], "endpoint:client"),
80
- channel_args, "endpoint:server");
80
+ "endpoint:server");
81
81
  p.server = grpc_tcp_create(grpc_winsocket_create(sv[0], "endpoint:server"),
82
- channel_args, "endpoint:client");
82
+ "endpoint:client");
83
83
  return p;
84
84
  }
85
85
 
@@ -57,7 +57,6 @@
57
57
  #include "src/core/lib/iomgr/iomgr_internal.h"
58
58
  #include "src/core/lib/iomgr/lockfree_event.h"
59
59
  #include "src/core/lib/iomgr/wakeup_fd_posix.h"
60
- #include "src/core/lib/profiling/timers.h"
61
60
 
62
61
  static grpc_wakeup_fd global_wakeup_fd;
63
62
 
@@ -586,25 +585,20 @@ static void pollset_destroy(grpc_pollset* pollset) {
586
585
  }
587
586
 
588
587
  static grpc_error_handle pollset_kick_all(grpc_pollset* pollset) {
589
- GPR_TIMER_SCOPE("pollset_kick_all", 0);
590
588
  grpc_error_handle error = GRPC_ERROR_NONE;
591
589
  if (pollset->root_worker != nullptr) {
592
590
  grpc_pollset_worker* worker = pollset->root_worker;
593
591
  do {
594
- GRPC_STATS_INC_POLLSET_KICK();
595
592
  switch (worker->state) {
596
593
  case KICKED:
597
- GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
598
594
  break;
599
595
  case UNKICKED:
600
596
  SET_KICK_STATE(worker, KICKED);
601
597
  if (worker->initialized_cv) {
602
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
603
598
  gpr_cv_signal(&worker->cv);
604
599
  }
605
600
  break;
606
601
  case DESIGNATED_POLLER:
607
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
608
602
  SET_KICK_STATE(worker, KICKED);
609
603
  append_error(&error, grpc_wakeup_fd_wakeup(&global_wakeup_fd),
610
604
  "pollset_kick_all");
@@ -622,7 +616,6 @@ static grpc_error_handle pollset_kick_all(grpc_pollset* pollset) {
622
616
  static void pollset_maybe_finish_shutdown(grpc_pollset* pollset) {
623
617
  if (pollset->shutdown_closure != nullptr && pollset->root_worker == nullptr &&
624
618
  pollset->begin_refs == 0) {
625
- GPR_TIMER_MARK("pollset_finish_shutdown", 0);
626
619
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, pollset->shutdown_closure,
627
620
  GRPC_ERROR_NONE);
628
621
  pollset->shutdown_closure = nullptr;
@@ -630,7 +623,6 @@ static void pollset_maybe_finish_shutdown(grpc_pollset* pollset) {
630
623
  }
631
624
 
632
625
  static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
633
- GPR_TIMER_SCOPE("pollset_shutdown", 0);
634
626
  GPR_ASSERT(pollset->shutdown_closure == nullptr);
635
627
  GPR_ASSERT(!pollset->shutting_down);
636
628
  pollset->shutdown_closure = closure;
@@ -641,7 +633,7 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
641
633
 
642
634
  static int poll_deadline_to_millis_timeout(grpc_core::Timestamp millis) {
643
635
  if (millis == grpc_core::Timestamp::InfFuture()) return -1;
644
- int64_t delta = (millis - grpc_core::ExecCtx::Get()->Now()).millis();
636
+ int64_t delta = (millis - grpc_core::Timestamp::Now()).millis();
645
637
  if (delta > INT_MAX) {
646
638
  return INT_MAX;
647
639
  } else if (delta < 0) {
@@ -660,8 +652,6 @@ static int poll_deadline_to_millis_timeout(grpc_core::Timestamp millis) {
660
652
  called by g_active_poller thread. So there is no need for synchronization
661
653
  when accessing fields in g_epoll_set */
662
654
  static grpc_error_handle process_epoll_events(grpc_pollset* /*pollset*/) {
663
- GPR_TIMER_SCOPE("process_epoll_events", 0);
664
-
665
655
  static const char* err_desc = "process_events";
666
656
  grpc_error_handle error = GRPC_ERROR_NONE;
667
657
  long num_events = gpr_atm_acq_load(&g_epoll_set.num_events);
@@ -713,15 +703,12 @@ static grpc_error_handle process_epoll_events(grpc_pollset* /*pollset*/) {
713
703
  no need for any synchronization when accesing fields in g_epoll_set */
714
704
  static grpc_error_handle do_epoll_wait(grpc_pollset* ps,
715
705
  grpc_core::Timestamp deadline) {
716
- GPR_TIMER_SCOPE("do_epoll_wait", 0);
717
-
718
706
  int r;
719
707
  int timeout = poll_deadline_to_millis_timeout(deadline);
720
708
  if (timeout != 0) {
721
709
  GRPC_SCHEDULING_START_BLOCKING_REGION;
722
710
  }
723
711
  do {
724
- GRPC_STATS_INC_SYSCALL_POLL();
725
712
  r = epoll_wait(g_epoll_set.epfd, g_epoll_set.events, MAX_EPOLL_EVENTS,
726
713
  timeout);
727
714
  } while (r < 0 && errno == EINTR);
@@ -731,8 +718,6 @@ static grpc_error_handle do_epoll_wait(grpc_pollset* ps,
731
718
 
732
719
  if (r < 0) return GRPC_OS_ERROR(errno, "epoll_wait");
733
720
 
734
- GRPC_STATS_INC_POLL_EVENTS_RETURNED(r);
735
-
736
721
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
737
722
  gpr_log(GPR_INFO, "ps: %p poll got %d events", ps, r);
738
723
  }
@@ -746,7 +731,6 @@ static grpc_error_handle do_epoll_wait(grpc_pollset* ps,
746
731
  static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
747
732
  grpc_pollset_worker** worker_hdl,
748
733
  grpc_core::Timestamp deadline) {
749
- GPR_TIMER_SCOPE("begin_worker", 0);
750
734
  if (worker_hdl != nullptr) *worker_hdl = worker;
751
735
  worker->initialized_cv = false;
752
736
  SET_KICK_STATE(worker, UNKICKED);
@@ -869,7 +853,6 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
869
853
 
870
854
  static bool check_neighborhood_for_available_poller(
871
855
  pollset_neighborhood* neighborhood) {
872
- GPR_TIMER_SCOPE("check_neighborhood_for_available_poller", 0);
873
856
  bool found_worker = false;
874
857
  do {
875
858
  grpc_pollset* inspect = neighborhood->active_root;
@@ -892,8 +875,6 @@ static bool check_neighborhood_for_available_poller(
892
875
  }
893
876
  SET_KICK_STATE(inspect_worker, DESIGNATED_POLLER);
894
877
  if (inspect_worker->initialized_cv) {
895
- GPR_TIMER_MARK("signal worker", 0);
896
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
897
878
  gpr_cv_signal(&inspect_worker->cv);
898
879
  }
899
880
  } else {
@@ -934,7 +915,6 @@ static bool check_neighborhood_for_available_poller(
934
915
 
935
916
  static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
936
917
  grpc_pollset_worker** worker_hdl) {
937
- GPR_TIMER_SCOPE("end_worker", 0);
938
918
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
939
919
  gpr_log(GPR_INFO, "PS:%p END_WORKER:%p", pollset, worker);
940
920
  }
@@ -952,7 +932,6 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
952
932
  GPR_ASSERT(worker->next->initialized_cv);
953
933
  gpr_atm_no_barrier_store(&g_active_poller, (gpr_atm)worker->next);
954
934
  SET_KICK_STATE(worker->next, DESIGNATED_POLLER);
955
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
956
935
  gpr_cv_signal(&worker->next->cv);
957
936
  if (grpc_core::ExecCtx::Get()->HasWork()) {
958
937
  gpr_mu_unlock(&pollset->mu);
@@ -1014,7 +993,6 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
1014
993
  static grpc_error_handle pollset_work(grpc_pollset* ps,
1015
994
  grpc_pollset_worker** worker_hdl,
1016
995
  grpc_core::Timestamp deadline) {
1017
- GPR_TIMER_SCOPE("pollset_work", 0);
1018
996
  grpc_pollset_worker worker;
1019
997
  grpc_error_handle error = GRPC_ERROR_NONE;
1020
998
  static const char* err_desc = "pollset_work";
@@ -1064,8 +1042,6 @@ static grpc_error_handle pollset_work(grpc_pollset* ps,
1064
1042
 
1065
1043
  static grpc_error_handle pollset_kick(grpc_pollset* pollset,
1066
1044
  grpc_pollset_worker* specific_worker) {
1067
- GPR_TIMER_SCOPE("pollset_kick", 0);
1068
- GRPC_STATS_INC_POLLSET_KICK();
1069
1045
  grpc_error_handle ret_err = GRPC_ERROR_NONE;
1070
1046
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1071
1047
  std::vector<std::string> log;
@@ -1091,7 +1067,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
1091
1067
  if (g_current_thread_pollset != pollset) {
1092
1068
  grpc_pollset_worker* root_worker = pollset->root_worker;
1093
1069
  if (root_worker == nullptr) {
1094
- GRPC_STATS_INC_POLLSET_KICKED_WITHOUT_POLLER();
1095
1070
  pollset->kicked_without_poller = true;
1096
1071
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1097
1072
  gpr_log(GPR_INFO, " .. kicked_without_poller");
@@ -1100,14 +1075,12 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
1100
1075
  }
1101
1076
  grpc_pollset_worker* next_worker = root_worker->next;
1102
1077
  if (root_worker->state == KICKED) {
1103
- GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
1104
1078
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1105
1079
  gpr_log(GPR_INFO, " .. already kicked %p", root_worker);
1106
1080
  }
1107
1081
  SET_KICK_STATE(root_worker, KICKED);
1108
1082
  goto done;
1109
1083
  } else if (next_worker->state == KICKED) {
1110
- GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
1111
1084
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1112
1085
  gpr_log(GPR_INFO, " .. already kicked %p", next_worker);
1113
1086
  }
@@ -1118,7 +1091,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
1118
1091
  root_worker ==
1119
1092
  reinterpret_cast<grpc_pollset_worker*>(
1120
1093
  gpr_atm_no_barrier_load(&g_active_poller))) {
1121
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
1122
1094
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1123
1095
  gpr_log(GPR_INFO, " .. kicked %p", root_worker);
1124
1096
  }
@@ -1126,7 +1098,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
1126
1098
  ret_err = grpc_wakeup_fd_wakeup(&global_wakeup_fd);
1127
1099
  goto done;
1128
1100
  } else if (next_worker->state == UNKICKED) {
1129
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
1130
1101
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1131
1102
  gpr_log(GPR_INFO, " .. kicked %p", next_worker);
1132
1103
  }
@@ -1144,12 +1115,10 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
1144
1115
  }
1145
1116
  SET_KICK_STATE(root_worker, KICKED);
1146
1117
  if (root_worker->initialized_cv) {
1147
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
1148
1118
  gpr_cv_signal(&root_worker->cv);
1149
1119
  }
1150
1120
  goto done;
1151
1121
  } else {
1152
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
1153
1122
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1154
1123
  gpr_log(GPR_INFO, " .. non-root poller %p (root=%p)", next_worker,
1155
1124
  root_worker);
@@ -1159,13 +1128,11 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
1159
1128
  goto done;
1160
1129
  }
1161
1130
  } else {
1162
- GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
1163
1131
  GPR_ASSERT(next_worker->state == KICKED);
1164
1132
  SET_KICK_STATE(next_worker, KICKED);
1165
1133
  goto done;
1166
1134
  }
1167
1135
  } else {
1168
- GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD();
1169
1136
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1170
1137
  gpr_log(GPR_INFO, " .. kicked while waking up");
1171
1138
  }
@@ -1181,7 +1148,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
1181
1148
  }
1182
1149
  goto done;
1183
1150
  } else if (g_current_thread_worker == specific_worker) {
1184
- GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD();
1185
1151
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1186
1152
  gpr_log(GPR_INFO, " .. mark %p kicked", specific_worker);
1187
1153
  }
@@ -1190,7 +1156,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
1190
1156
  } else if (specific_worker ==
1191
1157
  reinterpret_cast<grpc_pollset_worker*>(
1192
1158
  gpr_atm_no_barrier_load(&g_active_poller))) {
1193
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
1194
1159
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1195
1160
  gpr_log(GPR_INFO, " .. kick active poller");
1196
1161
  }
@@ -1198,7 +1163,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
1198
1163
  ret_err = grpc_wakeup_fd_wakeup(&global_wakeup_fd);
1199
1164
  goto done;
1200
1165
  } else if (specific_worker->initialized_cv) {
1201
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
1202
1166
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1203
1167
  gpr_log(GPR_INFO, " .. kick waiting worker");
1204
1168
  }
@@ -1206,7 +1170,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
1206
1170
  gpr_cv_signal(&specific_worker->cv);
1207
1171
  goto done;
1208
1172
  } else {
1209
- GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
1210
1173
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
1211
1174
  gpr_log(GPR_INFO, " .. kick non-waiting worker");
1212
1175
  }
@@ -48,7 +48,6 @@
48
48
  #include "src/core/lib/iomgr/ev_poll_posix.h"
49
49
  #include "src/core/lib/iomgr/iomgr_internal.h"
50
50
  #include "src/core/lib/iomgr/wakeup_fd_posix.h"
51
- #include "src/core/lib/profiling/timers.h"
52
51
 
53
52
  #define GRPC_POLLSET_KICK_BROADCAST ((grpc_pollset_worker*)1)
54
53
 
@@ -769,14 +768,11 @@ static void kick_append_error(grpc_error_handle* composite,
769
768
  static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
770
769
  grpc_pollset_worker* specific_worker,
771
770
  uint32_t flags) {
772
- GPR_TIMER_SCOPE("pollset_kick_ext", 0);
773
771
  grpc_error_handle error = GRPC_ERROR_NONE;
774
- GRPC_STATS_INC_POLLSET_KICK();
775
772
 
776
773
  /* pollset->mu already held */
777
774
  if (specific_worker != nullptr) {
778
775
  if (specific_worker == GRPC_POLLSET_KICK_BROADCAST) {
779
- GPR_TIMER_SCOPE("pollset_kick_ext.broadcast", 0);
780
776
  GPR_ASSERT((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) == 0);
781
777
  for (specific_worker = p->root_worker.next;
782
778
  specific_worker != &p->root_worker;
@@ -786,7 +782,6 @@ static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
786
782
  }
787
783
  p->kicked_without_pollers = true;
788
784
  } else if (g_current_thread_worker != specific_worker) {
789
- GPR_TIMER_MARK("different_thread_worker", 0);
790
785
  if ((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) != 0) {
791
786
  specific_worker->reevaluate_polling_on_wakeup = true;
792
787
  }
@@ -794,7 +789,6 @@ static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
794
789
  kick_append_error(&error,
795
790
  grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd->fd));
796
791
  } else if ((flags & GRPC_POLLSET_CAN_KICK_SELF) != 0) {
797
- GPR_TIMER_MARK("kick_yoself", 0);
798
792
  if ((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) != 0) {
799
793
  specific_worker->reevaluate_polling_on_wakeup = true;
800
794
  }
@@ -804,11 +798,9 @@ static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
804
798
  }
805
799
  } else if (g_current_thread_poller != p) {
806
800
  GPR_ASSERT((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) == 0);
807
- GPR_TIMER_MARK("kick_anonymous", 0);
808
801
  specific_worker = pop_front_worker(p);
809
802
  if (specific_worker != nullptr) {
810
803
  if (g_current_thread_worker == specific_worker) {
811
- GPR_TIMER_MARK("kick_anonymous_not_self", 0);
812
804
  push_back_worker(p, specific_worker);
813
805
  specific_worker = pop_front_worker(p);
814
806
  if ((flags & GRPC_POLLSET_CAN_KICK_SELF) == 0 &&
@@ -818,13 +810,11 @@ static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
818
810
  }
819
811
  }
820
812
  if (specific_worker != nullptr) {
821
- GPR_TIMER_MARK("finally_kick", 0);
822
813
  push_back_worker(p, specific_worker);
823
814
  kick_append_error(
824
815
  &error, grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd->fd));
825
816
  }
826
817
  } else {
827
- GPR_TIMER_MARK("kicked_no_pollers", 0);
828
818
  p->kicked_without_pollers = true;
829
819
  }
830
820
  }
@@ -914,7 +904,6 @@ static void work_combine_error(grpc_error_handle* composite,
914
904
  static grpc_error_handle pollset_work(grpc_pollset* pollset,
915
905
  grpc_pollset_worker** worker_hdl,
916
906
  grpc_core::Timestamp deadline) {
917
- GPR_TIMER_SCOPE("pollset_work", 0);
918
907
  grpc_pollset_worker worker;
919
908
  if (worker_hdl) *worker_hdl = &worker;
920
909
  grpc_error_handle error = GRPC_ERROR_NONE;
@@ -948,7 +937,6 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
948
937
  worker.kicked_specifically = 0;
949
938
  /* If we're shutting down then we don't execute any extended work */
950
939
  if (pollset->shutting_down) {
951
- GPR_TIMER_MARK("pollset_work.shutting_down", 0);
952
940
  goto done;
953
941
  }
954
942
  /* Start polling, and keep doing so while we're being asked to
@@ -959,13 +947,12 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
959
947
  while (keep_polling) {
960
948
  keep_polling = 0;
961
949
  if (!pollset->kicked_without_pollers ||
962
- deadline <= grpc_core::ExecCtx::Get()->Now()) {
950
+ deadline <= grpc_core::Timestamp::Now()) {
963
951
  if (!added_worker) {
964
952
  push_front_worker(pollset, &worker);
965
953
  added_worker = 1;
966
954
  g_current_thread_worker = &worker;
967
955
  }
968
- GPR_TIMER_SCOPE("maybe_work_and_unlock", 0);
969
956
  #define POLLOUT_CHECK (POLLOUT | POLLHUP | POLLERR)
970
957
  #define POLLIN_CHECK (POLLIN | POLLHUP | POLLERR)
971
958
 
@@ -1024,7 +1011,6 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
1024
1011
  /* TODO(vpai): Consider first doing a 0 timeout poll here to avoid
1025
1012
  even going into the blocking annotation if possible */
1026
1013
  GRPC_SCHEDULING_START_BLOCKING_REGION;
1027
- GRPC_STATS_INC_SYSCALL_POLL();
1028
1014
  r = grpc_poll_function(pfds, pfd_count, timeout);
1029
1015
  GRPC_SCHEDULING_END_BLOCKING_REGION;
1030
1016
 
@@ -1090,7 +1076,6 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
1090
1076
 
1091
1077
  locked = 0;
1092
1078
  } else {
1093
- GPR_TIMER_MARK("pollset_work.kicked_without_pollers", 0);
1094
1079
  pollset->kicked_without_pollers = 0;
1095
1080
  }
1096
1081
  /* Finished execution - start cleaning up.
@@ -1160,7 +1145,7 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
1160
1145
  static int poll_deadline_to_millis_timeout(grpc_core::Timestamp deadline) {
1161
1146
  if (deadline == grpc_core::Timestamp::InfFuture()) return -1;
1162
1147
  if (deadline.is_process_epoch()) return 0;
1163
- int64_t n = (deadline - grpc_core::ExecCtx::Get()->Now()).millis();
1148
+ int64_t n = (deadline - grpc_core::Timestamp::Now()).millis();
1164
1149
  if (n < 0) return 0;
1165
1150
  if (n > INT_MAX) return -1;
1166
1151
  return static_cast<int>(n);
@@ -25,7 +25,6 @@
25
25
 
26
26
  #include "src/core/lib/iomgr/combiner.h"
27
27
  #include "src/core/lib/iomgr/error.h"
28
- #include "src/core/lib/profiling/timers.h"
29
28
 
30
29
  static void exec_ctx_run(grpc_closure* closure) {
31
30
  #ifndef NDEBUG
@@ -60,7 +59,6 @@ ApplicationCallbackExecCtx::callback_exec_ctx_;
60
59
 
61
60
  bool ExecCtx::Flush() {
62
61
  bool did_something = false;
63
- GPR_TIMER_SCOPE("grpc_exec_ctx_flush", 0);
64
62
  for (;;) {
65
63
  if (!grpc_closure_list_empty(closure_list_)) {
66
64
  grpc_closure* c = closure_list_.head;
@@ -79,14 +77,6 @@ bool ExecCtx::Flush() {
79
77
  return did_something;
80
78
  }
81
79
 
82
- Timestamp ExecCtx::Now() {
83
- if (!now_is_valid_) {
84
- now_ = Timestamp::FromTimespecRoundDown(gpr_now(GPR_CLOCK_MONOTONIC));
85
- now_is_valid_ = true;
86
- }
87
- return now_;
88
- }
89
-
90
80
  void ExecCtx::Run(const DebugLocation& location, grpc_closure* closure,
91
81
  grpc_error_handle error) {
92
82
  (void)location;