grpc 1.41.0.pre2 → 1.42.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 +57 -44
- data/etc/roots.pem +335 -326
- data/include/grpc/event_engine/event_engine.h +82 -42
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
- data/include/grpc/event_engine/memory_allocator.h +210 -0
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/grpc_security.h +18 -0
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
- data/src/core/ext/filters/client_channel/client_channel.cc +187 -252
- data/src/core/ext/filters/client_channel/client_channel.h +74 -27
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -14
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -5
- data/src/core/ext/filters/client_channel/connector.h +18 -18
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +12 -11
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
- data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +11 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
- data/src/core/ext/filters/client_channel/resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
- data/src/core/ext/filters/client_channel/server_address.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
- data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
- data/src/core/ext/filters/client_channel/subchannel.h +29 -49
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -19
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
- data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
- data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
- data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
- data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
- data/src/core/ext/service_config/service_config_call_data.h +72 -0
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +41 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
- data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +325 -362
- data/src/core/ext/xds/xds_api.h +134 -82
- data/src/core/ext/xds/xds_bootstrap.h +10 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
- data/src/core/ext/xds/xds_client.cc +527 -314
- data/src/core/ext/xds/xds_client.h +42 -37
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
- data/src/core/lib/address_utils/parse_address.cc +2 -0
- data/src/core/lib/avl/avl.cc +5 -5
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/channel/channel_args.cc +24 -6
- data/src/core/lib/channel/channel_args.h +9 -0
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_trace.cc +1 -1
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +3 -3
- data/src/core/lib/channel/channelz.h +2 -2
- data/src/core/lib/channel/channelz_registry.cc +1 -1
- data/src/core/lib/channel/channelz_registry.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +1 -3
- data/src/core/lib/channel/connected_channel.h +1 -2
- data/src/core/lib/compression/compression.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +6 -4
- data/src/core/lib/compression/compression_internal.cc +2 -2
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +44 -2
- data/src/core/lib/config/core_configuration.h +39 -1
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats_data.cc +13 -13
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/string.cc +2 -2
- data/src/core/lib/gpr/tls.h +1 -1
- data/src/core/lib/gpr/useful.h +79 -32
- data/src/core/lib/gprpp/arena.h +10 -0
- data/src/core/lib/gprpp/bitset.h +38 -16
- data/src/core/lib/gprpp/chunked_vector.h +211 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -1
- data/src/core/lib/gprpp/match.h +1 -1
- data/src/core/lib/gprpp/memory.h +6 -0
- data/src/core/lib/gprpp/overload.h +1 -1
- data/src/core/lib/gprpp/status_helper.cc +23 -3
- data/src/core/lib/gprpp/status_helper.h +12 -1
- data/src/core/lib/gprpp/table.h +411 -0
- data/src/core/lib/http/httpcli.cc +200 -182
- data/src/core/lib/http/parser.cc +2 -2
- data/src/core/lib/iomgr/call_combiner.cc +28 -10
- data/src/core/lib/iomgr/combiner.cc +6 -21
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
- data/src/core/lib/iomgr/error.cc +113 -52
- data/src/core/lib/iomgr/error.h +50 -9
- data/src/core/lib/iomgr/error_cfstream.cc +5 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
- data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
- data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
- data/src/core/lib/iomgr/event_engine/closure.h +10 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
- data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
- data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
- data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
- data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -9
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
- data/src/core/lib/iomgr/executor.cc +6 -20
- data/src/core/lib/iomgr/iomgr.cc +3 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
- data/src/core/lib/iomgr/iomgr_internal.h +3 -2
- data/src/core/lib/iomgr/load_file.cc +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +18 -0
- data/src/core/lib/iomgr/pollset_custom.cc +1 -1
- data/src/core/lib/iomgr/pollset_custom.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +5 -7
- data/src/core/lib/iomgr/resource_quota.cc +13 -11
- data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_mutator.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_posix.cc +4 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_windows.cc +2 -2
- data/src/core/lib/iomgr/timer_generic.cc +13 -13
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/json/json_util.cc +68 -0
- data/src/core/lib/json/json_util.h +57 -99
- data/src/core/lib/json/json_writer.cc +0 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +14 -12
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +4 -2
- data/src/core/lib/security/credentials/credentials.h +6 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +9 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.cc +73 -43
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
- data/src/core/lib/security/transport/tsi_error.cc +3 -5
- data/src/core/lib/slice/slice.cc +0 -16
- data/src/core/lib/slice/slice_api.cc +39 -0
- data/src/core/lib/slice/slice_buffer.cc +5 -5
- data/src/core/lib/slice/slice_intern.cc +8 -13
- data/src/core/lib/slice/slice_internal.h +1 -244
- data/src/core/lib/slice/slice_refcount.cc +17 -0
- data/src/core/lib/slice/slice_refcount.h +121 -0
- data/src/core/lib/slice/slice_refcount_base.h +173 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/slice/static_slice.cc +529 -0
- data/src/core/lib/slice/static_slice.h +331 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
- data/src/core/lib/surface/call.cc +103 -120
- data/src/core/lib/surface/call.h +0 -6
- data/src/core/lib/surface/channel.cc +19 -32
- data/src/core/lib/surface/channel.h +0 -9
- data/src/core/lib/surface/channel_init.cc +23 -76
- data/src/core/lib/surface/channel_init.h +52 -44
- data/src/core/lib/surface/completion_queue.cc +6 -5
- data/src/core/lib/surface/init.cc +0 -39
- data/src/core/lib/surface/init_secure.cc +17 -14
- data/src/core/lib/surface/lame_client.cc +18 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +25 -17
- data/src/core/lib/surface/server.h +17 -10
- data/src/core/lib/surface/validate_metadata.cc +5 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +42 -17
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata.cc +31 -10
- data/src/core/lib/transport/metadata.h +2 -1
- data/src/core/lib/transport/metadata_batch.cc +35 -371
- data/src/core/lib/transport/metadata_batch.h +905 -71
- data/src/core/lib/transport/parsed_metadata.h +263 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +714 -846
- data/src/core/lib/transport/static_metadata.h +115 -379
- data/src/core/lib/transport/status_metadata.cc +1 -0
- data/src/core/lib/transport/transport.cc +4 -5
- data/src/core/lib/transport/transport_op_string.cc +40 -20
- data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
- data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
- 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 +2 -2
- data/src/core/tsi/fake_transport_security.cc +15 -7
- data/src/core/tsi/local_transport_security.cc +36 -73
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
- data/src/core/tsi/ssl_transport_security.cc +10 -2
- data/src/core/tsi/transport_security.cc +12 -0
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_interface.h +26 -0
- data/src/ruby/ext/grpc/extconf.rb +12 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +278 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +15 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +268 -271
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -39
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +38 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +289 -198
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +9 -13
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +21 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +12 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +181 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +22 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +17 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +71 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +366 -227
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +8 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +9 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +28 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +529 -91
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +48 -8
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +266 -357
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +90 -152
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +75 -79
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +96 -97
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +63 -43
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +14 -17
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +203 -203
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +47 -33
- data/third_party/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- metadata +81 -68
- data/include/grpc/event_engine/slice_allocator.h +0 -71
- data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
- data/src/core/lib/iomgr/udp_server.cc +0 -747
- data/src/core/lib/iomgr/udp_server.h +0 -103
- data/src/core/lib/transport/authority_override.cc +0 -40
- data/src/core/lib/transport/authority_override.h +0 -37
data/src/core/ext/xds/xds_api.h
CHANGED
@@ -27,6 +27,7 @@
|
|
27
27
|
|
28
28
|
#include "absl/container/inlined_vector.h"
|
29
29
|
#include "absl/types/optional.h"
|
30
|
+
#include "absl/types/variant.h"
|
30
31
|
#include "envoy/admin/v3/config_dump.upb.h"
|
31
32
|
#include "re2/re2.h"
|
32
33
|
#include "upb/def.hpp"
|
@@ -65,6 +66,29 @@ class XdsApi {
|
|
65
66
|
using TypedPerFilterConfig =
|
66
67
|
std::map<std::string, XdsHttpFilterImpl::FilterConfig>;
|
67
68
|
|
69
|
+
struct RetryPolicy {
|
70
|
+
internal::StatusCodeSet retry_on;
|
71
|
+
uint32_t num_retries;
|
72
|
+
|
73
|
+
struct RetryBackOff {
|
74
|
+
Duration base_interval;
|
75
|
+
Duration max_interval;
|
76
|
+
|
77
|
+
bool operator==(const RetryBackOff& other) const {
|
78
|
+
return base_interval == other.base_interval &&
|
79
|
+
max_interval == other.max_interval;
|
80
|
+
}
|
81
|
+
std::string ToString() const;
|
82
|
+
};
|
83
|
+
RetryBackOff retry_back_off;
|
84
|
+
|
85
|
+
bool operator==(const RetryPolicy& other) const {
|
86
|
+
return (retry_on == other.retry_on && num_retries == other.num_retries &&
|
87
|
+
retry_back_off == other.retry_back_off);
|
88
|
+
}
|
89
|
+
std::string ToString() const;
|
90
|
+
};
|
91
|
+
|
68
92
|
// TODO(donnadionne): When we can use absl::variant<>, consider using that
|
69
93
|
// for: PathMatcher, HeaderMatcher, cluster_name and weighted_clusters
|
70
94
|
struct Route {
|
@@ -82,85 +106,83 @@ class XdsApi {
|
|
82
106
|
std::string ToString() const;
|
83
107
|
};
|
84
108
|
|
85
|
-
|
86
|
-
enum Type { HEADER, CHANNEL_ID };
|
87
|
-
Type type;
|
88
|
-
bool terminal = false;
|
89
|
-
// Fields used for type HEADER.
|
90
|
-
std::string header_name;
|
91
|
-
std::unique_ptr<RE2> regex = nullptr;
|
92
|
-
std::string regex_substitution;
|
109
|
+
Matchers matchers;
|
93
110
|
|
94
|
-
|
111
|
+
struct UnknownAction {
|
112
|
+
bool operator==(const UnknownAction& /* other */) const { return true; }
|
113
|
+
};
|
95
114
|
|
96
|
-
|
97
|
-
|
98
|
-
|
115
|
+
struct RouteAction {
|
116
|
+
struct HashPolicy {
|
117
|
+
enum Type { HEADER, CHANNEL_ID };
|
118
|
+
Type type;
|
119
|
+
bool terminal = false;
|
120
|
+
// Fields used for type HEADER.
|
121
|
+
std::string header_name;
|
122
|
+
std::unique_ptr<RE2> regex = nullptr;
|
123
|
+
std::string regex_substitution;
|
99
124
|
|
100
|
-
|
101
|
-
HashPolicy(HashPolicy&& other) noexcept;
|
102
|
-
HashPolicy& operator=(HashPolicy&& other) noexcept;
|
125
|
+
HashPolicy() {}
|
103
126
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
Matchers matchers;
|
108
|
-
std::vector<HashPolicy> hash_policies;
|
127
|
+
// Copyable.
|
128
|
+
HashPolicy(const HashPolicy& other);
|
129
|
+
HashPolicy& operator=(const HashPolicy& other);
|
109
130
|
|
110
|
-
|
111
|
-
|
112
|
-
|
131
|
+
// Moveable.
|
132
|
+
HashPolicy(HashPolicy&& other) noexcept;
|
133
|
+
HashPolicy& operator=(HashPolicy&& other) noexcept;
|
113
134
|
|
114
|
-
|
115
|
-
|
116
|
-
|
135
|
+
bool operator==(const HashPolicy& other) const;
|
136
|
+
std::string ToString() const;
|
137
|
+
};
|
138
|
+
|
139
|
+
struct ClusterWeight {
|
140
|
+
std::string name;
|
141
|
+
uint32_t weight;
|
142
|
+
TypedPerFilterConfig typed_per_filter_config;
|
117
143
|
|
118
|
-
bool operator==(const
|
119
|
-
return
|
120
|
-
|
144
|
+
bool operator==(const ClusterWeight& other) const {
|
145
|
+
return name == other.name && weight == other.weight &&
|
146
|
+
typed_per_filter_config == other.typed_per_filter_config;
|
121
147
|
}
|
122
148
|
std::string ToString() const;
|
123
149
|
};
|
124
|
-
RetryBackOff retry_back_off;
|
125
150
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
151
|
+
std::vector<HashPolicy> hash_policies;
|
152
|
+
absl::optional<RetryPolicy> retry_policy;
|
153
|
+
|
154
|
+
// Action for this route.
|
155
|
+
// TODO(roth): When we can use absl::variant<>, consider using that
|
156
|
+
// here, to enforce the fact that only one of the two fields can be set.
|
157
|
+
std::string cluster_name;
|
158
|
+
std::vector<ClusterWeight> weighted_clusters;
|
159
|
+
// Storing the timeout duration from route action:
|
160
|
+
// RouteAction.max_stream_duration.grpc_timeout_header_max or
|
161
|
+
// RouteAction.max_stream_duration.max_stream_duration if the former is
|
162
|
+
// not set.
|
163
|
+
absl::optional<Duration> max_stream_duration;
|
164
|
+
|
165
|
+
bool operator==(const RouteAction& other) const {
|
166
|
+
return hash_policies == other.hash_policies &&
|
167
|
+
retry_policy == other.retry_policy &&
|
168
|
+
cluster_name == other.cluster_name &&
|
169
|
+
weighted_clusters == other.weighted_clusters &&
|
170
|
+
max_stream_duration == other.max_stream_duration;
|
130
171
|
}
|
131
172
|
std::string ToString() const;
|
132
173
|
};
|
133
|
-
absl::optional<RetryPolicy> retry_policy;
|
134
|
-
|
135
|
-
// Action for this route.
|
136
|
-
// TODO(roth): When we can use absl::variant<>, consider using that
|
137
|
-
// here, to enforce the fact that only one of the two fields can be set.
|
138
|
-
std::string cluster_name;
|
139
|
-
struct ClusterWeight {
|
140
|
-
std::string name;
|
141
|
-
uint32_t weight;
|
142
|
-
TypedPerFilterConfig typed_per_filter_config;
|
143
174
|
|
144
|
-
|
145
|
-
|
146
|
-
|
175
|
+
struct NonForwardingAction {
|
176
|
+
bool operator==(const NonForwardingAction& /* other */) const {
|
177
|
+
return true;
|
147
178
|
}
|
148
|
-
std::string ToString() const;
|
149
179
|
};
|
150
|
-
std::vector<ClusterWeight> weighted_clusters;
|
151
|
-
// Storing the timeout duration from route action:
|
152
|
-
// RouteAction.max_stream_duration.grpc_timeout_header_max or
|
153
|
-
// RouteAction.max_stream_duration.max_stream_duration if the former is
|
154
|
-
// not set.
|
155
|
-
absl::optional<Duration> max_stream_duration;
|
156
180
|
|
181
|
+
absl::variant<UnknownAction, RouteAction, NonForwardingAction> action;
|
157
182
|
TypedPerFilterConfig typed_per_filter_config;
|
158
183
|
|
159
184
|
bool operator==(const Route& other) const {
|
160
|
-
return matchers == other.matchers &&
|
161
|
-
retry_policy == other.retry_policy &&
|
162
|
-
weighted_clusters == other.weighted_clusters &&
|
163
|
-
max_stream_duration == other.max_stream_duration &&
|
185
|
+
return matchers == other.matchers && action == other.action &&
|
164
186
|
typed_per_filter_config == other.typed_per_filter_config;
|
165
187
|
}
|
166
188
|
std::string ToString() const;
|
@@ -301,7 +323,7 @@ class XdsApi {
|
|
301
323
|
}
|
302
324
|
|
303
325
|
std::string ToString() const;
|
304
|
-
}
|
326
|
+
};
|
305
327
|
|
306
328
|
// A multi-level map used to determine which filter chain to use for a given
|
307
329
|
// incoming connection. Determining the right filter chain for a given
|
@@ -386,20 +408,30 @@ class XdsApi {
|
|
386
408
|
std::string ToString() const;
|
387
409
|
};
|
388
410
|
|
411
|
+
struct ResourceName {
|
412
|
+
std::string authority;
|
413
|
+
std::string id;
|
414
|
+
|
415
|
+
bool operator<(const ResourceName& other) const {
|
416
|
+
if (authority < other.authority) return true;
|
417
|
+
if (id < other.id) return true;
|
418
|
+
return false;
|
419
|
+
}
|
420
|
+
};
|
421
|
+
|
389
422
|
struct LdsResourceData {
|
390
423
|
LdsUpdate resource;
|
391
424
|
std::string serialized_proto;
|
392
425
|
};
|
393
426
|
|
394
|
-
using LdsUpdateMap = std::map<
|
427
|
+
using LdsUpdateMap = std::map<ResourceName, LdsResourceData>;
|
395
428
|
|
396
429
|
struct RdsResourceData {
|
397
430
|
RdsUpdate resource;
|
398
431
|
std::string serialized_proto;
|
399
432
|
};
|
400
433
|
|
401
|
-
using RdsUpdateMap =
|
402
|
-
std::map<std::string /*route_config_name*/, RdsResourceData>;
|
434
|
+
using RdsUpdateMap = std::map<ResourceName, RdsResourceData>;
|
403
435
|
|
404
436
|
struct CdsUpdate {
|
405
437
|
enum ClusterType { EDS, LOGICAL_DNS, AGGREGATE };
|
@@ -455,7 +487,7 @@ class XdsApi {
|
|
455
487
|
std::string serialized_proto;
|
456
488
|
};
|
457
489
|
|
458
|
-
using CdsUpdateMap = std::map<
|
490
|
+
using CdsUpdateMap = std::map<ResourceName, CdsResourceData>;
|
459
491
|
|
460
492
|
struct EdsUpdate {
|
461
493
|
struct Priority {
|
@@ -544,8 +576,7 @@ class XdsApi {
|
|
544
576
|
std::string serialized_proto;
|
545
577
|
};
|
546
578
|
|
547
|
-
using EdsUpdateMap =
|
548
|
-
std::map<std::string /*eds_service_name*/, EdsResourceData>;
|
579
|
+
using EdsUpdateMap = std::map<ResourceName, EdsResourceData>;
|
549
580
|
|
550
581
|
struct ClusterLoadReport {
|
551
582
|
XdsClusterDropStats::Snapshot dropped_requests;
|
@@ -594,13 +625,9 @@ class XdsApi {
|
|
594
625
|
grpc_millis failed_update_time = 0;
|
595
626
|
};
|
596
627
|
using ResourceMetadataMap =
|
597
|
-
std::map<
|
598
|
-
struct ResourceTypeMetadata {
|
599
|
-
absl::string_view version;
|
600
|
-
ResourceMetadataMap resource_metadata_map;
|
601
|
-
};
|
628
|
+
std::map<std::string /*resource_name*/, const ResourceMetadata*>;
|
602
629
|
using ResourceTypeMetadataMap =
|
603
|
-
std::map<absl::string_view /*type_url*/,
|
630
|
+
std::map<absl::string_view /*type_url*/, ResourceMetadataMap>;
|
604
631
|
static_assert(static_cast<ResourceMetadata::ClientResourceStatus>(
|
605
632
|
envoy_admin_v3_REQUESTED) ==
|
606
633
|
ResourceMetadata::ClientResourceStatus::REQUESTED,
|
@@ -634,28 +661,53 @@ class XdsApi {
|
|
634
661
|
RdsUpdateMap rds_update_map;
|
635
662
|
CdsUpdateMap cds_update_map;
|
636
663
|
EdsUpdateMap eds_update_map;
|
637
|
-
std::set<
|
664
|
+
std::set<ResourceName> resource_names_failed;
|
638
665
|
};
|
639
666
|
|
640
667
|
XdsApi(XdsClient* client, TraceFlag* tracer, const XdsBootstrap::Node* node,
|
641
668
|
const CertificateProviderStore::PluginDefinitionMap* map);
|
642
669
|
|
670
|
+
static bool IsLds(absl::string_view type_url);
|
671
|
+
static bool IsRds(absl::string_view type_url);
|
672
|
+
static bool IsCds(absl::string_view type_url);
|
673
|
+
static bool IsEds(absl::string_view type_url);
|
674
|
+
|
675
|
+
// A helper method to parse the resource name and return back a ResourceName
|
676
|
+
// struct. Optionally the parser can check the resource type portion of the
|
677
|
+
// resource name.
|
678
|
+
static absl::StatusOr<ResourceName> ParseResourceName(
|
679
|
+
absl::string_view name,
|
680
|
+
bool (*is_expected_type)(absl::string_view) = nullptr);
|
681
|
+
|
682
|
+
// A helper method to construct the resource name from parts.
|
683
|
+
static std::string ConstructFullResourceName(absl::string_view authority,
|
684
|
+
absl::string_view resource_type,
|
685
|
+
absl::string_view name);
|
686
|
+
|
643
687
|
// Creates an ADS request.
|
644
688
|
// Takes ownership of \a error.
|
645
|
-
grpc_slice CreateAdsRequest(
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
689
|
+
grpc_slice CreateAdsRequest(
|
690
|
+
const XdsBootstrap::XdsServer& server, const std::string& type_url,
|
691
|
+
const std::map<absl::string_view /*authority*/,
|
692
|
+
std::set<absl::string_view /*name*/>>& resource_names,
|
693
|
+
const std::string& version, const std::string& nonce,
|
694
|
+
grpc_error_handle error, bool populate_node);
|
651
695
|
|
652
696
|
// Parses an ADS response.
|
653
697
|
AdsParseResult ParseAdsResponse(
|
654
698
|
const XdsBootstrap::XdsServer& server, const grpc_slice& encoded_response,
|
655
|
-
const std::
|
656
|
-
|
657
|
-
|
658
|
-
const std::
|
699
|
+
const std::map<absl::string_view /*authority*/,
|
700
|
+
std::set<absl::string_view /*name*/>>&
|
701
|
+
subscribed_listener_names,
|
702
|
+
const std::map<absl::string_view /*authority*/,
|
703
|
+
std::set<absl::string_view /*name*/>>&
|
704
|
+
subscribed_route_config_names,
|
705
|
+
const std::map<absl::string_view /*authority*/,
|
706
|
+
std::set<absl::string_view /*name*/>>&
|
707
|
+
subscribed_cluster_names,
|
708
|
+
const std::map<absl::string_view /*authority*/,
|
709
|
+
std::set<absl::string_view /*name*/>>&
|
710
|
+
subscribed_eds_service_names);
|
659
711
|
|
660
712
|
// Creates an initial LRS request.
|
661
713
|
grpc_slice CreateLrsInitialRequest(const XdsBootstrap::XdsServer& server);
|
@@ -64,6 +64,16 @@ class XdsBootstrap {
|
|
64
64
|
Json channel_creds_config;
|
65
65
|
std::set<std::string> server_features;
|
66
66
|
|
67
|
+
bool operator<(const XdsServer& other) const {
|
68
|
+
if (server_uri < other.server_uri) return true;
|
69
|
+
if (channel_creds_type < other.channel_creds_type) return true;
|
70
|
+
if (channel_creds_config.Dump() < other.channel_creds_config.Dump()) {
|
71
|
+
return true;
|
72
|
+
}
|
73
|
+
if (server_features < other.server_features) return true;
|
74
|
+
return false;
|
75
|
+
}
|
76
|
+
|
67
77
|
bool ShouldUseV3() const;
|
68
78
|
};
|
69
79
|
|
@@ -23,8 +23,6 @@
|
|
23
23
|
#include "absl/functional/bind_front.h"
|
24
24
|
#include "absl/strings/str_cat.h"
|
25
25
|
|
26
|
-
#include "src/core/lib/gpr/useful.h"
|
27
|
-
|
28
26
|
namespace grpc_core {
|
29
27
|
|
30
28
|
namespace {
|
@@ -379,7 +377,9 @@ void XdsCertificateProviderArgDestroy(void* p) {
|
|
379
377
|
xds_certificate_provider->Unref();
|
380
378
|
}
|
381
379
|
|
382
|
-
int XdsCertificateProviderArgCmp(void* p, void* q) {
|
380
|
+
int XdsCertificateProviderArgCmp(void* p, void* q) {
|
381
|
+
return QsortCompare(p, q);
|
382
|
+
}
|
383
383
|
|
384
384
|
const grpc_arg_pointer_vtable kChannelArgVtable = {
|
385
385
|
XdsCertificateProviderArgCopy, XdsCertificateProviderArgDestroy,
|
@@ -0,0 +1,113 @@
|
|
1
|
+
//
|
2
|
+
//
|
3
|
+
// Copyright 2021 gRPC authors.
|
4
|
+
//
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
//
|
17
|
+
//
|
18
|
+
|
19
|
+
#include <grpc/support/port_platform.h>
|
20
|
+
|
21
|
+
#include "src/core/ext/xds/xds_channel_stack_modifier.h"
|
22
|
+
|
23
|
+
#include "src/core/lib/config/core_configuration.h"
|
24
|
+
#include "src/core/lib/surface/channel_init.h"
|
25
|
+
|
26
|
+
namespace grpc_core {
|
27
|
+
namespace {
|
28
|
+
|
29
|
+
void* XdsChannelStackModifierArgCopy(void* p) {
|
30
|
+
XdsChannelStackModifier* arg = static_cast<XdsChannelStackModifier*>(p);
|
31
|
+
return arg->Ref().release();
|
32
|
+
}
|
33
|
+
|
34
|
+
void XdsChannelStackModifierArgDestroy(void* p) {
|
35
|
+
XdsChannelStackModifier* arg = static_cast<XdsChannelStackModifier*>(p);
|
36
|
+
arg->Unref();
|
37
|
+
}
|
38
|
+
|
39
|
+
int XdsChannelStackModifierArgCmp(void* p, void* q) {
|
40
|
+
return QsortCompare(p, q);
|
41
|
+
}
|
42
|
+
|
43
|
+
const grpc_arg_pointer_vtable kChannelArgVtable = {
|
44
|
+
XdsChannelStackModifierArgCopy, XdsChannelStackModifierArgDestroy,
|
45
|
+
XdsChannelStackModifierArgCmp};
|
46
|
+
|
47
|
+
const char* kXdsChannelStackModifierChannelArgName =
|
48
|
+
"grpc.internal.xds_channel_stack_modifier";
|
49
|
+
|
50
|
+
} // namespace
|
51
|
+
|
52
|
+
bool XdsChannelStackModifier::ModifyChannelStack(
|
53
|
+
grpc_channel_stack_builder* builder) {
|
54
|
+
// Insert the filters after the census filter if present.
|
55
|
+
grpc_channel_stack_builder_iterator* it =
|
56
|
+
grpc_channel_stack_builder_create_iterator_at_first(builder);
|
57
|
+
while (grpc_channel_stack_builder_move_next(it)) {
|
58
|
+
if (grpc_channel_stack_builder_iterator_is_end(it)) break;
|
59
|
+
const char* filter_name_at_it =
|
60
|
+
grpc_channel_stack_builder_iterator_filter_name(it);
|
61
|
+
if (strcmp("census_server", filter_name_at_it) == 0 ||
|
62
|
+
strcmp("opencensus_server", filter_name_at_it) == 0) {
|
63
|
+
break;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
if (grpc_channel_stack_builder_iterator_is_end(it)) {
|
67
|
+
// No census filter found. Reset iterator to the beginning. This will result
|
68
|
+
// in prepending the list of xDS HTTP filters to the current stack. Note
|
69
|
+
// that this stage is run before the stage that adds the top server filter,
|
70
|
+
// resulting in these filters being finally placed after the `server`
|
71
|
+
// filter.
|
72
|
+
grpc_channel_stack_builder_iterator_destroy(it);
|
73
|
+
it = grpc_channel_stack_builder_create_iterator_at_first(builder);
|
74
|
+
}
|
75
|
+
GPR_ASSERT(grpc_channel_stack_builder_move_next(it));
|
76
|
+
for (const grpc_channel_filter* filter : filters_) {
|
77
|
+
GPR_ASSERT(grpc_channel_stack_builder_add_filter_before(it, filter, nullptr,
|
78
|
+
nullptr));
|
79
|
+
}
|
80
|
+
grpc_channel_stack_builder_iterator_destroy(it);
|
81
|
+
return true;
|
82
|
+
}
|
83
|
+
|
84
|
+
grpc_arg XdsChannelStackModifier::MakeChannelArg() const {
|
85
|
+
return grpc_channel_arg_pointer_create(
|
86
|
+
const_cast<char*>(kXdsChannelStackModifierChannelArgName),
|
87
|
+
const_cast<XdsChannelStackModifier*>(this), &kChannelArgVtable);
|
88
|
+
}
|
89
|
+
|
90
|
+
RefCountedPtr<XdsChannelStackModifier>
|
91
|
+
XdsChannelStackModifier::GetFromChannelArgs(const grpc_channel_args& args) {
|
92
|
+
XdsChannelStackModifier* config_selector_provider =
|
93
|
+
grpc_channel_args_find_pointer<XdsChannelStackModifier>(
|
94
|
+
&args, kXdsChannelStackModifierChannelArgName);
|
95
|
+
return config_selector_provider != nullptr ? config_selector_provider->Ref()
|
96
|
+
: nullptr;
|
97
|
+
}
|
98
|
+
|
99
|
+
void RegisterXdsChannelStackModifier(CoreConfiguration::Builder* builder) {
|
100
|
+
builder->channel_init()->RegisterStage(
|
101
|
+
GRPC_SERVER_CHANNEL, INT_MAX, [](grpc_channel_stack_builder* builder) {
|
102
|
+
grpc_core::RefCountedPtr<XdsChannelStackModifier>
|
103
|
+
channel_stack_modifier =
|
104
|
+
XdsChannelStackModifier::GetFromChannelArgs(
|
105
|
+
*grpc_channel_stack_builder_get_channel_arguments(builder));
|
106
|
+
if (channel_stack_modifier != nullptr) {
|
107
|
+
return channel_stack_modifier->ModifyChannelStack(builder);
|
108
|
+
}
|
109
|
+
return true;
|
110
|
+
});
|
111
|
+
}
|
112
|
+
|
113
|
+
} // namespace grpc_core
|
@@ -0,0 +1,52 @@
|
|
1
|
+
//
|
2
|
+
//
|
3
|
+
// Copyright 2021 gRPC authors.
|
4
|
+
//
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
//
|
17
|
+
//
|
18
|
+
|
19
|
+
#ifndef GRPC_CORE_EXT_XDS_XDS_CHANNEL_STACK_MODIFIER_H
|
20
|
+
#define GRPC_CORE_EXT_XDS_XDS_CHANNEL_STACK_MODIFIER_H
|
21
|
+
|
22
|
+
#include <grpc/support/port_platform.h>
|
23
|
+
|
24
|
+
#include <vector>
|
25
|
+
|
26
|
+
#include "src/core/lib/channel/channel_stack.h"
|
27
|
+
#include "src/core/lib/channel/channel_stack_builder.h"
|
28
|
+
#include "src/core/lib/gprpp/ref_counted.h"
|
29
|
+
|
30
|
+
namespace grpc_core {
|
31
|
+
|
32
|
+
// XdsChannelStackModifier allows for inserting xDS HTTP filters into the
|
33
|
+
// channel stack. It is registered to mutate the `grpc_channel_stack_builder`
|
34
|
+
// object via ChannelInit::Builder::RegisterStage.
|
35
|
+
class XdsChannelStackModifier : public RefCounted<XdsChannelStackModifier> {
|
36
|
+
public:
|
37
|
+
explicit XdsChannelStackModifier(
|
38
|
+
std::vector<const grpc_channel_filter*> filters)
|
39
|
+
: filters_(std::move(filters)) {}
|
40
|
+
// Returns true on success, false otherwise.
|
41
|
+
bool ModifyChannelStack(grpc_channel_stack_builder* builder);
|
42
|
+
grpc_arg MakeChannelArg() const;
|
43
|
+
static RefCountedPtr<XdsChannelStackModifier> GetFromChannelArgs(
|
44
|
+
const grpc_channel_args& args);
|
45
|
+
|
46
|
+
private:
|
47
|
+
std::vector<const grpc_channel_filter*> filters_;
|
48
|
+
};
|
49
|
+
|
50
|
+
} // namespace grpc_core
|
51
|
+
|
52
|
+
#endif /* GRPC_CORE_EXT_XDS_XDS_CHANNEL_STACK_MODIFIER_H */
|