grpc 1.50.0 → 1.51.0

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

Potentially problematic release.


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

Files changed (459) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +131 -42
  3. data/include/grpc/event_engine/event_engine.h +10 -3
  4. data/include/grpc/event_engine/slice_buffer.h +17 -0
  5. data/include/grpc/grpc.h +0 -10
  6. data/include/grpc/impl/codegen/grpc_types.h +1 -5
  7. data/include/grpc/impl/codegen/port_platform.h +0 -3
  8. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +19 -13
  9. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -0
  10. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  11. data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -5
  12. data/src/core/ext/filters/client_channel/client_channel.cc +120 -140
  13. data/src/core/ext/filters/client_channel/client_channel.h +3 -4
  14. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +0 -2
  15. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  16. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  17. data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
  18. data/src/core/ext/filters/client_channel/connector.h +1 -1
  19. data/src/core/ext/filters/client_channel/dynamic_filters.cc +20 -47
  20. data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
  21. data/src/core/ext/filters/client_channel/health/health_check_client.cc +3 -4
  22. data/src/core/ext/filters/client_channel/http_proxy.cc +0 -1
  23. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
  24. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +5 -0
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +8 -7
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +35 -44
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -3
  29. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +3 -4
  30. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +41 -29
  32. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +9 -11
  34. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -12
  35. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +8 -10
  36. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +26 -27
  37. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +7 -9
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +44 -26
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +17 -27
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +13 -7
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +48 -47
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -126
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
  46. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -9
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -32
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -2
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +22 -23
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +50 -52
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  52. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -4
  53. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
  54. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -26
  55. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
  56. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
  57. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +63 -46
  58. data/src/core/ext/filters/client_channel/retry_filter.cc +80 -102
  59. data/src/core/ext/filters/client_channel/retry_service_config.cc +192 -234
  60. data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
  61. data/src/core/ext/filters/client_channel/retry_throttle.cc +8 -8
  62. data/src/core/ext/filters/client_channel/retry_throttle.h +8 -7
  63. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
  64. data/src/core/ext/filters/client_channel/subchannel.cc +21 -25
  65. data/src/core/ext/filters/client_channel/subchannel.h +2 -2
  66. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
  67. data/src/core/ext/filters/deadline/deadline_filter.cc +13 -14
  68. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  69. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
  70. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  71. data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
  72. data/src/core/ext/filters/http/client/http_client_filter.cc +16 -16
  73. data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
  74. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +13 -13
  75. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +34 -34
  76. data/src/core/ext/filters/http/server/http_server_filter.cc +26 -25
  77. data/src/core/ext/filters/message_size/message_size_filter.cc +86 -117
  78. data/src/core/ext/filters/message_size/message_size_filter.h +22 -15
  79. data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
  80. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
  81. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
  82. data/src/core/ext/filters/server_config_selector/server_config_selector.h +1 -1
  83. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -7
  84. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +17 -21
  85. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +57 -72
  86. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
  87. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -1
  88. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +212 -253
  89. data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -11
  90. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -3
  91. data/src/core/ext/transport/chttp2/transport/frame_data.cc +16 -15
  92. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  93. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +13 -13
  94. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -3
  95. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -7
  96. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +15 -17
  97. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +5 -4
  98. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -6
  99. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
  100. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
  101. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +31 -39
  102. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +7 -6
  103. data/src/core/ext/transport/chttp2/transport/internal.h +24 -8
  104. data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -52
  105. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -3
  106. data/src/core/ext/transport/chttp2/transport/varint.h +11 -8
  107. data/src/core/ext/transport/chttp2/transport/writing.cc +16 -16
  108. data/src/core/ext/transport/inproc/inproc_transport.cc +97 -115
  109. data/src/core/ext/xds/certificate_provider_store.cc +4 -4
  110. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
  111. data/src/core/ext/xds/xds_api.cc +15 -68
  112. data/src/core/ext/xds/xds_api.h +3 -7
  113. data/src/core/ext/xds/xds_bootstrap.h +0 -1
  114. data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
  115. data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
  116. data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
  117. data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
  118. data/src/core/ext/xds/xds_client.cc +122 -90
  119. data/src/core/ext/xds/xds_client.h +7 -2
  120. data/src/core/ext/xds/xds_client_grpc.cc +5 -24
  121. data/src/core/ext/xds/xds_cluster.cc +291 -183
  122. data/src/core/ext/xds/xds_cluster.h +11 -15
  123. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +32 -29
  124. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +35 -16
  125. data/src/core/ext/xds/xds_common_types.cc +208 -141
  126. data/src/core/ext/xds/xds_common_types.h +19 -13
  127. data/src/core/ext/xds/xds_endpoint.cc +214 -129
  128. data/src/core/ext/xds/xds_endpoint.h +4 -7
  129. data/src/core/ext/xds/xds_http_fault_filter.cc +56 -43
  130. data/src/core/ext/xds/xds_http_fault_filter.h +13 -21
  131. data/src/core/ext/xds/xds_http_filters.cc +60 -73
  132. data/src/core/ext/xds/xds_http_filters.h +67 -19
  133. data/src/core/ext/xds/xds_http_rbac_filter.cc +152 -207
  134. data/src/core/ext/xds/xds_http_rbac_filter.h +12 -15
  135. data/src/core/ext/xds/xds_lb_policy_registry.cc +122 -169
  136. data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
  137. data/src/core/ext/xds/xds_listener.cc +459 -417
  138. data/src/core/ext/xds/xds_listener.h +43 -47
  139. data/src/core/ext/xds/xds_resource_type.h +3 -11
  140. data/src/core/ext/xds/xds_resource_type_impl.h +8 -13
  141. data/src/core/ext/xds/xds_route_config.cc +94 -80
  142. data/src/core/ext/xds/xds_route_config.h +10 -10
  143. data/src/core/ext/xds/xds_routing.cc +2 -1
  144. data/src/core/ext/xds/xds_routing.h +2 -0
  145. data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -94
  146. data/src/core/ext/xds/xds_transport_grpc.cc +4 -5
  147. data/src/core/lib/address_utils/parse_address.cc +11 -10
  148. data/src/core/lib/channel/channel_args.h +16 -1
  149. data/src/core/lib/channel/channel_stack.cc +23 -20
  150. data/src/core/lib/channel/channel_stack.h +17 -4
  151. data/src/core/lib/channel/channel_stack_builder.cc +4 -7
  152. data/src/core/lib/channel/channel_stack_builder.h +14 -6
  153. data/src/core/lib/channel/channel_stack_builder_impl.cc +25 -7
  154. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
  155. data/src/core/lib/channel/channel_trace.cc +4 -5
  156. data/src/core/lib/channel/channelz.cc +1 -1
  157. data/src/core/lib/channel/connected_channel.cc +695 -35
  158. data/src/core/lib/channel/connected_channel.h +0 -4
  159. data/src/core/lib/channel/promise_based_filter.cc +1004 -140
  160. data/src/core/lib/channel/promise_based_filter.h +364 -87
  161. data/src/core/lib/compression/message_compress.cc +5 -5
  162. data/src/core/lib/debug/event_log.cc +88 -0
  163. data/src/core/lib/debug/event_log.h +81 -0
  164. data/src/core/lib/debug/histogram_view.cc +69 -0
  165. data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
  166. data/src/core/lib/debug/stats.cc +22 -119
  167. data/src/core/lib/debug/stats.h +29 -35
  168. data/src/core/lib/debug/stats_data.cc +224 -73
  169. data/src/core/lib/debug/stats_data.h +263 -122
  170. data/src/core/lib/event_engine/common_closures.h +71 -0
  171. data/src/core/lib/event_engine/default_event_engine.cc +38 -15
  172. data/src/core/lib/event_engine/default_event_engine.h +15 -3
  173. data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
  174. data/src/core/lib/event_engine/memory_allocator.cc +1 -1
  175. data/src/core/lib/event_engine/poller.h +10 -4
  176. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +618 -0
  177. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
  178. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +901 -0
  179. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  180. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  181. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  182. data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +13 -16
  183. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  184. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  185. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +267 -0
  186. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  187. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1270 -0
  188. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +682 -0
  189. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +453 -18
  190. data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
  191. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  192. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1081 -0
  193. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +361 -0
  194. data/src/core/lib/event_engine/posix_engine/timer.h +9 -8
  195. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +57 -194
  196. data/src/core/lib/event_engine/posix_engine/timer_manager.h +21 -49
  197. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +301 -0
  198. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +179 -0
  199. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +126 -0
  200. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  201. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +151 -0
  202. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
  203. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  204. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  205. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  206. data/src/core/lib/event_engine/slice.cc +7 -6
  207. data/src/core/lib/event_engine/slice_buffer.cc +2 -2
  208. data/src/core/lib/event_engine/thread_pool.cc +106 -25
  209. data/src/core/lib/event_engine/thread_pool.h +32 -9
  210. data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
  211. data/src/core/lib/event_engine/windows/windows_engine.cc +18 -12
  212. data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
  213. data/src/core/lib/experiments/config.cc +1 -1
  214. data/src/core/lib/experiments/experiments.cc +13 -2
  215. data/src/core/lib/experiments/experiments.h +8 -1
  216. data/src/core/lib/gpr/cpu_linux.cc +6 -2
  217. data/src/core/lib/gpr/log_linux.cc +3 -4
  218. data/src/core/lib/gpr/string.h +1 -1
  219. data/src/core/lib/gpr/tmpfile_posix.cc +3 -2
  220. data/src/core/lib/gprpp/load_file.cc +75 -0
  221. data/src/core/lib/gprpp/load_file.h +33 -0
  222. data/src/core/lib/gprpp/per_cpu.h +46 -0
  223. data/src/core/lib/gprpp/stat_posix.cc +5 -4
  224. data/src/core/lib/gprpp/stat_windows.cc +3 -2
  225. data/src/core/lib/gprpp/status_helper.h +1 -3
  226. data/src/core/lib/gprpp/strerror.cc +41 -0
  227. data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/strerror.h} +9 -13
  228. data/src/core/lib/gprpp/thd_windows.cc +1 -2
  229. data/src/core/lib/gprpp/time.cc +3 -4
  230. data/src/core/lib/gprpp/time.h +13 -2
  231. data/src/core/lib/gprpp/validation_errors.h +18 -1
  232. data/src/core/lib/http/httpcli.cc +40 -44
  233. data/src/core/lib/http/httpcli.h +6 -5
  234. data/src/core/lib/http/httpcli_security_connector.cc +4 -6
  235. data/src/core/lib/http/parser.cc +54 -65
  236. data/src/core/lib/iomgr/buffer_list.cc +105 -116
  237. data/src/core/lib/iomgr/buffer_list.h +60 -44
  238. data/src/core/lib/iomgr/call_combiner.cc +11 -10
  239. data/src/core/lib/iomgr/call_combiner.h +3 -4
  240. data/src/core/lib/iomgr/cfstream_handle.cc +13 -16
  241. data/src/core/lib/iomgr/closure.h +49 -5
  242. data/src/core/lib/iomgr/combiner.cc +2 -2
  243. data/src/core/lib/iomgr/endpoint.h +1 -1
  244. data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -25
  245. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
  246. data/src/core/lib/iomgr/error.cc +27 -42
  247. data/src/core/lib/iomgr/error.h +22 -152
  248. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  249. data/src/core/lib/iomgr/ev_epoll1_linux.cc +26 -25
  250. data/src/core/lib/iomgr/ev_poll_posix.cc +27 -31
  251. data/src/core/lib/iomgr/exec_ctx.cc +3 -4
  252. data/src/core/lib/iomgr/exec_ctx.h +2 -3
  253. data/src/core/lib/iomgr/executor.cc +1 -2
  254. data/src/core/lib/iomgr/internal_errqueue.cc +3 -1
  255. data/src/core/lib/iomgr/iocp_windows.cc +1 -0
  256. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  257. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -1
  258. data/src/core/lib/iomgr/iomgr_windows.cc +2 -1
  259. data/src/core/lib/iomgr/load_file.cc +5 -9
  260. data/src/core/lib/iomgr/lockfree_event.cc +10 -10
  261. data/src/core/lib/iomgr/pollset_windows.cc +4 -4
  262. data/src/core/lib/iomgr/python_util.h +2 -2
  263. data/src/core/lib/iomgr/resolve_address.cc +8 -3
  264. data/src/core/lib/iomgr/resolve_address.h +3 -4
  265. data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
  266. data/src/core/lib/iomgr/resolve_address_posix.cc +14 -25
  267. data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
  268. data/src/core/lib/iomgr/resolve_address_windows.cc +14 -17
  269. data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
  270. data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -29
  271. data/src/core/lib/iomgr/socket_utils_posix.cc +1 -0
  272. data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
  273. data/src/core/lib/iomgr/socket_windows.cc +2 -2
  274. data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -10
  275. data/src/core/lib/iomgr/tcp_client_posix.cc +31 -35
  276. data/src/core/lib/iomgr/tcp_client_windows.cc +8 -12
  277. data/src/core/lib/iomgr/tcp_posix.cc +92 -108
  278. data/src/core/lib/iomgr/tcp_server_posix.cc +34 -34
  279. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  280. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +18 -21
  281. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -13
  282. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +1 -1
  283. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -29
  284. data/src/core/lib/iomgr/tcp_windows.cc +27 -34
  285. data/src/core/lib/iomgr/timer.h +8 -8
  286. data/src/core/lib/iomgr/timer_generic.cc +9 -15
  287. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
  288. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +4 -3
  289. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -8
  290. data/src/core/lib/json/json_channel_args.h +42 -0
  291. data/src/core/lib/json/json_object_loader.cc +7 -2
  292. data/src/core/lib/json/json_object_loader.h +22 -0
  293. data/src/core/lib/json/json_util.cc +5 -5
  294. data/src/core/lib/json/json_util.h +4 -4
  295. data/src/core/lib/load_balancing/lb_policy.cc +1 -1
  296. data/src/core/lib/load_balancing/lb_policy.h +4 -0
  297. data/src/core/lib/load_balancing/subchannel_interface.h +0 -7
  298. data/src/core/lib/matchers/matchers.cc +3 -4
  299. data/src/core/lib/promise/activity.cc +16 -2
  300. data/src/core/lib/promise/activity.h +38 -15
  301. data/src/core/lib/promise/arena_promise.h +80 -51
  302. data/src/core/lib/promise/context.h +13 -6
  303. data/src/core/lib/promise/detail/basic_seq.h +9 -28
  304. data/src/core/lib/promise/detail/promise_factory.h +58 -10
  305. data/src/core/lib/promise/detail/status.h +28 -0
  306. data/src/core/lib/promise/detail/switch.h +1455 -0
  307. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -1
  308. data/src/core/lib/promise/for_each.h +129 -0
  309. data/src/core/lib/promise/loop.h +7 -5
  310. data/src/core/lib/promise/map_pipe.h +87 -0
  311. data/src/core/lib/promise/pipe.cc +19 -0
  312. data/src/core/lib/promise/pipe.h +505 -0
  313. data/src/core/lib/promise/poll.h +13 -0
  314. data/src/core/lib/promise/seq.h +3 -5
  315. data/src/core/lib/promise/sleep.cc +5 -4
  316. data/src/core/lib/promise/sleep.h +1 -2
  317. data/src/core/lib/promise/try_concurrently.h +341 -0
  318. data/src/core/lib/promise/try_seq.h +10 -13
  319. data/src/core/lib/resolver/server_address.cc +1 -0
  320. data/src/core/lib/resolver/server_address.h +1 -3
  321. data/src/core/lib/resource_quota/api.cc +0 -1
  322. data/src/core/lib/resource_quota/arena.cc +19 -0
  323. data/src/core/lib/resource_quota/arena.h +89 -0
  324. data/src/core/lib/resource_quota/memory_quota.cc +1 -0
  325. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
  326. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
  327. data/src/core/lib/security/authorization/matchers.cc +25 -22
  328. data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
  329. data/src/core/lib/security/context/security_context.h +10 -0
  330. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
  331. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  332. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
  333. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
  334. data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
  335. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
  336. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
  337. data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -0
  338. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -24
  339. data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
  340. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -2
  341. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
  342. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -5
  343. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +24 -30
  344. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -5
  345. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
  346. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +19 -27
  347. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
  348. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -41
  349. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
  350. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +6 -11
  351. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +8 -15
  352. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  353. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +2 -6
  354. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +1 -4
  355. data/src/core/lib/security/security_connector/local/local_security_connector.cc +7 -11
  356. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +9 -14
  357. data/src/core/lib/security/security_connector/ssl_utils.cc +5 -7
  358. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -27
  359. data/src/core/lib/security/transport/client_auth_filter.cc +1 -1
  360. data/src/core/lib/security/transport/secure_endpoint.cc +26 -28
  361. data/src/core/lib/security/transport/security_handshaker.cc +53 -53
  362. data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
  363. data/src/core/lib/security/transport/tsi_error.cc +6 -3
  364. data/src/core/lib/security/util/json_util.cc +4 -5
  365. data/src/core/lib/service_config/service_config.h +1 -1
  366. data/src/core/lib/service_config/service_config_impl.cc +111 -158
  367. data/src/core/lib/service_config/service_config_impl.h +14 -17
  368. data/src/core/lib/service_config/service_config_parser.cc +14 -31
  369. data/src/core/lib/service_config/service_config_parser.h +14 -10
  370. data/src/core/lib/slice/b64.cc +2 -2
  371. data/src/core/lib/slice/slice.cc +7 -1
  372. data/src/core/lib/slice/slice.h +19 -6
  373. data/src/core/lib/slice/slice_buffer.cc +13 -14
  374. data/src/core/lib/slice/slice_internal.h +13 -21
  375. data/src/core/lib/slice/slice_refcount.h +34 -19
  376. data/src/core/lib/surface/byte_buffer.cc +3 -4
  377. data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
  378. data/src/core/lib/surface/call.cc +1366 -239
  379. data/src/core/lib/surface/call.h +44 -0
  380. data/src/core/lib/surface/call_details.cc +3 -3
  381. data/src/core/lib/surface/call_trace.cc +113 -0
  382. data/src/core/lib/surface/call_trace.h +30 -0
  383. data/src/core/lib/surface/channel.cc +44 -49
  384. data/src/core/lib/surface/channel.h +9 -1
  385. data/src/core/lib/surface/channel_ping.cc +1 -1
  386. data/src/core/lib/surface/channel_stack_type.cc +4 -0
  387. data/src/core/lib/surface/channel_stack_type.h +2 -0
  388. data/src/core/lib/surface/completion_queue.cc +38 -52
  389. data/src/core/lib/surface/init.cc +8 -39
  390. data/src/core/lib/surface/init_internally.h +8 -0
  391. data/src/core/lib/surface/lame_client.cc +10 -8
  392. data/src/core/lib/surface/server.cc +48 -70
  393. data/src/core/lib/surface/server.h +3 -4
  394. data/src/core/lib/surface/validate_metadata.cc +11 -12
  395. data/src/core/lib/surface/version.cc +2 -2
  396. data/src/core/lib/transport/connectivity_state.cc +2 -2
  397. data/src/core/lib/transport/error_utils.cc +34 -28
  398. data/src/core/lib/transport/error_utils.h +3 -3
  399. data/src/core/lib/transport/handshaker.cc +14 -14
  400. data/src/core/lib/transport/handshaker.h +1 -1
  401. data/src/core/lib/transport/handshaker_factory.h +26 -0
  402. data/src/core/lib/transport/handshaker_registry.cc +8 -2
  403. data/src/core/lib/transport/handshaker_registry.h +3 -4
  404. data/src/core/lib/transport/http_connect_handshaker.cc +23 -24
  405. data/src/core/lib/transport/metadata_batch.h +17 -1
  406. data/src/core/lib/transport/parsed_metadata.cc +2 -6
  407. data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
  408. data/src/core/lib/transport/transport.cc +63 -17
  409. data/src/core/lib/transport/transport.h +64 -68
  410. data/src/core/lib/transport/transport_impl.h +1 -1
  411. data/src/core/lib/transport/transport_op_string.cc +7 -6
  412. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -10
  413. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -14
  414. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +10 -10
  415. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +8 -8
  416. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
  417. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +7 -7
  418. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +7 -6
  419. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  420. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +5 -5
  421. data/src/core/tsi/fake_transport_security.cc +3 -3
  422. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +7 -3
  423. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  424. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +6 -2
  425. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -2
  426. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +0 -3
  427. data/src/ruby/lib/grpc/version.rb +1 -1
  428. data/src/ruby/spec/channel_spec.rb +0 -43
  429. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  430. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  431. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  432. data/third_party/zlib/compress.c +3 -3
  433. data/third_party/zlib/crc32.c +21 -12
  434. data/third_party/zlib/deflate.c +112 -106
  435. data/third_party/zlib/deflate.h +2 -2
  436. data/third_party/zlib/gzlib.c +1 -1
  437. data/third_party/zlib/gzread.c +3 -5
  438. data/third_party/zlib/gzwrite.c +1 -1
  439. data/third_party/zlib/infback.c +10 -7
  440. data/third_party/zlib/inflate.c +5 -2
  441. data/third_party/zlib/inftrees.c +2 -2
  442. data/third_party/zlib/inftrees.h +1 -1
  443. data/third_party/zlib/trees.c +61 -62
  444. data/third_party/zlib/uncompr.c +2 -2
  445. data/third_party/zlib/zconf.h +16 -3
  446. data/third_party/zlib/zlib.h +10 -10
  447. data/third_party/zlib/zutil.c +9 -7
  448. data/third_party/zlib/zutil.h +1 -0
  449. metadata +55 -18
  450. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
  451. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
  452. data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
  453. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  454. data/src/core/lib/gpr/murmur_hash.h +0 -29
  455. data/src/core/lib/gpr/tls.h +0 -156
  456. data/src/core/lib/promise/call_push_pull.h +0 -148
  457. data/src/core/lib/slice/slice_api.cc +0 -39
  458. data/src/core/lib/slice/slice_buffer_api.cc +0 -35
  459. data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -24,7 +24,6 @@
