grpc 1.43.1 → 1.44.0.pre2
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 +84 -64
- data/include/grpc/grpc_security.h +10 -0
- data/include/grpc/impl/codegen/compression_types.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +6 -0
- data/src/core/ext/filters/client_channel/backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +62 -68
- data/src/core/ext/filters/client_channel/client_channel.h +8 -8
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +16 -14
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +3 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +31 -32
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +43 -29
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +120 -68
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +60 -48
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +62 -61
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +19 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +50 -105
- data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy.h +19 -3
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +207 -81
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +23 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +118 -207
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +25 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +82 -73
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +10 -10
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +2 -5
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +157 -67
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +37 -64
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +1 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +12 -16
- data/src/core/ext/filters/client_channel/subchannel.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +37 -48
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +6 -8
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +51 -122
- data/src/core/ext/filters/http/client_authority_filter.cc +8 -24
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +42 -140
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +5 -25
- data/src/core/ext/filters/http/server/http_server_filter.cc +50 -135
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/rbac/rbac_filter.cc +157 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +74 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +605 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +70 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +3 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +11 -6
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +1 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +89 -29
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +45 -186
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +341 -279
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +69 -159
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +19 -32
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +94 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -24
- data/src/core/ext/transport/chttp2/transport/internal.h +0 -33
- data/src/core/ext/transport/chttp2/transport/parsing.cc +0 -6
- data/src/core/ext/transport/chttp2/transport/writing.cc +47 -116
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +11 -63
- data/src/core/ext/transport/inproc/inproc_transport.h +0 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +61 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +188 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.c +58 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.h +55 -0
- data/src/core/ext/xds/upb_utils.h +65 -0
- data/src/core/ext/xds/xds_api.cc +81 -3458
- data/src/core/ext/xds/xds_api.h +56 -611
- data/src/core/ext/xds/xds_bootstrap.cc +189 -125
- data/src/core/ext/xds/xds_bootstrap.h +20 -15
- data/src/core/ext/xds/xds_certificate_provider.h +1 -0
- data/src/core/ext/xds/xds_channel_creds.cc +108 -0
- data/src/core/ext/xds/xds_channel_creds.h +50 -0
- data/src/core/ext/xds/xds_client.cc +584 -994
- data/src/core/ext/xds/xds_client.h +78 -135
- data/src/core/ext/xds/xds_cluster.cc +451 -0
- data/src/core/ext/xds/xds_cluster.h +111 -0
- data/src/core/ext/xds/xds_common_types.cc +388 -0
- data/src/core/ext/xds/xds_common_types.h +110 -0
- data/src/core/ext/xds/xds_endpoint.cc +364 -0
- data/src/core/ext/xds/xds_endpoint.h +135 -0
- data/src/core/ext/xds/xds_http_filters.cc +5 -0
- data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
- data/src/core/ext/xds/xds_listener.cc +1036 -0
- data/src/core/ext/xds/xds_listener.h +220 -0
- data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → xds/xds_resource_type.cc} +12 -9
- data/src/core/ext/xds/xds_resource_type.h +98 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
- data/src/core/ext/xds/xds_route_config.cc +993 -0
- data/src/core/ext/xds/xds_route_config.h +215 -0
- data/src/core/ext/xds/xds_routing.cc +11 -8
- data/src/core/ext/xds/xds_routing.h +8 -5
- data/src/core/ext/xds/xds_server_config_fetcher.cc +159 -99
- data/src/core/lib/address_utils/parse_address.cc +20 -0
- data/src/core/lib/address_utils/parse_address.h +5 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
- data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
- data/src/core/lib/backoff/backoff.cc +4 -30
- data/src/core/lib/backoff/backoff.h +3 -3
- data/src/core/lib/channel/channel_args.cc +0 -1
- data/src/core/lib/channel/channel_stack.cc +8 -0
- data/src/core/lib/channel/channel_stack.h +1 -1
- data/src/core/lib/channel/channel_stack_builder.cc +5 -9
- data/src/core/lib/channel/channel_stack_builder.h +4 -7
- data/src/core/lib/channel/channelz.cc +1 -0
- data/src/core/lib/compression/compression.cc +19 -111
- data/src/core/lib/compression/compression_internal.cc +142 -202
- data/src/core/lib/compression/compression_internal.h +64 -69
- data/src/core/lib/compression/message_compress.cc +11 -11
- data/src/core/lib/compression/message_compress.h +2 -2
- data/src/core/lib/gpr/useful.h +4 -0
- data/src/core/lib/gprpp/bitset.h +7 -0
- data/src/core/lib/gprpp/chunked_vector.h +45 -3
- data/src/core/lib/gprpp/status_helper.cc +20 -28
- data/src/core/lib/gprpp/status_helper.h +6 -19
- data/src/core/lib/gprpp/table.h +11 -0
- data/src/core/lib/http/httpcli.cc +37 -46
- data/src/core/lib/http/httpcli.h +3 -15
- data/src/core/lib/iomgr/call_combiner.cc +15 -4
- data/src/core/lib/iomgr/closure.h +29 -9
- data/src/core/lib/iomgr/combiner.cc +25 -3
- data/src/core/lib/iomgr/error.cc +2 -0
- data/src/core/lib/iomgr/error.h +3 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +3 -2
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +66 -48
- data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
- data/src/core/lib/iomgr/exec_ctx.cc +22 -9
- data/src/core/lib/iomgr/executor.cc +10 -1
- data/src/core/lib/iomgr/fork_posix.cc +3 -2
- data/src/core/lib/iomgr/iomgr_custom.cc +4 -1
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
- data/src/core/lib/iomgr/port.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +5 -24
- data/src/core/lib/iomgr/resolve_address.h +47 -44
- data/src/core/lib/iomgr/resolve_address_custom.cc +131 -109
- data/src/core/lib/iomgr/resolve_address_custom.h +101 -19
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +82 -66
- data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
- data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
- data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
- data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
- data/src/core/lib/matchers/matchers.cc +1 -1
- data/src/core/lib/promise/activity.h +49 -20
- data/src/core/lib/promise/detail/status.h +5 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +10 -5
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.cc +3 -2
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.h +4 -5
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.h +0 -1
- data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
- data/src/core/lib/{gprpp → resource_quota}/arena.h +24 -13
- data/src/core/lib/security/authorization/evaluate_args.cc +30 -15
- data/src/core/lib/security/authorization/evaluate_args.h +1 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
- data/src/core/lib/security/authorization/matchers.cc +227 -0
- data/src/core/lib/security/authorization/matchers.h +211 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
- data/src/core/lib/security/authorization/rbac_policy.h +170 -0
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/context/security_context.h +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -5
- data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -3
- data/src/core/lib/security/credentials/credentials.h +10 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +6 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +7 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +2 -7
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -7
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +2 -5
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +16 -19
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -5
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +16 -28
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +8 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +6 -13
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +44 -57
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +13 -15
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +5 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +1 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +6 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +7 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +0 -4
- data/src/core/lib/security/security_connector/security_connector.h +5 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +14 -24
- data/src/core/lib/security/security_connector/ssl_utils.h +5 -14
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +2 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +53 -33
- data/src/core/lib/security/transport/server_auth_filter.cc +40 -35
- data/src/core/{ext → lib}/service_config/service_config.cc +2 -2
- data/src/core/{ext → lib}/service_config/service_config.h +4 -4
- data/src/core/{ext → lib}/service_config/service_config_call_data.h +5 -5
- data/src/core/{ext → lib}/service_config/service_config_parser.cc +1 -1
- data/src/core/{ext → lib}/service_config/service_config_parser.h +3 -3
- data/src/core/lib/slice/slice.cc +3 -1
- data/src/core/lib/slice/slice.h +43 -13
- data/src/core/lib/slice/slice_intern.cc +3 -101
- data/src/core/lib/slice/slice_internal.h +1 -2
- data/src/core/lib/slice/slice_refcount.h +4 -13
- data/src/core/lib/slice/slice_refcount_base.h +0 -16
- data/src/core/lib/surface/call.cc +140 -382
- data/src/core/lib/surface/call.h +4 -4
- data/src/core/lib/surface/channel.cc +42 -44
- data/src/core/lib/surface/channel.h +4 -4
- data/src/core/lib/surface/init.cc +0 -2
- data/src/core/lib/surface/lame_client.cc +0 -1
- data/src/core/lib/surface/server.cc +12 -29
- data/src/core/lib/surface/server.h +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.h +14 -0
- data/src/core/lib/transport/metadata_batch.h +799 -717
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +95 -92
- data/src/core/lib/transport/timeout_encoding.cc +200 -66
- data/src/core/lib/transport/timeout_encoding.h +40 -10
- data/src/core/lib/transport/transport.h +1 -1
- data/src/core/lib/transport/transport_op_string.cc +6 -39
- data/src/core/lib/uri/uri_parser.cc +223 -53
- data/src/core/lib/uri/uri_parser.h +36 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
- data/src/core/tsi/ssl_transport_security.cc +53 -13
- data/src/core/tsi/ssl_transport_security.h +18 -6
- data/src/ruby/ext/grpc/extconf.rb +10 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
- data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
- data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
- data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
- data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
- data/third_party/abseil-cpp/absl/random/random.h +189 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +9 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +23 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
- data/third_party/xxhash/xxhash.h +607 -352
- metadata +149 -77
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
- data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
- data/src/core/lib/compression/algorithm_metadata.h +0 -62
- data/src/core/lib/compression/compression_args.cc +0 -140
- data/src/core/lib/compression/compression_args.h +0 -58
- data/src/core/lib/compression/stream_compression.cc +0 -81
- data/src/core/lib/compression/stream_compression.h +0 -117
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
- data/src/core/lib/compression/stream_compression_gzip.h +0 -28
- data/src/core/lib/compression/stream_compression_identity.cc +0 -91
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
- data/src/core/lib/slice/static_slice.cc +0 -377
- data/src/core/lib/slice/static_slice.h +0 -300
- data/src/core/lib/transport/metadata.cc +0 -714
- data/src/core/lib/transport/metadata.h +0 -449
- data/src/core/lib/transport/metadata_batch.cc +0 -99
- data/src/core/lib/transport/static_metadata.cc +0 -1032
- data/src/core/lib/transport/static_metadata.h +0 -322
- data/src/core/lib/transport/status_metadata.cc +0 -63
- data/src/core/lib/transport/status_metadata.h +0 -48
@@ -34,16 +34,17 @@
|
|
34
34
|
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
35
35
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
36
36
|
#include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
|
37
|
-
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
38
|
-
#include "src/core/ext/filters/client_channel/server_address.h"
|
39
37
|
#include "src/core/ext/xds/xds_channel_args.h"
|
40
38
|
#include "src/core/ext/xds/xds_client.h"
|
41
39
|
#include "src/core/ext/xds/xds_client_stats.h"
|
40
|
+
#include "src/core/ext/xds/xds_endpoint.h"
|
42
41
|
#include "src/core/lib/channel/channel_args.h"
|
43
42
|
#include "src/core/lib/gpr/string.h"
|
44
43
|
#include "src/core/lib/gprpp/orphanable.h"
|
45
44
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
46
45
|
#include "src/core/lib/iomgr/work_serializer.h"
|
46
|
+
#include "src/core/lib/resolver/resolver_registry.h"
|
47
|
+
#include "src/core/lib/resolver/server_address.h"
|
47
48
|
#include "src/core/lib/transport/error_utils.h"
|
48
49
|
#include "src/core/lib/uri/uri_parser.h"
|
49
50
|
|
@@ -105,8 +106,7 @@ class XdsClusterResolverLbConfig : public LoadBalancingPolicy::Config {
|
|
105
106
|
// Xds Cluster Resolver LB policy.
|
106
107
|
class XdsClusterResolverLb : public LoadBalancingPolicy {
|
107
108
|
public:
|
108
|
-
XdsClusterResolverLb(RefCountedPtr<XdsClient> xds_client, Args args
|
109
|
-
std::string server_name, bool is_xds_uri);
|
109
|
+
XdsClusterResolverLb(RefCountedPtr<XdsClient> xds_client, Args args);
|
110
110
|
|
111
111
|
const char* name() const override { return kXdsClusterResolver; }
|
112
112
|
|
@@ -139,7 +139,6 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
139
139
|
// to use for LRS load reporting. Caller must ensure that config_ is set
|
140
140
|
// before calling.
|
141
141
|
std::pair<absl::string_view, absl::string_view> GetLrsClusterKey() const {
|
142
|
-
if (!parent_->is_xds_uri_) return {parent_->server_name_, nullptr};
|
143
142
|
return {
|
144
143
|
parent_->config_->discovery_mechanisms()[index_].cluster_name,
|
145
144
|
parent_->config_->discovery_mechanisms()[index_].eds_service_name};
|
@@ -167,7 +166,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
167
166
|
bool disable_reresolution() override { return true; }
|
168
167
|
|
169
168
|
private:
|
170
|
-
class EndpointWatcher : public
|
169
|
+
class EndpointWatcher : public XdsEndpointResourceType::WatcherInterface {
|
171
170
|
public:
|
172
171
|
explicit EndpointWatcher(
|
173
172
|
RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism)
|
@@ -175,13 +174,13 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
175
174
|
~EndpointWatcher() override {
|
176
175
|
discovery_mechanism_.reset(DEBUG_LOCATION, "EndpointWatcher");
|
177
176
|
}
|
178
|
-
void
|
177
|
+
void OnResourceChanged(XdsEndpointResource update) override {
|
179
178
|
Ref().release(); // ref held by callback
|
180
179
|
discovery_mechanism_->parent()->work_serializer()->Run(
|
181
180
|
// TODO(yashykt): When we move to C++14, capture update with
|
182
181
|
// std::move
|
183
182
|
[this, update]() mutable {
|
184
|
-
|
183
|
+
OnResourceChangedHelper(std::move(update));
|
185
184
|
Unref();
|
186
185
|
},
|
187
186
|
DEBUG_LOCATION);
|
@@ -209,7 +208,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
209
208
|
// Code accessing protected methods of `DiscoveryMechanism` need to be
|
210
209
|
// in methods of this class rather than in lambdas to work around an MSVC
|
211
210
|
// bug.
|
212
|
-
void
|
211
|
+
void OnResourceChangedHelper(XdsEndpointResource update) {
|
213
212
|
discovery_mechanism_->parent()->OnEndpointChanged(
|
214
213
|
discovery_mechanism_->index(), std::move(update));
|
215
214
|
}
|
@@ -229,7 +228,6 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
229
228
|
friend class EndpointWatcher;
|
230
229
|
|
231
230
|
absl::string_view GetEdsResourceName() const {
|
232
|
-
if (!parent()->is_xds_uri_) return parent()->server_name_;
|
233
231
|
if (!parent()
|
234
232
|
->config_->discovery_mechanisms()[index()]
|
235
233
|
.eds_service_name.empty()) {
|
@@ -270,9 +268,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
270
268
|
|
271
269
|
~ResolverResultHandler() override {}
|
272
270
|
|
273
|
-
void
|
274
|
-
|
275
|
-
void ReturnError(grpc_error_handle error) override;
|
271
|
+
void ReportResult(Resolver::Result result) override;
|
276
272
|
|
277
273
|
private:
|
278
274
|
RefCountedPtr<LogicalDNSDiscoveryMechanism> discovery_mechanism_;
|
@@ -292,10 +288,10 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
292
288
|
// (The sum of this across all discovery mechanisms should always equal
|
293
289
|
// the number of priorities in priority_list_.)
|
294
290
|
uint32_t num_priorities = 0;
|
295
|
-
RefCountedPtr<
|
291
|
+
RefCountedPtr<XdsEndpointResource::DropConfig> drop_config;
|
296
292
|
// Populated only when an update has been delivered by the mechanism
|
297
293
|
// but has not yet been applied to the LB policy's combined priority_list_.
|
298
|
-
absl::optional<
|
294
|
+
absl::optional<XdsEndpointResource::PriorityList> pending_priority_list;
|
299
295
|
};
|
300
296
|
|
301
297
|
class Helper : public ChannelControlHelper {
|
@@ -328,13 +324,13 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
328
324
|
|
329
325
|
void ShutdownLocked() override;
|
330
326
|
|
331
|
-
void OnEndpointChanged(size_t index,
|
327
|
+
void OnEndpointChanged(size_t index, XdsEndpointResource update);
|
332
328
|
void OnError(size_t index, grpc_error_handle error);
|
333
329
|
void OnResourceDoesNotExist(size_t index);
|
334
330
|
|
335
331
|
void MaybeDestroyChildPolicyLocked();
|
336
332
|
|
337
|
-
void UpdatePriorityList(
|
333
|
+
void UpdatePriorityList(XdsEndpointResource::PriorityList priority_list);
|
338
334
|
void UpdateChildPolicyLocked();
|
339
335
|
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
|
340
336
|
const grpc_channel_args* args);
|
@@ -346,10 +342,6 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
346
342
|
// The xds client and endpoint watcher.
|
347
343
|
RefCountedPtr<XdsClient> xds_client_;
|
348
344
|
|
349
|
-
// Server name from target URI.
|
350
|
-
std::string server_name_;
|
351
|
-
bool is_xds_uri_;
|
352
|
-
|
353
345
|
// Current channel args and config from the resolver.
|
354
346
|
const grpc_channel_args* args_ = nullptr;
|
355
347
|
RefCountedPtr<XdsClusterResolverLbConfig> config_;
|
@@ -361,7 +353,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
361
353
|
std::vector<DiscoveryMechanismEntry> discovery_mechanisms_;
|
362
354
|
|
363
355
|
// The latest data from the endpoint watcher.
|
364
|
-
|
356
|
+
XdsEndpointResource::PriorityList priority_list_;
|
365
357
|
// State used to retain child policy names for priority policy.
|
366
358
|
std::vector<size_t /*child_number*/> priority_child_numbers_;
|
367
359
|
|
@@ -423,8 +415,8 @@ void XdsClusterResolverLb::EdsDiscoveryMechanism::Start() {
|
|
423
415
|
auto watcher = MakeRefCounted<EndpointWatcher>(
|
424
416
|
Ref(DEBUG_LOCATION, "EdsDiscoveryMechanism"));
|
425
417
|
watcher_ = watcher.get();
|
426
|
-
parent()->xds_client_
|
427
|
-
|
418
|
+
XdsEndpointResourceType::StartWatch(parent()->xds_client_.get(),
|
419
|
+
GetEdsResourceName(), std::move(watcher));
|
428
420
|
}
|
429
421
|
|
430
422
|
void XdsClusterResolverLb::EdsDiscoveryMechanism::Orphan() {
|
@@ -434,8 +426,8 @@ void XdsClusterResolverLb::EdsDiscoveryMechanism::Orphan() {
|
|
434
426
|
":%p cancelling xds watch for %s",
|
435
427
|
parent(), index(), this, std::string(GetEdsResourceName()).c_str());
|
436
428
|
}
|
437
|
-
parent()->xds_client_
|
438
|
-
|
429
|
+
XdsEndpointResourceType::CancelWatch(parent()->xds_client_.get(),
|
430
|
+
GetEdsResourceName(), watcher_);
|
439
431
|
Unref();
|
440
432
|
}
|
441
433
|
|
@@ -496,47 +488,38 @@ void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::Orphan() {
|
|
496
488
|
//
|
497
489
|
|
498
490
|
void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
491
|
+
ReportResult(Resolver::Result result) {
|
492
|
+
if (!result.addresses.ok()) {
|
493
|
+
discovery_mechanism_->parent()->OnError(
|
494
|
+
discovery_mechanism_->index(),
|
495
|
+
absl_status_to_grpc_error(result.addresses.status()));
|
496
|
+
return;
|
497
|
+
}
|
498
|
+
// Convert resolver result to EDS update.
|
499
|
+
// TODO(roth): Figure out a way to pass resolution_note through to the
|
500
|
+
// child policy.
|
501
|
+
XdsEndpointResource update;
|
502
|
+
XdsEndpointResource::Priority::Locality locality;
|
503
503
|
locality.name = MakeRefCounted<XdsLocalityName>("", "", "");
|
504
504
|
locality.lb_weight = 1;
|
505
|
-
locality.endpoints = std::move(result.addresses);
|
506
|
-
|
505
|
+
locality.endpoints = std::move(*result.addresses);
|
506
|
+
XdsEndpointResource::Priority priority;
|
507
507
|
priority.localities.emplace(locality.name.get(), std::move(locality));
|
508
508
|
update.priorities.emplace_back(std::move(priority));
|
509
509
|
discovery_mechanism_->parent()->OnEndpointChanged(
|
510
510
|
discovery_mechanism_->index(), std::move(update));
|
511
511
|
}
|
512
512
|
|
513
|
-
void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
|
514
|
-
ReturnError(grpc_error_handle error) {
|
515
|
-
discovery_mechanism_->parent()->OnError(discovery_mechanism_->index(), error);
|
516
|
-
}
|
517
|
-
|
518
513
|
//
|
519
514
|
// XdsClusterResolverLb public methods
|
520
515
|
//
|
521
516
|
|
522
517
|
XdsClusterResolverLb::XdsClusterResolverLb(RefCountedPtr<XdsClient> xds_client,
|
523
|
-
Args args
|
524
|
-
|
525
|
-
: LoadBalancingPolicy(std::move(args)),
|
526
|
-
xds_client_(std::move(xds_client)),
|
527
|
-
server_name_(std::move(server_name)),
|
528
|
-
is_xds_uri_(is_xds_uri) {
|
518
|
+
Args args)
|
519
|
+
: LoadBalancingPolicy(std::move(args)), xds_client_(std::move(xds_client)) {
|
529
520
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_cluster_resolver_trace)) {
|
530
|
-
gpr_log(GPR_INFO,
|
531
|
-
|
532
|
-
"server_name=%s, is_xds_uri=%d",
|
533
|
-
this, xds_client_.get(), server_name_.c_str(), is_xds_uri_);
|
534
|
-
}
|
535
|
-
// EDS-only flow.
|
536
|
-
if (!is_xds_uri_) {
|
537
|
-
// Couple polling.
|
538
|
-
grpc_pollset_set_add_pollset_set(xds_client_->interested_parties(),
|
539
|
-
interested_parties());
|
521
|
+
gpr_log(GPR_INFO, "[xds_cluster_resolver_lb %p] created -- xds_client=%p",
|
522
|
+
this, xds_client_.get());
|
540
523
|
}
|
541
524
|
}
|
542
525
|
|
@@ -556,11 +539,6 @@ void XdsClusterResolverLb::ShutdownLocked() {
|
|
556
539
|
shutting_down_ = true;
|
557
540
|
MaybeDestroyChildPolicyLocked();
|
558
541
|
discovery_mechanisms_.clear();
|
559
|
-
if (!is_xds_uri_) {
|
560
|
-
// Decouple polling.
|
561
|
-
grpc_pollset_set_del_pollset_set(xds_client_->interested_parties(),
|
562
|
-
interested_parties());
|
563
|
-
}
|
564
542
|
xds_client_.reset(DEBUG_LOCATION, "XdsClusterResolverLb");
|
565
543
|
// Destroy channel args.
|
566
544
|
grpc_channel_args_destroy(args_);
|
@@ -617,9 +595,6 @@ void XdsClusterResolverLb::UpdateLocked(UpdateArgs args) {
|
|
617
595
|
}
|
618
596
|
|
619
597
|
void XdsClusterResolverLb::ResetBackoffLocked() {
|
620
|
-
// When the XdsClient is instantiated in the resolver instead of in this
|
621
|
-
// LB policy, this is done via the resolver, so we don't need to do it here.
|
622
|
-
if (!is_xds_uri_ && xds_client_ != nullptr) xds_client_->ResetBackoff();
|
623
598
|
if (child_policy_ != nullptr) {
|
624
599
|
child_policy_->ResetBackoffLocked();
|
625
600
|
}
|
@@ -630,7 +605,7 @@ void XdsClusterResolverLb::ExitIdleLocked() {
|
|
630
605
|
}
|
631
606
|
|
632
607
|
void XdsClusterResolverLb::OnEndpointChanged(size_t index,
|
633
|
-
|
608
|
+
XdsEndpointResource update) {
|
634
609
|
if (shutting_down_) return;
|
635
610
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_cluster_resolver_trace)) {
|
636
611
|
gpr_log(GPR_INFO,
|
@@ -660,7 +635,7 @@ void XdsClusterResolverLb::OnEndpointChanged(size_t index,
|
|
660
635
|
if (!mechanism.first_update_received) return;
|
661
636
|
}
|
662
637
|
// Construct new priority list.
|
663
|
-
|
638
|
+
XdsEndpointResource::PriorityList priority_list;
|
664
639
|
size_t priority_index = 0;
|
665
640
|
for (DiscoveryMechanismEntry& mechanism : discovery_mechanisms_) {
|
666
641
|
// If the mechanism has a pending update, use that.
|
@@ -694,7 +669,7 @@ void XdsClusterResolverLb::OnError(size_t index, grpc_error_handle error) {
|
|
694
669
|
if (!discovery_mechanisms_[index].first_update_received) {
|
695
670
|
// Call OnEndpointChanged with an empty update just like
|
696
671
|
// OnResourceDoesNotExist.
|
697
|
-
OnEndpointChanged(index,
|
672
|
+
OnEndpointChanged(index, XdsEndpointResource());
|
698
673
|
}
|
699
674
|
}
|
700
675
|
|
@@ -705,7 +680,7 @@ void XdsClusterResolverLb::OnResourceDoesNotExist(size_t index) {
|
|
705
680
|
this, index);
|
706
681
|
if (shutting_down_) return;
|
707
682
|
// Call OnEndpointChanged with an empty update.
|
708
|
-
OnEndpointChanged(index,
|
683
|
+
OnEndpointChanged(index, XdsEndpointResource());
|
709
684
|
}
|
710
685
|
|
711
686
|
//
|
@@ -713,7 +688,7 @@ void XdsClusterResolverLb::OnResourceDoesNotExist(size_t index) {
|
|
713
688
|
//
|
714
689
|
|
715
690
|
void XdsClusterResolverLb::UpdatePriorityList(
|
716
|
-
|
691
|
+
XdsEndpointResource::PriorityList priority_list) {
|
717
692
|
// Build some maps from locality to child number and the reverse from
|
718
693
|
// the old data in priority_list_ and priority_child_numbers_.
|
719
694
|
std::map<XdsLocalityName*, size_t /*child_number*/, XdsLocalityName::Less>
|
@@ -1010,7 +985,6 @@ grpc_channel_args* XdsClusterResolverLb::CreateChildPolicyArgsLocked(
|
|
1010
985
|
grpc_channel_arg_integer_create(
|
1011
986
|
const_cast<char*>(GRPC_ARG_INHIBIT_HEALTH_CHECKING), 1),
|
1012
987
|
};
|
1013
|
-
if (!is_xds_uri_) new_args.push_back(xds_client_->MakeChannelArg());
|
1014
988
|
return grpc_channel_args_copy_and_add(args, new_args.data(), new_args.size());
|
1015
989
|
}
|
1016
990
|
|
@@ -1050,39 +1024,16 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1050
1024
|
public:
|
1051
1025
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
1052
1026
|
LoadBalancingPolicy::Args args) const override {
|
1053
|
-
// Find server name.
|
1054
|
-
const char* server_uri =
|
1055
|
-
grpc_channel_args_find_string(args.args, GRPC_ARG_SERVER_URI);
|
1056
|
-
GPR_ASSERT(server_uri != nullptr);
|
1057
|
-
absl::StatusOr<URI> uri = URI::Parse(server_uri);
|
1058
|
-
GPR_ASSERT(uri.ok() && !uri->path().empty());
|
1059
|
-
absl::string_view server_name = absl::StripPrefix(uri->path(), "/");
|
1060
|
-
// Determine if it's an xds URI.
|
1061
|
-
bool is_xds_uri = uri->scheme() == "xds" || uri->scheme() == "google-c2p";
|
1062
|
-
// Get XdsClient.
|
1063
1027
|
RefCountedPtr<XdsClient> xds_client =
|
1064
1028
|
XdsClient::GetFromChannelArgs(*args.args);
|
1065
1029
|
if (xds_client == nullptr) {
|
1066
|
-
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
gpr_log(GPR_ERROR,
|
1071
|
-
"cannot get or create XdsClient to instantiate "
|
1072
|
-
"xds_cluster_resolver LB policy: %s",
|
1073
|
-
grpc_error_std_string(error).c_str());
|
1074
|
-
GRPC_ERROR_UNREF(error);
|
1075
|
-
return nullptr;
|
1076
|
-
}
|
1077
|
-
} else {
|
1078
|
-
gpr_log(GPR_ERROR,
|
1079
|
-
"XdsClient not present in channel args -- cannot instantiate "
|
1080
|
-
"xds_cluster_resolver LB policy");
|
1081
|
-
return nullptr;
|
1082
|
-
}
|
1030
|
+
gpr_log(GPR_ERROR,
|
1031
|
+
"XdsClient not present in channel args -- cannot instantiate "
|
1032
|
+
"xds_cluster_resolver LB policy");
|
1033
|
+
return nullptr;
|
1083
1034
|
}
|
1084
|
-
return MakeOrphanable<XdsClusterResolverChildHandler>(
|
1085
|
-
|
1035
|
+
return MakeOrphanable<XdsClusterResolverChildHandler>(std::move(xds_client),
|
1036
|
+
std::move(args));
|
1086
1037
|
}
|
1087
1038
|
|
1088
1039
|
const char* name() const override { return kXdsClusterResolver; }
|
@@ -1267,13 +1218,10 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1267
1218
|
class XdsClusterResolverChildHandler : public ChildPolicyHandler {
|
1268
1219
|
public:
|
1269
1220
|
XdsClusterResolverChildHandler(RefCountedPtr<XdsClient> xds_client,
|
1270
|
-
Args args
|
1271
|
-
bool is_xds_uri)
|
1221
|
+
Args args)
|
1272
1222
|
: ChildPolicyHandler(std::move(args),
|
1273
1223
|
&grpc_lb_xds_cluster_resolver_trace),
|
1274
|
-
xds_client_(std::move(xds_client))
|
1275
|
-
server_name_(server_name),
|
1276
|
-
is_xds_uri_(is_xds_uri) {}
|
1224
|
+
xds_client_(std::move(xds_client)) {}
|
1277
1225
|
|
1278
1226
|
bool ConfigChangeRequiresNewPolicyInstance(
|
1279
1227
|
LoadBalancingPolicy::Config* old_config,
|
@@ -1290,14 +1238,11 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1290
1238
|
|
1291
1239
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
1292
1240
|
const char* /*name*/, LoadBalancingPolicy::Args args) const override {
|
1293
|
-
return MakeOrphanable<XdsClusterResolverLb>(xds_client_, std::move(args)
|
1294
|
-
server_name_, is_xds_uri_);
|
1241
|
+
return MakeOrphanable<XdsClusterResolverLb>(xds_client_, std::move(args));
|
1295
1242
|
}
|
1296
1243
|
|
1297
1244
|
private:
|
1298
1245
|
RefCountedPtr<XdsClient> xds_client_;
|
1299
|
-
std::string server_name_;
|
1300
|
-
bool is_xds_uri_;
|
1301
1246
|
};
|
1302
1247
|
};
|
1303
1248
|
|
@@ -54,27 +54,27 @@ void LoadBalancingPolicy::Orphan() {
|
|
54
54
|
// LoadBalancingPolicy::UpdateArgs
|
55
55
|
//
|
56
56
|
|
57
|
-
LoadBalancingPolicy::UpdateArgs::UpdateArgs(const UpdateArgs& other)
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
}
|
62
|
-
|
63
|
-
LoadBalancingPolicy::UpdateArgs::UpdateArgs(UpdateArgs&& other) noexcept
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
57
|
+
LoadBalancingPolicy::UpdateArgs::UpdateArgs(const UpdateArgs& other)
|
58
|
+
: addresses(other.addresses),
|
59
|
+
config(other.config),
|
60
|
+
resolution_note(other.resolution_note),
|
61
|
+
args(grpc_channel_args_copy(other.args)) {}
|
62
|
+
|
63
|
+
LoadBalancingPolicy::UpdateArgs::UpdateArgs(UpdateArgs&& other) noexcept
|
64
|
+
: addresses(std::move(other.addresses)),
|
65
|
+
config(std::move(other.config)),
|
66
|
+
resolution_note(std::move(other.resolution_note)),
|
67
|
+
// TODO(roth): Use std::move() once channel args is converted to C++.
|
68
|
+
args(other.args) {
|
68
69
|
other.args = nullptr;
|
69
70
|
}
|
70
71
|
|
71
72
|
LoadBalancingPolicy::UpdateArgs& LoadBalancingPolicy::UpdateArgs::operator=(
|
72
73
|
const UpdateArgs& other) {
|
73
|
-
if (&other == this)
|
74
|
-
return *this;
|
75
|
-
}
|
74
|
+
if (&other == this) return *this;
|
76
75
|
addresses = other.addresses;
|
77
76
|
config = other.config;
|
77
|
+
resolution_note = other.resolution_note;
|
78
78
|
grpc_channel_args_destroy(args);
|
79
79
|
args = grpc_channel_args_copy(other.args);
|
80
80
|
return *this;
|
@@ -84,6 +84,7 @@ LoadBalancingPolicy::UpdateArgs& LoadBalancingPolicy::UpdateArgs::operator=(
|
|
84
84
|
UpdateArgs&& other) noexcept {
|
85
85
|
addresses = std::move(other.addresses);
|
86
86
|
config = std::move(other.config);
|
87
|
+
resolution_note = std::move(other.resolution_note);
|
87
88
|
// TODO(roth): Use std::move() once channel args is converted to C++.
|
88
89
|
grpc_channel_args_destroy(args);
|
89
90
|
args = other.args;
|
@@ -23,15 +23,16 @@
|
|
23
23
|
#include <iterator>
|
24
24
|
|
25
25
|
#include "absl/status/status.h"
|
26
|
+
#include "absl/status/statusor.h"
|
26
27
|
#include "absl/strings/string_view.h"
|
27
28
|
#include "absl/types/variant.h"
|
28
29
|
|
29
|
-
#include "src/core/ext/filters/client_channel/server_address.h"
|
30
30
|
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
31
31
|
#include "src/core/lib/gprpp/orphanable.h"
|
32
32
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
33
33
|
#include "src/core/lib/iomgr/polling_entity.h"
|
34
34
|
#include "src/core/lib/iomgr/work_serializer.h"
|
35
|
+
#include "src/core/lib/resolver/server_address.h"
|
35
36
|
#include "src/core/lib/transport/connectivity_state.h"
|
36
37
|
|
37
38
|
namespace grpc_core {
|
@@ -325,8 +326,20 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
325
326
|
/// Data passed to the UpdateLocked() method when new addresses and
|
326
327
|
/// config are available.
|
327
328
|
struct UpdateArgs {
|
328
|
-
|
329
|
+
/// A list of addresses, or an error indicating a failure to obtain the
|
330
|
+
/// list of addresses.
|
331
|
+
absl::StatusOr<ServerAddressList> addresses;
|
332
|
+
/// The LB policy config.
|
329
333
|
RefCountedPtr<Config> config;
|
334
|
+
/// A human-readable note providing context about the name resolution that
|
335
|
+
/// provided this update. LB policies may wish to include this message
|
336
|
+
/// in RPC failure status messages. For example, if the update has an
|
337
|
+
/// empty list of addresses, this message might say "no DNS entries
|
338
|
+
/// found for <name>".
|
339
|
+
std::string resolution_note;
|
340
|
+
|
341
|
+
// TODO(roth): Before making this a public API, find a better
|
342
|
+
// abstraction for representing channel args.
|
330
343
|
const grpc_channel_args* args = nullptr;
|
331
344
|
|
332
345
|
// TODO(roth): Remove everything below once channel args is
|
@@ -368,6 +381,9 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
368
381
|
/// Updates the policy with new data from the resolver. Will be invoked
|
369
382
|
/// immediately after LB policy is constructed, and then again whenever
|
370
383
|
/// the resolver returns a new result.
|
384
|
+
// TODO(roth): Change this to return some indication as to whether the
|
385
|
+
// update has been accepted, so that we can indicate to the resolver
|
386
|
+
// whether it should go into backoff to retry the resolution.
|
371
387
|
virtual void UpdateLocked(UpdateArgs) = 0; // NOLINT
|
372
388
|
|
373
389
|
/// Tries to enter a READY connectivity state.
|
@@ -438,4 +454,4 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
438
454
|
|
439
455
|
} // namespace grpc_core
|
440
456
|
|
441
|
-
#endif
|
457
|
+
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_H
|
@@ -23,11 +23,11 @@
|
|
23
23
|
#include <grpc/support/alloc.h>
|
24
24
|
#include <grpc/support/string_util.h>
|
25
25
|
|
26
|
-
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
27
|
-
#include "src/core/ext/filters/client_channel/server_address.h"
|
28
26
|
#include "src/core/lib/address_utils/parse_address.h"
|
29
27
|
#include "src/core/lib/channel/channel_args.h"
|
30
28
|
#include "src/core/lib/gpr/string.h"
|
29
|
+
#include "src/core/lib/resolver/resolver_registry.h"
|
30
|
+
#include "src/core/lib/resolver/server_address.h"
|
31
31
|
|
32
32
|
namespace grpc_core {
|
33
33
|
namespace {
|
@@ -46,7 +46,7 @@ class BinderResolver : public Resolver {
|
|
46
46
|
result.addresses = std::move(addresses_);
|
47
47
|
result.args = channel_args_;
|
48
48
|
channel_args_ = nullptr;
|
49
|
-
result_handler_->
|
49
|
+
result_handler_->ReportResult(std::move(result));
|
50
50
|
}
|
51
51
|
|
52
52
|
void ShutdownLocked() override {}
|