grpc 1.50.0.pre1 → 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.
- checksums.yaml +4 -4
- data/Makefile +131 -42
- data/include/grpc/event_engine/event_engine.h +10 -3
- data/include/grpc/event_engine/slice_buffer.h +17 -0
- data/include/grpc/grpc.h +0 -10
- data/include/grpc/impl/codegen/grpc_types.h +1 -5
- data/include/grpc/impl/codegen/port_platform.h +0 -3
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +19 -13
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -5
- data/src/core/ext/filters/client_channel/client_channel.cc +120 -140
- data/src/core/ext/filters/client_channel/client_channel.h +3 -4
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +0 -2
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
- data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +20 -47
- data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +3 -4
- data/src/core/ext/filters/client_channel/http_proxy.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +8 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +35 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +41 -29
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +9 -11
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -12
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +8 -10
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +26 -27
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +7 -9
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +44 -26
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +17 -27
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +13 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +48 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -126
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +22 -23
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +50 -52
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -4
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -26
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +63 -46
- data/src/core/ext/filters/client_channel/retry_filter.cc +80 -102
- data/src/core/ext/filters/client_channel/retry_service_config.cc +192 -234
- data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
- data/src/core/ext/filters/client_channel/retry_throttle.cc +8 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +8 -7
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/subchannel.cc +21 -25
- data/src/core/ext/filters/client_channel/subchannel.h +2 -2
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
- data/src/core/ext/filters/deadline/deadline_filter.cc +13 -14
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
- data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
- data/src/core/ext/filters/http/client/http_client_filter.cc +16 -16
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +13 -13
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +34 -34
- data/src/core/ext/filters/http/server/http_server_filter.cc +26 -25
- data/src/core/ext/filters/message_size/message_size_filter.cc +86 -117
- data/src/core/ext/filters/message_size/message_size_filter.h +22 -15
- data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +1 -1
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +17 -21
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +57 -72
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +212 -253
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -3
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +16 -15
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +13 -13
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +15 -17
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +31 -39
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +24 -8
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -52
- data/src/core/ext/transport/chttp2/transport/varint.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/varint.h +11 -8
- data/src/core/ext/transport/chttp2/transport/writing.cc +16 -16
- data/src/core/ext/transport/inproc/inproc_transport.cc +97 -115
- data/src/core/ext/xds/certificate_provider_store.cc +4 -4
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
- data/src/core/ext/xds/xds_api.cc +15 -68
- data/src/core/ext/xds/xds_api.h +3 -7
- data/src/core/ext/xds/xds_bootstrap.h +0 -1
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
- data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
- data/src/core/ext/xds/xds_client.cc +122 -90
- data/src/core/ext/xds/xds_client.h +7 -2
- data/src/core/ext/xds/xds_client_grpc.cc +5 -24
- data/src/core/ext/xds/xds_cluster.cc +291 -183
- data/src/core/ext/xds/xds_cluster.h +11 -15
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +32 -29
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +35 -16
- data/src/core/ext/xds/xds_common_types.cc +208 -141
- data/src/core/ext/xds/xds_common_types.h +19 -13
- data/src/core/ext/xds/xds_endpoint.cc +214 -129
- data/src/core/ext/xds/xds_endpoint.h +4 -7
- data/src/core/ext/xds/xds_http_fault_filter.cc +56 -43
- data/src/core/ext/xds/xds_http_fault_filter.h +13 -21
- data/src/core/ext/xds/xds_http_filters.cc +60 -73
- data/src/core/ext/xds/xds_http_filters.h +67 -19
- data/src/core/ext/xds/xds_http_rbac_filter.cc +152 -207
- data/src/core/ext/xds/xds_http_rbac_filter.h +12 -15
- data/src/core/ext/xds/xds_lb_policy_registry.cc +122 -169
- data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
- data/src/core/ext/xds/xds_listener.cc +459 -417
- data/src/core/ext/xds/xds_listener.h +43 -47
- data/src/core/ext/xds/xds_resource_type.h +3 -11
- data/src/core/ext/xds/xds_resource_type_impl.h +8 -13
- data/src/core/ext/xds/xds_route_config.cc +94 -80
- data/src/core/ext/xds/xds_route_config.h +10 -10
- data/src/core/ext/xds/xds_routing.cc +2 -1
- data/src/core/ext/xds/xds_routing.h +2 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -94
- data/src/core/ext/xds/xds_transport_grpc.cc +4 -5
- data/src/core/lib/address_utils/parse_address.cc +11 -10
- data/src/core/lib/channel/channel_args.h +16 -1
- data/src/core/lib/channel/channel_stack.cc +23 -20
- data/src/core/lib/channel/channel_stack.h +17 -4
- data/src/core/lib/channel/channel_stack_builder.cc +4 -7
- data/src/core/lib/channel/channel_stack_builder.h +14 -6
- data/src/core/lib/channel/channel_stack_builder_impl.cc +25 -7
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
- data/src/core/lib/channel/channel_trace.cc +4 -5
- data/src/core/lib/channel/channelz.cc +1 -1
- data/src/core/lib/channel/connected_channel.cc +695 -35
- data/src/core/lib/channel/connected_channel.h +0 -4
- data/src/core/lib/channel/promise_based_filter.cc +1004 -140
- data/src/core/lib/channel/promise_based_filter.h +364 -87
- data/src/core/lib/compression/message_compress.cc +5 -5
- data/src/core/lib/debug/event_log.cc +88 -0
- data/src/core/lib/debug/event_log.h +81 -0
- data/src/core/lib/debug/histogram_view.cc +69 -0
- data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
- data/src/core/lib/debug/stats.cc +22 -119
- data/src/core/lib/debug/stats.h +29 -35
- data/src/core/lib/debug/stats_data.cc +224 -73
- data/src/core/lib/debug/stats_data.h +263 -122
- data/src/core/lib/event_engine/common_closures.h +71 -0
- data/src/core/lib/event_engine/default_event_engine.cc +38 -15
- data/src/core/lib/event_engine/default_event_engine.h +15 -3
- data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
- data/src/core/lib/event_engine/memory_allocator.cc +1 -1
- data/src/core/lib/event_engine/poller.h +10 -4
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +618 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +901 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
- data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
- data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +13 -16
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +267 -0
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1270 -0
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +682 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +453 -18
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1081 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +361 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +9 -8
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +57 -194
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +21 -49
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +301 -0
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +179 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +126 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +151 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
- data/src/core/lib/event_engine/slice.cc +7 -6
- data/src/core/lib/event_engine/slice_buffer.cc +2 -2
- data/src/core/lib/event_engine/thread_pool.cc +106 -25
- data/src/core/lib/event_engine/thread_pool.h +32 -9
- data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
- data/src/core/lib/event_engine/windows/windows_engine.cc +18 -12
- data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
- data/src/core/lib/experiments/config.cc +1 -1
- data/src/core/lib/experiments/experiments.cc +13 -2
- data/src/core/lib/experiments/experiments.h +8 -1
- data/src/core/lib/gpr/cpu_linux.cc +6 -2
- data/src/core/lib/gpr/log_linux.cc +3 -4
- data/src/core/lib/gpr/string.h +1 -1
- data/src/core/lib/gpr/tmpfile_posix.cc +3 -2
- data/src/core/lib/gprpp/load_file.cc +75 -0
- data/src/core/lib/gprpp/load_file.h +33 -0
- data/src/core/lib/gprpp/per_cpu.h +46 -0
- data/src/core/lib/gprpp/stat_posix.cc +5 -4
- data/src/core/lib/gprpp/stat_windows.cc +3 -2
- data/src/core/lib/gprpp/status_helper.h +1 -3
- data/src/core/lib/gprpp/strerror.cc +41 -0
- data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/strerror.h} +9 -13
- data/src/core/lib/gprpp/thd_windows.cc +1 -2
- data/src/core/lib/gprpp/time.cc +3 -4
- data/src/core/lib/gprpp/time.h +13 -2
- data/src/core/lib/gprpp/validation_errors.h +18 -1
- data/src/core/lib/http/httpcli.cc +40 -44
- data/src/core/lib/http/httpcli.h +6 -5
- data/src/core/lib/http/httpcli_security_connector.cc +4 -6
- data/src/core/lib/http/parser.cc +54 -65
- data/src/core/lib/iomgr/buffer_list.cc +105 -116
- data/src/core/lib/iomgr/buffer_list.h +60 -44
- data/src/core/lib/iomgr/call_combiner.cc +11 -10
- data/src/core/lib/iomgr/call_combiner.h +3 -4
- data/src/core/lib/iomgr/cfstream_handle.cc +13 -16
- data/src/core/lib/iomgr/closure.h +49 -5
- data/src/core/lib/iomgr/combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -25
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
- data/src/core/lib/iomgr/error.cc +27 -42
- data/src/core/lib/iomgr/error.h +22 -152
- data/src/core/lib/iomgr/ev_apple.cc +4 -4
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +26 -25
- data/src/core/lib/iomgr/ev_poll_posix.cc +27 -31
- data/src/core/lib/iomgr/exec_ctx.cc +3 -4
- data/src/core/lib/iomgr/exec_ctx.h +2 -3
- data/src/core/lib/iomgr/executor.cc +1 -2
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -1
- data/src/core/lib/iomgr/iocp_windows.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -1
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -1
- data/src/core/lib/iomgr/load_file.cc +5 -9
- data/src/core/lib/iomgr/lockfree_event.cc +10 -10
- data/src/core/lib/iomgr/pollset_windows.cc +4 -4
- data/src/core/lib/iomgr/python_util.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +8 -3
- data/src/core/lib/iomgr/resolve_address.h +3 -4
- data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +14 -25
- data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +14 -17
- data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -29
- data/src/core/lib/iomgr/socket_utils_posix.cc +1 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
- data/src/core/lib/iomgr/socket_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +31 -35
- data/src/core/lib/iomgr/tcp_client_windows.cc +8 -12
- data/src/core/lib/iomgr/tcp_posix.cc +92 -108
- data/src/core/lib/iomgr/tcp_server_posix.cc +34 -34
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +18 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -13
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -29
- data/src/core/lib/iomgr/tcp_windows.cc +27 -34
- data/src/core/lib/iomgr/timer.h +8 -8
- data/src/core/lib/iomgr/timer_generic.cc +9 -15
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +4 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -8
- data/src/core/lib/json/json_channel_args.h +42 -0
- data/src/core/lib/json/json_object_loader.cc +7 -2
- data/src/core/lib/json/json_object_loader.h +22 -0
- data/src/core/lib/json/json_util.cc +5 -5
- data/src/core/lib/json/json_util.h +4 -4
- data/src/core/lib/load_balancing/lb_policy.cc +1 -1
- data/src/core/lib/load_balancing/lb_policy.h +4 -0
- data/src/core/lib/load_balancing/subchannel_interface.h +0 -7
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/promise/activity.cc +16 -2
- data/src/core/lib/promise/activity.h +38 -15
- data/src/core/lib/promise/arena_promise.h +80 -51
- data/src/core/lib/promise/context.h +13 -6
- data/src/core/lib/promise/detail/basic_seq.h +9 -28
- data/src/core/lib/promise/detail/promise_factory.h +58 -10
- data/src/core/lib/promise/detail/status.h +28 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -1
- data/src/core/lib/promise/for_each.h +129 -0
- data/src/core/lib/promise/loop.h +7 -5
- data/src/core/lib/promise/map_pipe.h +87 -0
- data/src/core/lib/promise/pipe.cc +19 -0
- data/src/core/lib/promise/pipe.h +505 -0
- data/src/core/lib/promise/poll.h +13 -0
- data/src/core/lib/promise/seq.h +3 -5
- data/src/core/lib/promise/sleep.cc +5 -4
- data/src/core/lib/promise/sleep.h +1 -2
- data/src/core/lib/promise/try_concurrently.h +341 -0
- data/src/core/lib/promise/try_seq.h +10 -13
- data/src/core/lib/resolver/server_address.cc +1 -0
- data/src/core/lib/resolver/server_address.h +1 -3
- data/src/core/lib/resource_quota/api.cc +0 -1
- data/src/core/lib/resource_quota/arena.cc +19 -0
- data/src/core/lib/resource_quota/arena.h +89 -0
- data/src/core/lib/resource_quota/memory_quota.cc +1 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
- data/src/core/lib/security/authorization/matchers.cc +25 -22
- data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
- data/src/core/lib/security/context/security_context.h +10 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -24
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +24 -30
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +19 -27
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -41
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +6 -11
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +8 -15
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +2 -6
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +1 -4
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +7 -11
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +9 -14
- data/src/core/lib/security/security_connector/ssl_utils.cc +5 -7
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -27
- data/src/core/lib/security/transport/client_auth_filter.cc +1 -1
- data/src/core/lib/security/transport/secure_endpoint.cc +26 -28
- data/src/core/lib/security/transport/security_handshaker.cc +53 -53
- data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
- data/src/core/lib/security/transport/tsi_error.cc +6 -3
- data/src/core/lib/security/util/json_util.cc +4 -5
- data/src/core/lib/service_config/service_config.h +1 -1
- data/src/core/lib/service_config/service_config_impl.cc +111 -158
- data/src/core/lib/service_config/service_config_impl.h +14 -17
- data/src/core/lib/service_config/service_config_parser.cc +14 -31
- data/src/core/lib/service_config/service_config_parser.h +14 -10
- data/src/core/lib/slice/b64.cc +2 -2
- data/src/core/lib/slice/slice.cc +7 -1
- data/src/core/lib/slice/slice.h +19 -6
- data/src/core/lib/slice/slice_buffer.cc +13 -14
- data/src/core/lib/slice/slice_internal.h +13 -21
- data/src/core/lib/slice/slice_refcount.h +34 -19
- data/src/core/lib/surface/byte_buffer.cc +3 -4
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +1366 -239
- data/src/core/lib/surface/call.h +44 -0
- data/src/core/lib/surface/call_details.cc +3 -3
- data/src/core/lib/surface/call_trace.cc +113 -0
- data/src/core/lib/surface/call_trace.h +30 -0
- data/src/core/lib/surface/channel.cc +44 -49
- data/src/core/lib/surface/channel.h +9 -1
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/channel_stack_type.cc +4 -0
- data/src/core/lib/surface/channel_stack_type.h +2 -0
- data/src/core/lib/surface/completion_queue.cc +38 -52
- data/src/core/lib/surface/init.cc +8 -39
- data/src/core/lib/surface/init_internally.h +8 -0
- data/src/core/lib/surface/lame_client.cc +10 -8
- data/src/core/lib/surface/server.cc +48 -70
- data/src/core/lib/surface/server.h +3 -4
- data/src/core/lib/surface/validate_metadata.cc +11 -12
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +34 -28
- data/src/core/lib/transport/error_utils.h +3 -3
- data/src/core/lib/transport/handshaker.cc +14 -14
- data/src/core/lib/transport/handshaker.h +1 -1
- data/src/core/lib/transport/handshaker_factory.h +26 -0
- data/src/core/lib/transport/handshaker_registry.cc +8 -2
- data/src/core/lib/transport/handshaker_registry.h +3 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +23 -24
- data/src/core/lib/transport/metadata_batch.h +17 -1
- data/src/core/lib/transport/parsed_metadata.cc +2 -6
- data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
- data/src/core/lib/transport/transport.cc +63 -17
- data/src/core/lib/transport/transport.h +64 -68
- data/src/core/lib/transport/transport_impl.h +1 -1
- data/src/core/lib/transport/transport_op_string.cc +7 -6
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -10
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -14
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +10 -10
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +8 -8
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +7 -7
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +7 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +5 -5
- data/src/core/tsi/fake_transport_security.cc +3 -3
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +7 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +6 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +0 -3
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_spec.rb +0 -43
- data/src/ruby/spec/generic/active_call_spec.rb +12 -3
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/zlib/compress.c +3 -3
- data/third_party/zlib/crc32.c +21 -12
- data/third_party/zlib/deflate.c +112 -106
- data/third_party/zlib/deflate.h +2 -2
- data/third_party/zlib/gzlib.c +1 -1
- data/third_party/zlib/gzread.c +3 -5
- data/third_party/zlib/gzwrite.c +1 -1
- data/third_party/zlib/infback.c +10 -7
- data/third_party/zlib/inflate.c +5 -2
- data/third_party/zlib/inftrees.c +2 -2
- data/third_party/zlib/inftrees.h +1 -1
- data/third_party/zlib/trees.c +61 -62
- data/third_party/zlib/uncompr.c +2 -2
- data/third_party/zlib/zconf.h +16 -3
- data/third_party/zlib/zlib.h +10 -10
- data/third_party/zlib/zutil.c +9 -7
- data/third_party/zlib/zutil.h +1 -0
- metadata +57 -20
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
- data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
- data/src/core/lib/gpr/murmur_hash.cc +0 -82
- data/src/core/lib/gpr/murmur_hash.h +0 -29
- data/src/core/lib/gpr/tls.h +0 -156
- data/src/core/lib/promise/call_push_pull.h +0 -148
- data/src/core/lib/slice/slice_api.cc +0 -39
- data/src/core/lib/slice/slice_buffer_api.cc +0 -35
- 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 =
|
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(
|
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(
|
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
|
-
|
147
|
+
std::make_unique<FileWatcherCertificateProviderFactory>());
|
151
148
|
}
|
152
149
|
|
153
150
|
} // namespace grpc_core
|
data/src/core/ext/xds/xds_api.cc
CHANGED
@@ -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
|
-
|
275
|
-
absl::string_view
|
276
|
-
|
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_,
|
321
|
-
|
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(
|
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.
|
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_,
|
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
|
-
|
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) {
|
data/src/core/ext/xds/xds_api.h
CHANGED
@@ -150,9 +150,7 @@ class XdsApi {
|
|
150
150
|
upb::SymbolTable* symtab);
|
151
151
|
|
152
152
|
// Creates an ADS request.
|
153
|
-
|
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(
|
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(
|
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() ==
|
172
|
-
|
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
|
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 (!
|
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 (!
|
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
|
-
|
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
|
-
|
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 =
|
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 =
|
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
|
-
|
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
|
-
|
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 =
|
294
|
-
|
295
|
-
|
296
|
-
|
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 =
|
319
|
-
|
320
|
-
|
321
|
-
|
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 =
|
370
|
-
|
371
|
-
|
372
|
-
|
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 {
|