24
24
  #include <memory>
25
25
  #include <vector>
26
26
 
27
- #include "absl/memory/memory.h"
28
27
  #include "absl/strings/str_format.h"
29
28
  #include "absl/strings/str_join.h"
30
29
 
@@ -33,7 +32,6 @@
33
32
 
34
33
  #include "src/core/lib/config/core_configuration.h"
35
34
  #include "src/core/lib/json/json_util.h"
36
- #include "src/core/lib/security/certificate_provider/certificate_provider_registry.h"
37
35
  #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
38
36
 
39
37
  namespace grpc_core {
@@ -77,8 +75,7 @@ FileWatcherCertificateProviderFactory::Config::Parse(const Json& config_json,
77
75
  grpc_error_handle* error) {
78
76
  auto config = MakeRefCounted<FileWatcherCertificateProviderFactory::Config>();
79
77
  if (config_json.type() != Json::Type::OBJECT) {
80
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
81
- "error:config type should be OBJECT.");
78
+ *error = GRPC_ERROR_CREATE("error:config type should be OBJECT.");
82
79
  return nullptr;
83
80
  }
84
81
  std::vector<grpc_error_handle> error_list;
@@ -88,14 +85,14 @@ FileWatcherCertificateProviderFactory::Config::Parse(const Json& config_json,
88
85
  &config->private_key_file_, &error_list, false);
89
86
  if (config->identity_cert_file_.empty() !=
90
87
  config->private_key_file_.empty()) {
91
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
88
+ error_list.push_back(GRPC_ERROR_CREATE(
92
89
  "fields \"certificate_file\" and \"private_key_file\" must be both set "
93
90
  "or both unset."));
94
91
  }
95
92
  ParseJsonObjectField(config_json.object_value(), "ca_certificate_file",
96
93
  &config->root_cert_file_, &error_list, false);
97
94
  if (config->identity_cert_file_.empty() && config->root_cert_file_.empty()) {
98
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
95
+ error_list.push_back(GRPC_ERROR_CREATE(
99
96
  "At least one of \"certificate_file\" and \"ca_certificate_file\" must "
100
97
  "be specified."));
101
98
  }
@@ -147,7 +144,7 @@ FileWatcherCertificateProviderFactory::CreateCertificateProvider(
147
144
  void RegisterFileWatcherCertificateProvider(
148
145
  CoreConfiguration::Builder* builder) {
149
146
  builder->certificate_provider_registry()->RegisterCertificateProviderFactory(
150
- absl::make_unique<FileWatcherCertificateProviderFactory>());
147
+ std::make_unique<FileWatcherCertificateProviderFactory>());
151
148
  }
152
149
 
153
150
  } // namespace grpc_core
@@ -82,10 +82,6 @@ XdsApi::XdsApi(XdsClient* client, TraceFlag* tracer,
82
82
  tracer_(tracer),
83
83
  node_(node),
84
84
  symtab_(symtab),
85
- build_version_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING, " ",
86
- grpc_version_string(),
87
- GRPC_XDS_USER_AGENT_NAME_SUFFIX_STRING,
88
- GRPC_XDS_USER_AGENT_VERSION_SUFFIX_STRING)),
89
85
  user_agent_name_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING,
90
86
  GRPC_XDS_USER_AGENT_NAME_SUFFIX_STRING)),
91
87
  user_agent_version_(
@@ -100,7 +96,6 @@ struct XdsApiContext {
100
96
  TraceFlag* tracer;
101
97
  upb_DefPool* symtab;
102
98
  upb_Arena* arena;
103
- bool use_v3;
104
99
  };
105
100
 
106
101
  void PopulateMetadataValue(const XdsApiContext& context,
@@ -162,41 +157,7 @@ void PopulateMetadataValue(const XdsApiContext& context,
162
157
  }
163
158
  }
164
159
 
165
- // Helper functions to manually do protobuf string encoding, so that we
166
- // can populate the node build_version field that was removed in v3.
167
- std::string EncodeVarint(uint64_t val) {
168
- std::string data;
169
- do {
170
- uint8_t byte = val & 0x7fU;
171
- val >>= 7;
172
- if (val) byte |= 0x80U;
173
- data += byte;
174
- } while (val);
175
- return data;
176
- }
177
- std::string EncodeTag(uint32_t field_number, uint8_t wire_type) {
178
- return EncodeVarint((field_number << 3) | wire_type);
179
- }
180
- std::string EncodeStringField(uint32_t field_number, const std::string& str) {
181
- static const uint8_t kDelimitedWireType = 2;
182
- return EncodeTag(field_number, kDelimitedWireType) +
183
- EncodeVarint(str.size()) + str;
184
- }
185
-
186
- void PopulateBuildVersion(const XdsApiContext& context,
187
- envoy_config_core_v3_Node* node_msg,
188
- const std::string& build_version) {
189
- std::string encoded_build_version = EncodeStringField(5, build_version);
190
- // TODO(roth): This should use upb_Message_AddUnknown(), but that API is
191
- // broken in the current version of upb, so we're using the internal
192
- // API for now. Change this once we upgrade to a version of upb that
193
- // fixes this bug.
194
- _upb_Message_AddUnknown(node_msg, encoded_build_version.data(),
195
- encoded_build_version.size(), context.arena);
196
- }
197
-
198
160
  void PopulateNode(const XdsApiContext& context, const XdsBootstrap::Node* node,
199
- const std::string& build_version,
200
161
  const std::string& user_agent_name,
201
162
  const std::string& user_agent_version,
202
163
  envoy_config_core_v3_Node* node_msg) {
@@ -232,9 +193,6 @@ void PopulateNode(const XdsApiContext& context, const XdsBootstrap::Node* node,
232
193
  }
233
194
  }
234
195
  }
235
- if (!context.use_v3) {
236
- PopulateBuildVersion(context, node_msg, build_version);
237
- }
238
196
  envoy_config_core_v3_Node_set_user_agent_name(
239
197
  node_msg, StdStringToUpbString(user_agent_name));
240
198
  envoy_config_core_v3_Node_set_user_agent_version(
@@ -271,13 +229,11 @@ std::string SerializeDiscoveryRequest(
271
229
  } // namespace
272
230
 
273
231
  std::string XdsApi::CreateAdsRequest(
274
- const XdsBootstrap::XdsServer& server, absl::string_view type_url,
275
- absl::string_view version, absl::string_view nonce,
276
- const std::vector<std::string>& resource_names, absl::Status status,
277
- bool populate_node) {
232
+ absl::string_view type_url, absl::string_view version,
233
+ absl::string_view nonce, const std::vector<std::string>& resource_names,
234
+ absl::Status status, bool populate_node) {
278
235
  upb::Arena arena;
279
- const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr(),
280
- server.ShouldUseV3()};
236
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr()};
281
237
  // Create a request.
282
238
  envoy_service_discovery_v3_DiscoveryRequest* request =
283
239
  envoy_service_discovery_v3_DiscoveryRequest_new(arena.ptr());
@@ -317,8 +273,8 @@ std::string XdsApi::CreateAdsRequest(
317
273
  envoy_config_core_v3_Node* node_msg =
318
274
  envoy_service_discovery_v3_DiscoveryRequest_mutable_node(request,
319
275
  arena.ptr());
320
- PopulateNode(context, node_, build_version_, user_agent_name_,
321
- user_agent_version_, node_msg);
276
+ PopulateNode(context, node_, user_agent_name_, user_agent_version_,
277
+ node_msg);
322
278
  envoy_config_core_v3_Node_add_client_features(
323
279
  node_msg, upb_StringView_FromString("xds.config.resource-in-sotw"),
324
280
  context.arena);
@@ -350,12 +306,10 @@ void MaybeLogDiscoveryResponse(
350
306
 
351
307
  } // namespace
352
308
 
353
- absl::Status XdsApi::ParseAdsResponse(const XdsBootstrap::XdsServer& server,
354
- absl::string_view encoded_response,
309
+ absl::Status XdsApi::ParseAdsResponse(absl::string_view encoded_response,
355
310
  AdsResponseParserInterface* parser) {
356
311
  upb::Arena arena;
357
- const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr(),
358
- server.ShouldUseV3()};
312
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr()};
359
313
  // Decode the response.
360
314
  const envoy_service_discovery_v3_DiscoveryResponse* response =
361
315
  envoy_service_discovery_v3_DiscoveryResponse_parse(
@@ -391,8 +345,7 @@ absl::Status XdsApi::ParseAdsResponse(const XdsBootstrap::XdsServer& server,
391
345
  UpbStringToAbsl(google_protobuf_Any_value(resources[i]));
392
346
  // Unwrap Resource messages, if so wrapped.
393
347
  absl::string_view resource_name;
394
- if (type_url == "envoy.api.v2.Resource" ||
395
- type_url == "envoy.service.discovery.v3.Resource") {
348
+ if (type_url == "envoy.service.discovery.v3.Resource") {
396
349
  const auto* resource_wrapper = envoy_service_discovery_v3_Resource_parse(
397
350
  serialized_resource.data(), serialized_resource.size(), arena.ptr());
398
351
  if (resource_wrapper == nullptr) {
@@ -442,11 +395,9 @@ std::string SerializeLrsRequest(
442
395
 
443
396
  } // namespace
444
397
 
445
- std::string XdsApi::CreateLrsInitialRequest(
446
- const XdsBootstrap::XdsServer& server) {
398
+ std::string XdsApi::CreateLrsInitialRequest() {
447
399
  upb::Arena arena;
448
- const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr(),
449
- server.ShouldUseV3()};
400
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr()};
450
401
  // Create a request.
451
402
  envoy_service_load_stats_v3_LoadStatsRequest* request =
452
403
  envoy_service_load_stats_v3_LoadStatsRequest_new(arena.ptr());
@@ -454,8 +405,7 @@ std::string XdsApi::CreateLrsInitialRequest(
454
405
  envoy_config_core_v3_Node* node_msg =
455
406
  envoy_service_load_stats_v3_LoadStatsRequest_mutable_node(request,
456
407
  arena.ptr());
457
- PopulateNode(context, node_, build_version_, user_agent_name_,
458
- user_agent_version_, node_msg);
408
+ PopulateNode(context, node_, user_agent_name_, user_agent_version_, node_msg);
459
409
  envoy_config_core_v3_Node_add_client_features(
460
410
  node_msg,
461
411
  upb_StringView_FromString("envoy.lrs.supports_send_all_clusters"),
@@ -517,8 +467,7 @@ void LocalityStatsPopulate(
517
467
  std::string XdsApi::CreateLrsRequest(
518
468
  ClusterLoadReportMap cluster_load_report_map) {
519
469
  upb::Arena arena;
520
- const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr(),
521
- /*use_v3=*/false};
470
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr()};
522
471
  // Create a request.
523
472
  envoy_service_load_stats_v3_LoadStatsRequest* request =
524
473
  envoy_service_load_stats_v3_LoadStatsRequest_new(arena.ptr());
@@ -636,10 +585,8 @@ std::string XdsApi::AssembleClientConfig(
636
585
  // Fill-in the node information
637
586
  auto* node = envoy_service_status_v3_ClientConfig_mutable_node(client_config,
638
587
  arena.ptr());
639
- const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr(),
640
- /*use_v3=*/true};
641
- PopulateNode(context, node_, build_version_, user_agent_name_,
642
- user_agent_version_, node);
588
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr()};
589
+ PopulateNode(context, node_, user_agent_name_, user_agent_version_, node);
643
590
  // Dump each resource.
644
591
  std::vector<std::string> type_url_storage;
645
592
  for (const auto& p : resource_type_metadata_map) {
@@ -150,9 +150,7 @@ class XdsApi {
150
150
  upb::SymbolTable* symtab);
151
151
 
152
152
  // Creates an ADS request.
153
- // Takes ownership of \a error.
154
- std::string CreateAdsRequest(const XdsBootstrap::XdsServer& server,
155
- absl::string_view type_url,
153
+ std::string CreateAdsRequest(absl::string_view type_url,
156
154
  absl::string_view version,
157
155
  absl::string_view nonce,
158
156
  const std::vector<std::string>& resource_names,
@@ -160,12 +158,11 @@ class XdsApi {
160
158
 
161
159
  // Returns non-OK when failing to deserialize response message.
162
160
  // Otherwise, all events are reported to the parser.
163
- absl::Status ParseAdsResponse(const XdsBootstrap::XdsServer& server,
164
- absl::string_view encoded_response,
161
+ absl::Status ParseAdsResponse(absl::string_view encoded_response,
165
162
  AdsResponseParserInterface* parser);
166
163
 
167
164
  // Creates an initial LRS request.
168
- std::string CreateLrsInitialRequest(const XdsBootstrap::XdsServer& server);
165
+ std::string CreateLrsInitialRequest();
169
166
 
170
167
  // Creates an LRS request sending a client-side load report.
171
168
  std::string CreateLrsRequest(ClusterLoadReportMap cluster_load_report_map);
@@ -186,7 +183,6 @@ class XdsApi {
186
183
  TraceFlag* tracer_;
187
184
  const XdsBootstrap::Node* node_; // Do not own.
188
185
  upb::SymbolTable* symtab_; // Do not own.
189
- const std::string build_version_;
190
186
  const std::string user_agent_name_;
191
187
  const std::string user_agent_version_;
192
188
  };
@@ -46,7 +46,6 @@ class XdsBootstrap {
46
46
  virtual ~XdsServer() = default;
47
47
 
48
48
  virtual const std::string& server_uri() const = 0;
49
- virtual bool ShouldUseV3() const = 0;
50
49
  virtual bool IgnoreResourceDeletion() const = 0;
51
50
 
52
51
  virtual bool Equals(const XdsServer& other) const = 0;
@@ -25,7 +25,6 @@
25
25
  #include <utility>
26
26
  #include <vector>
27
27
 
28
- #include "absl/memory/memory.h"
29
28
  #include "absl/status/status.h"
30
29
  #include "absl/status/statusor.h"
31
30
  #include "absl/strings/match.h"
@@ -39,7 +38,6 @@
39
38
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
40
39
  #include "src/core/lib/json/json.h"
41
40
  #include "src/core/lib/json/json_object_loader.h"
42
- #include "src/core/lib/security/certificate_provider/certificate_provider_factory.h"
43
41
  #include "src/core/lib/security/credentials/channel_creds_registry.h"
44
42
 
45
43
  namespace grpc_core {
@@ -95,17 +93,11 @@ GrpcXdsBootstrap::GrpcXdsServer::ChannelCreds::JsonLoader(const JsonArgs&) {
95
93
 
96
94
  namespace {
97
95
 
98
- constexpr absl::string_view kServerFeatureXdsV3 = "xds_v3";
99
96
  constexpr absl::string_view kServerFeatureIgnoreResourceDeletion =
100
97
  "ignore_resource_deletion";
101
98
 
102
99
  } // namespace
103
100
 
104
- bool GrpcXdsBootstrap::GrpcXdsServer::ShouldUseV3() const {
105
- return server_features_.find(std::string(kServerFeatureXdsV3)) !=
106
- server_features_.end();
107
- }
108
-
109
101
  bool GrpcXdsBootstrap::GrpcXdsServer::IgnoreResourceDeletion() const {
110
102
  return server_features_.find(std::string(
111
103
  kServerFeatureIgnoreResourceDeletion)) != server_features_.end();
@@ -168,9 +160,8 @@ void GrpcXdsBootstrap::GrpcXdsServer::JsonPostLoad(const Json& json,
168
160
  const Json::Array& array = it->second.array_value();
169
161
  for (const Json& feature_json : array) {
170
162
  if (feature_json.type() == Json::Type::STRING &&
171
- (feature_json.string_value() == kServerFeatureXdsV3 ||
172
- feature_json.string_value() ==
173
- kServerFeatureIgnoreResourceDeletion)) {
163
+ (feature_json.string_value() ==
164
+ kServerFeatureIgnoreResourceDeletion)) {
174
165
  server_features_.insert(feature_json.string_value());
175
166
  }
176
167
  }
@@ -235,7 +226,7 @@ absl::StatusOr<std::unique_ptr<GrpcXdsBootstrap>> GrpcXdsBootstrap::Create(
235
226
  };
236
227
  auto bootstrap = LoadFromJson<GrpcXdsBootstrap>(*json, XdsJsonArgs());
237
228
  if (!bootstrap.ok()) return bootstrap.status();
238
- return absl::make_unique<GrpcXdsBootstrap>(std::move(*bootstrap));
229
+ return std::make_unique<GrpcXdsBootstrap>(std::move(*bootstrap));
239
230
  }
240
231
 
241
232
  const JsonLoaderInterface* GrpcXdsBootstrap::JsonLoader(const JsonArgs&) {
@@ -31,6 +31,9 @@
31
31
 
32
32
  #include "src/core/ext/xds/certificate_provider_store.h"
33
33
  #include "src/core/ext/xds/xds_bootstrap.h"
34
+ #include "src/core/ext/xds/xds_cluster_specifier_plugin.h"
35
+ #include "src/core/ext/xds/xds_http_filters.h"
36
+ #include "src/core/ext/xds/xds_lb_policy_registry.h"
34
37
  #include "src/core/lib/gprpp/validation_errors.h"
35
38
  #include "src/core/lib/json/json.h"
36
39
  #include "src/core/lib/json/json_args.h"
@@ -74,7 +77,6 @@ class GrpcXdsBootstrap : public XdsBootstrap {
74
77
  public:
75
78
  const std::string& server_uri() const override { return server_uri_; }
76
79
 
77
- bool ShouldUseV3() const override;
78
80
  bool IgnoreResourceDeletion() const override;
79
81
 
80
82
  bool Equals(const XdsServer& other) const override;
@@ -149,6 +151,16 @@ class GrpcXdsBootstrap : public XdsBootstrap {
149
151
  const {
150
152
  return certificate_providers_;
151
153
  }
154
+ const XdsHttpFilterRegistry& http_filter_registry() const {
155
+ return http_filter_registry_;
156
+ }
157
+ const XdsClusterSpecifierPluginRegistry& cluster_specifier_plugin_registry()
158
+ const {
159
+ return cluster_specifier_plugin_registry_;
160
+ }
161
+ const XdsLbPolicyRegistry& lb_policy_registry() const {
162
+ return lb_policy_registry_;
163
+ }
152
164
 
153
165
  // Exposed for testing purposes only.
154
166
  const std::map<std::string, GrpcAuthority>& authorities() const {
@@ -162,6 +174,9 @@ class GrpcXdsBootstrap : public XdsBootstrap {
162
174
  std::string server_listener_resource_name_template_;
163
175
  std::map<std::string, GrpcAuthority> authorities_;
164
176
  CertificateProviderStore::PluginDefinitionMap certificate_providers_;
177
+ XdsHttpFilterRegistry http_filter_registry_;
178
+ XdsClusterSpecifierPluginRegistry cluster_specifier_plugin_registry_;
179
+ XdsLbPolicyRegistry lb_policy_registry_;
165
180
  };
166
181
 
167
182
  } // namespace grpc_core
@@ -23,7 +23,6 @@
23
23
  #include <utility>
24
24
 
25
25
  #include "absl/functional/bind_front.h"
26
- #include "absl/memory/memory.h"
27
26
  #include "absl/types/optional.h"
28
27
 
29
28
  #include <grpc/support/log.h>
@@ -59,12 +58,11 @@ class RootCertificatesWatcher
59
58
  }
60
59
 
61
60
  void OnError(grpc_error_handle root_cert_error,
62
- grpc_error_handle identity_cert_error) override {
63
- if (!GRPC_ERROR_IS_NONE(root_cert_error)) {
61
+ grpc_error_handle /*identity_cert_error*/) override {
62
+ if (!root_cert_error.ok()) {
64
63
  parent_->SetErrorForCert(cert_name_, root_cert_error /* pass the ref */,
65
64
  absl::nullopt);
66
65
  }
67
- GRPC_ERROR_UNREF(identity_cert_error);
68
66
  }
69
67
 
70
68
  private:
@@ -93,13 +91,12 @@ class IdentityCertificatesWatcher
93
91
  }
94
92
  }
95
93
 
96
- void OnError(grpc_error_handle root_cert_error,
94
+ void OnError(grpc_error_handle /*root_cert_error*/,
97
95
  grpc_error_handle identity_cert_error) override {
98
- if (!GRPC_ERROR_IS_NONE(identity_cert_error)) {
96
+ if (!identity_cert_error.ok()) {
99
97
  parent_->SetErrorForCert(cert_name_, absl::nullopt,
100
98
  identity_cert_error /* pass the ref */);
101
99
  }
102
- GRPC_ERROR_UNREF(root_cert_error);
103
100
  }
104
101
 
105
102
  private:
@@ -149,7 +146,7 @@ void XdsCertificateProvider::ClusterCertificateState::
149
146
  root_cert_watcher_ = nullptr;
150
147
  xds_certificate_provider_->distributor_->SetErrorForCert(
151
148
  "",
152
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
149
+ GRPC_ERROR_CREATE(
153
150
  "No certificate provider available for root certificates"),
154
151
  absl::nullopt);
155
152
  }
@@ -180,7 +177,7 @@ void XdsCertificateProvider::ClusterCertificateState::
180
177
  identity_cert_watcher_ = nullptr;
181
178
  xds_certificate_provider_->distributor_->SetErrorForCert(
182
179
  "", absl::nullopt,
183
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
180
+ GRPC_ERROR_CREATE(
184
181
  "No certificate provider available for identity certificates"));
185
182
  }
186
183
  }
@@ -191,7 +188,7 @@ void XdsCertificateProvider::ClusterCertificateState::
191
188
  void XdsCertificateProvider::ClusterCertificateState::UpdateRootCertWatcher(
192
189
  const std::string& cert_name,
193
190
  grpc_tls_certificate_distributor* root_cert_distributor) {
194
- auto watcher = absl::make_unique<RootCertificatesWatcher>(
191
+ auto watcher = std::make_unique<RootCertificatesWatcher>(
195
192
  xds_certificate_provider_->distributor_, cert_name);
196
193
  root_cert_watcher_ = watcher.get();
197
194
  root_cert_distributor->WatchTlsCertificates(std::move(watcher),
@@ -201,7 +198,7 @@ void XdsCertificateProvider::ClusterCertificateState::UpdateRootCertWatcher(
201
198
  void XdsCertificateProvider::ClusterCertificateState::UpdateIdentityCertWatcher(
202
199
  const std::string& cert_name,
203
200
  grpc_tls_certificate_distributor* identity_cert_distributor) {
204
- auto watcher = absl::make_unique<IdentityCertificatesWatcher>(
201
+ auto watcher = std::make_unique<IdentityCertificatesWatcher>(
205
202
  xds_certificate_provider_->distributor_, cert_name);
206
203
  identity_cert_watcher_ = watcher.get();
207
204
  identity_cert_distributor->WatchTlsCertificates(
@@ -222,7 +219,7 @@ void XdsCertificateProvider::ClusterCertificateState::WatchStatusCallback(
222
219
  if (root_cert_distributor_ == nullptr) {
223
220
  xds_certificate_provider_->distributor_->SetErrorForCert(
224
221
  cert_name,
225
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
222
+ GRPC_ERROR_CREATE(
226
223
  "No certificate provider available for root certificates"),
227
224
  absl::nullopt);
228
225
  } else {
@@ -242,7 +239,7 @@ void XdsCertificateProvider::ClusterCertificateState::WatchStatusCallback(
242
239
  if (identity_cert_distributor_ == nullptr) {
243
240
  xds_certificate_provider_->distributor_->SetErrorForCert(
244
241
  cert_name, absl::nullopt,
245
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
242
+ GRPC_ERROR_CREATE(
246
243
  "No certificate provider available for identity certificates"));
247
244
  } else {
248
245
  UpdateIdentityCertWatcher(cert_name, identity_cert_distributor_.get());
@@ -290,10 +287,10 @@ void XdsCertificateProvider::UpdateRootCertNameAndDistributor(
290
287
  MutexLock lock(&mu_);
291
288
  auto it = certificate_state_map_.find(cert_name);
292
289
  if (it == certificate_state_map_.end()) {
293
- it = certificate_state_map_
294
- .emplace(cert_name,
295
- absl::make_unique<ClusterCertificateState>(this))
296
- .first;
290
+ it =
291
+ certificate_state_map_
292
+ .emplace(cert_name, std::make_unique<ClusterCertificateState>(this))
293
+ .first;
297
294
  }
298
295
  it->second->UpdateRootCertNameAndDistributor(cert_name, root_cert_name,
299
296
  root_cert_distributor);
@@ -315,10 +312,10 @@ void XdsCertificateProvider::UpdateIdentityCertNameAndDistributor(
315
312
  MutexLock lock(&mu_);
316
313
  auto it = certificate_state_map_.find(cert_name);
317
314
  if (it == certificate_state_map_.end()) {
318
- it = certificate_state_map_
319
- .emplace(cert_name,
320
- absl::make_unique<ClusterCertificateState>(this))
321
- .first;
315
+ it =
316
+ certificate_state_map_
317
+ .emplace(cert_name, std::make_unique<ClusterCertificateState>(this))
318
+ .first;
322
319
  }
323
320
  it->second->UpdateIdentityCertNameAndDistributor(
324
321
  cert_name, identity_cert_name, identity_cert_distributor);
@@ -366,10 +363,10 @@ void XdsCertificateProvider::WatchStatusCallback(std::string cert_name,
366
363
  MutexLock lock(&mu_);
367
364
  auto it = certificate_state_map_.find(cert_name);
368
365
  if (it == certificate_state_map_.end()) {
369
- it = certificate_state_map_
370
- .emplace(cert_name,
371
- absl::make_unique<ClusterCertificateState>(this))
372
- .first;
366
+ it =
367
+ certificate_state_map_
368
+ .emplace(cert_name, std::make_unique<ClusterCertificateState>(this))
369
+ .first;
373
370
  }
374
371
  it->second->WatchStatusCallback(cert_name, root_being_watched,
375
372
  identity_being_watched);
@@ -29,7 +29,6 @@
29
29
  #include "src/core/lib/channel/channel_stack.h"
30
30
  #include "src/core/lib/config/core_configuration.h"
31
31
  #include "src/core/lib/gpr/useful.h"
32
- #include "src/core/lib/surface/channel_init.h"
33
32
  #include "src/core/lib/surface/channel_stack_type.h"
34
33
 
35
34
  namespace grpc_core {