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
@@ -1,28 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*/
|
18
|
-
|
19
|
-
/** Round Robin Policy.
|
20
|
-
*
|
21
|
-
* Before every pick, the \a get_next_ready_subchannel_index_locked function
|
22
|
-
* returns the p->subchannel_list->subchannels index for next subchannel,
|
23
|
-
* respecting the relative order of the addresses provided upon creation or
|
24
|
-
* updates. Note however that updates will start picking from the beginning of
|
25
|
-
* the updated list. */
|
1
|
+
//
|
2
|
+
// Copyright 2015 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
26
16
|
|
27
17
|
#include <grpc/support/port_platform.h>
|
28
18
|
|
@@ -41,7 +31,6 @@
|
|
41
31
|
#include "src/core/lib/gprpp/sync.h"
|
42
32
|
#include "src/core/lib/transport/connectivity_state.h"
|
43
33
|
#include "src/core/lib/transport/error_utils.h"
|
44
|
-
#include "src/core/lib/transport/static_metadata.h"
|
45
34
|
|
46
35
|
namespace grpc_core {
|
47
36
|
|
@@ -166,15 +155,14 @@ class RoundRobin : public LoadBalancingPolicy {
|
|
166
155
|
|
167
156
|
void ShutdownLocked() override;
|
168
157
|
|
169
|
-
|
158
|
+
// List of subchannels.
|
170
159
|
OrphanablePtr<RoundRobinSubchannelList> subchannel_list_;
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
* update. */
|
160
|
+
// Latest pending subchannel list.
|
161
|
+
// When we get an updated address list, we create a new subchannel list
|
162
|
+
// for it here, and we wait to swap it into subchannel_list_ until the new
|
163
|
+
// list becomes READY.
|
176
164
|
OrphanablePtr<RoundRobinSubchannelList> latest_pending_subchannel_list_;
|
177
|
-
|
165
|
+
|
178
166
|
bool shutdown_ = false;
|
179
167
|
};
|
180
168
|
|
@@ -303,31 +291,30 @@ void RoundRobin::RoundRobinSubchannelList::
|
|
303
291
|
RoundRobin* p = static_cast<RoundRobin*>(policy());
|
304
292
|
// Only set connectivity state if this is the current subchannel list.
|
305
293
|
if (p->subchannel_list_.get() != this) return;
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
*/
|
294
|
+
// In priority order. The first rule to match terminates the search (ie, if we
|
295
|
+
// are on rule n, all previous rules were unfulfilled).
|
296
|
+
//
|
297
|
+
// 1) RULE: ANY subchannel is READY => policy is READY.
|
298
|
+
// CHECK: subchannel_list->num_ready > 0.
|
299
|
+
//
|
300
|
+
// 2) RULE: ANY subchannel is CONNECTING => policy is CONNECTING.
|
301
|
+
// CHECK: sd->curr_connectivity_state == CONNECTING.
|
302
|
+
//
|
303
|
+
// 3) RULE: ALL subchannels are TRANSIENT_FAILURE => policy is
|
304
|
+
// TRANSIENT_FAILURE.
|
305
|
+
// CHECK: subchannel_list->num_transient_failures ==
|
306
|
+
// subchannel_list->num_subchannels.
|
320
307
|
if (num_ready_ > 0) {
|
321
|
-
|
308
|
+
// 1) READY
|
322
309
|
p->channel_control_helper()->UpdateState(
|
323
310
|
GRPC_CHANNEL_READY, absl::Status(), absl::make_unique<Picker>(p, this));
|
324
311
|
} else if (num_connecting_ > 0) {
|
325
|
-
|
312
|
+
// 2) CONNECTING
|
326
313
|
p->channel_control_helper()->UpdateState(
|
327
314
|
GRPC_CHANNEL_CONNECTING, absl::Status(),
|
328
315
|
absl::make_unique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")));
|
329
316
|
} else if (num_transient_failure_ == num_subchannels()) {
|
330
|
-
|
317
|
+
// 3) TRANSIENT_FAILURE
|
331
318
|
absl::Status status =
|
332
319
|
absl::UnavailableError("connections to all backends failing");
|
333
320
|
p->channel_control_helper()->UpdateState(
|
@@ -432,24 +419,38 @@ void RoundRobin::RoundRobinSubchannelData::ProcessConnectivityChangeLocked(
|
|
432
419
|
}
|
433
420
|
|
434
421
|
void RoundRobin::UpdateLocked(UpdateArgs args) {
|
435
|
-
|
436
|
-
|
437
|
-
this, args.addresses.size());
|
438
|
-
}
|
439
|
-
// Replace latest_pending_subchannel_list_.
|
440
|
-
if (latest_pending_subchannel_list_ != nullptr) {
|
422
|
+
ServerAddressList addresses;
|
423
|
+
if (args.addresses.ok()) {
|
441
424
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
|
442
|
-
gpr_log(GPR_INFO,
|
443
|
-
|
444
|
-
|
425
|
+
gpr_log(GPR_INFO, "[RR %p] received update with %" PRIuPTR " addresses",
|
426
|
+
this, args.addresses->size());
|
427
|
+
}
|
428
|
+
addresses = std::move(*args.addresses);
|
429
|
+
} else {
|
430
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
|
431
|
+
gpr_log(GPR_INFO, "[RR %p] received update with address error: %s", this,
|
432
|
+
args.addresses.status().ToString().c_str());
|
445
433
|
}
|
434
|
+
// If we already have a subchannel list, then ignore the resolver
|
435
|
+
// failure and keep using the existing list.
|
436
|
+
if (subchannel_list_ != nullptr) return;
|
437
|
+
}
|
438
|
+
// Replace latest_pending_subchannel_list_.
|
439
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace) &&
|
440
|
+
latest_pending_subchannel_list_ != nullptr) {
|
441
|
+
gpr_log(GPR_INFO,
|
442
|
+
"[RR %p] Shutting down previous pending subchannel list %p", this,
|
443
|
+
latest_pending_subchannel_list_.get());
|
446
444
|
}
|
447
445
|
latest_pending_subchannel_list_ = MakeOrphanable<RoundRobinSubchannelList>(
|
448
|
-
this, &grpc_lb_round_robin_trace, std::move(
|
446
|
+
this, &grpc_lb_round_robin_trace, std::move(addresses), *args.args);
|
449
447
|
if (latest_pending_subchannel_list_->num_subchannels() == 0) {
|
450
448
|
// If the new list is empty, immediately promote the new list to the
|
451
449
|
// current list and transition to TRANSIENT_FAILURE.
|
452
|
-
absl::Status status =
|
450
|
+
absl::Status status =
|
451
|
+
args.addresses.ok() ? absl::UnavailableError(absl::StrCat(
|
452
|
+
"empty address list: ", args.resolution_note))
|
453
|
+
: args.addresses.status();
|
453
454
|
channel_control_helper()->UpdateState(
|
454
455
|
GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
455
456
|
absl::make_unique<TransientFailurePicker>(status));
|
@@ -28,18 +28,16 @@
|
|
28
28
|
#include <grpc/support/alloc.h>
|
29
29
|
|
30
30
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
31
|
-
#include "src/core/ext/filters/client_channel/server_address.h"
|
32
|
-
// TODO(roth): Should not need the include of subchannel.h here, since
|
33
|
-
// that implementation should be hidden from the LB policy API.
|
34
|
-
#include "src/core/ext/filters/client_channel/subchannel.h"
|
35
31
|
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
36
32
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
37
33
|
#include "src/core/lib/channel/channel_args.h"
|
38
34
|
#include "src/core/lib/debug/trace.h"
|
35
|
+
#include "src/core/lib/gprpp/manual_constructor.h"
|
39
36
|
#include "src/core/lib/gprpp/orphanable.h"
|
40
37
|
#include "src/core/lib/gprpp/ref_counted.h"
|
41
38
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
42
39
|
#include "src/core/lib/iomgr/closure.h"
|
40
|
+
#include "src/core/lib/resolver/server_address.h"
|
43
41
|
#include "src/core/lib/transport/connectivity_state.h"
|
44
42
|
|
45
43
|
// Code for maintaining a list of subchannels within an LB policy.
|
@@ -175,13 +173,18 @@ class SubchannelData {
|
|
175
173
|
template <typename SubchannelListType, typename SubchannelDataType>
|
176
174
|
class SubchannelList : public InternallyRefCounted<SubchannelListType> {
|
177
175
|
public:
|
178
|
-
|
176
|
+
// We use ManualConstructor here to support SubchannelDataType classes
|
177
|
+
// that are not copyable.
|
178
|
+
typedef absl::InlinedVector<ManualConstructor<SubchannelDataType>, 10>
|
179
|
+
SubchannelVector;
|
179
180
|
|
180
181
|
// The number of subchannels in the list.
|
181
182
|
size_t num_subchannels() const { return subchannels_.size(); }
|
182
183
|
|
183
184
|
// The data for the subchannel at a particular index.
|
184
|
-
SubchannelDataType* subchannel(size_t index) {
|
185
|
+
SubchannelDataType* subchannel(size_t index) {
|
186
|
+
return subchannels_[index].get();
|
187
|
+
}
|
185
188
|
|
186
189
|
// Returns true if the subchannel list is shutting down.
|
187
190
|
bool shutting_down() const { return shutting_down_; }
|
@@ -386,7 +389,8 @@ SubchannelList<SubchannelListType, SubchannelDataType>::SubchannelList(
|
|
386
389
|
tracer_->name(), policy_, this, subchannels_.size(),
|
387
390
|
subchannel.get(), address.ToString().c_str());
|
388
391
|
}
|
389
|
-
subchannels_.emplace_back(
|
392
|
+
subchannels_.emplace_back();
|
393
|
+
subchannels_.back().Init(this, std::move(address), std::move(subchannel));
|
390
394
|
}
|
391
395
|
}
|
392
396
|
|
@@ -396,6 +400,9 @@ SubchannelList<SubchannelListType, SubchannelDataType>::~SubchannelList() {
|
|
396
400
|
gpr_log(GPR_INFO, "[%s %p] Destroying subchannel_list %p", tracer_->name(),
|
397
401
|
policy_, this);
|
398
402
|
}
|
403
|
+
for (auto& sd : subchannels_) {
|
404
|
+
sd.Destroy();
|
405
|
+
}
|
399
406
|
}
|
400
407
|
|
401
408
|
template <typename SubchannelListType, typename SubchannelDataType>
|
@@ -406,8 +413,7 @@ void SubchannelList<SubchannelListType, SubchannelDataType>::ShutdownLocked() {
|
|
406
413
|
}
|
407
414
|
GPR_ASSERT(!shutting_down_);
|
408
415
|
shutting_down_ = true;
|
409
|
-
for (
|
410
|
-
SubchannelDataType* sd = &subchannels_[i];
|
416
|
+
for (auto& sd : subchannels_) {
|
411
417
|
sd->ShutdownLocked();
|
412
418
|
}
|
413
419
|
}
|
@@ -415,8 +421,7 @@ void SubchannelList<SubchannelListType, SubchannelDataType>::ShutdownLocked() {
|
|
415
421
|
template <typename SubchannelListType, typename SubchannelDataType>
|
416
422
|
void SubchannelList<SubchannelListType,
|
417
423
|
SubchannelDataType>::ResetBackoffLocked() {
|
418
|
-
for (
|
419
|
-
SubchannelDataType* sd = &subchannels_[i];
|
424
|
+
for (auto& sd : subchannels_) {
|
420
425
|
sd->ResetBackoffLocked();
|
421
426
|
}
|
422
427
|
}
|
@@ -123,7 +123,7 @@ class WeightedTargetLb : public LoadBalancingPolicy {
|
|
123
123
|
void Orphan() override;
|
124
124
|
|
125
125
|
void UpdateLocked(const WeightedTargetLbConfig::ChildConfig& config,
|
126
|
-
ServerAddressList addresses,
|
126
|
+
absl::StatusOr<ServerAddressList> addresses,
|
127
127
|
const grpc_channel_args* args);
|
128
128
|
void ResetBackoffLocked();
|
129
129
|
void DeactivateLocked();
|
@@ -296,13 +296,18 @@ void WeightedTargetLb::UpdateLocked(UpdateArgs args) {
|
|
296
296
|
}
|
297
297
|
}
|
298
298
|
// Update all children.
|
299
|
-
HierarchicalAddressMap address_map =
|
299
|
+
absl::StatusOr<HierarchicalAddressMap> address_map =
|
300
300
|
MakeHierarchicalAddressMap(args.addresses);
|
301
301
|
for (const auto& p : config_->target_map()) {
|
302
302
|
const std::string& name = p.first;
|
303
303
|
const WeightedTargetLbConfig::ChildConfig& config = p.second;
|
304
|
-
|
305
|
-
|
304
|
+
absl::StatusOr<ServerAddressList> addresses;
|
305
|
+
if (address_map.ok()) {
|
306
|
+
addresses = std::move((*address_map)[name]);
|
307
|
+
} else {
|
308
|
+
addresses = address_map.status();
|
309
|
+
}
|
310
|
+
targets_[name]->UpdateLocked(config, std::move(addresses), args.args);
|
306
311
|
}
|
307
312
|
UpdateStateLocked();
|
308
313
|
}
|
@@ -473,7 +478,8 @@ WeightedTargetLb::WeightedChild::CreateChildPolicyLocked(
|
|
473
478
|
|
474
479
|
void WeightedTargetLb::WeightedChild::UpdateLocked(
|
475
480
|
const WeightedTargetLbConfig::ChildConfig& config,
|
476
|
-
ServerAddressList addresses,
|
481
|
+
absl::StatusOr<ServerAddressList> addresses,
|
482
|
+
const grpc_channel_args* args) {
|
477
483
|
if (weighted_target_policy_->shutting_down_) return;
|
478
484
|
// Update child weight.
|
479
485
|
weight_ = config.weight;
|
@@ -25,6 +25,7 @@
|
|
25
25
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
26
26
|
#include "src/core/ext/xds/xds_certificate_provider.h"
|
27
27
|
#include "src/core/ext/xds/xds_client.h"
|
28
|
+
#include "src/core/ext/xds/xds_cluster.h"
|
28
29
|
#include "src/core/lib/channel/channel_args.h"
|
29
30
|
#include "src/core/lib/gprpp/memory.h"
|
30
31
|
#include "src/core/lib/gprpp/orphanable.h"
|
@@ -66,12 +67,12 @@ class CdsLb : public LoadBalancingPolicy {
|
|
66
67
|
|
67
68
|
private:
|
68
69
|
// Watcher for getting cluster data from XdsClient.
|
69
|
-
class ClusterWatcher : public
|
70
|
+
class ClusterWatcher : public XdsClusterResourceType::WatcherInterface {
|
70
71
|
public:
|
71
72
|
ClusterWatcher(RefCountedPtr<CdsLb> parent, std::string name)
|
72
73
|
: parent_(std::move(parent)), name_(std::move(name)) {}
|
73
74
|
|
74
|
-
void
|
75
|
+
void OnResourceChanged(XdsClusterResource cluster_data) override {
|
75
76
|
Ref().release(); // Ref held by lambda
|
76
77
|
parent_->work_serializer()->Run(
|
77
78
|
// TODO(roth): When we move to C++14, capture cluster_data with
|
@@ -111,7 +112,7 @@ class CdsLb : public LoadBalancingPolicy {
|
|
111
112
|
// Not owned, so do not dereference.
|
112
113
|
ClusterWatcher* watcher = nullptr;
|
113
114
|
// Most recent update obtained from this watcher.
|
114
|
-
absl::optional<
|
115
|
+
absl::optional<XdsClusterResource> update;
|
115
116
|
};
|
116
117
|
|
117
118
|
// Delegating helper to be passed to child policy.
|
@@ -139,15 +140,15 @@ class CdsLb : public LoadBalancingPolicy {
|
|
139
140
|
const std::string& name, Json::Array* discovery_mechanisms,
|
140
141
|
std::set<std::string>* clusters_needed);
|
141
142
|
void OnClusterChanged(const std::string& name,
|
142
|
-
|
143
|
+
XdsClusterResource cluster_data);
|
143
144
|
void OnError(const std::string& name, grpc_error_handle error);
|
144
145
|
void OnResourceDoesNotExist(const std::string& name);
|
145
146
|
|
146
147
|
grpc_error_handle UpdateXdsCertificateProvider(
|
147
|
-
const std::string& cluster_name, const
|
148
|
+
const std::string& cluster_name, const XdsClusterResource& cluster_data);
|
148
149
|
|
149
150
|
void CancelClusterDataWatch(absl::string_view cluster_name,
|
150
|
-
|
151
|
+
ClusterWatcher* watcher,
|
151
152
|
bool delay_unsubscription = false);
|
152
153
|
|
153
154
|
void MaybeDestroyChildPolicyLocked();
|
@@ -301,7 +302,8 @@ void CdsLb::UpdateLocked(UpdateArgs args) {
|
|
301
302
|
}
|
302
303
|
auto watcher = MakeRefCounted<ClusterWatcher>(Ref(), config_->cluster());
|
303
304
|
watchers_[config_->cluster()].watcher = watcher.get();
|
304
|
-
xds_client_
|
305
|
+
XdsClusterResourceType::StartWatch(xds_client_.get(), config_->cluster(),
|
306
|
+
std::move(watcher));
|
305
307
|
}
|
306
308
|
}
|
307
309
|
|
@@ -326,13 +328,15 @@ bool CdsLb::GenerateDiscoveryMechanismForCluster(
|
|
326
328
|
name.c_str());
|
327
329
|
}
|
328
330
|
state.watcher = watcher.get();
|
329
|
-
xds_client_
|
331
|
+
XdsClusterResourceType::StartWatch(xds_client_.get(), name,
|
332
|
+
std::move(watcher));
|
330
333
|
return false;
|
331
334
|
}
|
332
335
|
// Don't have the update we need yet.
|
333
336
|
if (!state.update.has_value()) return false;
|
334
337
|
// For AGGREGATE clusters, recursively expand to child clusters.
|
335
|
-
if (state.update->cluster_type ==
|
338
|
+
if (state.update->cluster_type ==
|
339
|
+
XdsClusterResource::ClusterType::AGGREGATE) {
|
336
340
|
bool missing_cluster = false;
|
337
341
|
for (const std::string& child_name :
|
338
342
|
state.update->prioritized_cluster_names) {
|
@@ -348,13 +352,13 @@ bool CdsLb::GenerateDiscoveryMechanismForCluster(
|
|
348
352
|
{"max_concurrent_requests", state.update->max_concurrent_requests},
|
349
353
|
};
|
350
354
|
switch (state.update->cluster_type) {
|
351
|
-
case
|
355
|
+
case XdsClusterResource::ClusterType::EDS:
|
352
356
|
mechanism["type"] = "EDS";
|
353
357
|
if (!state.update->eds_service_name.empty()) {
|
354
358
|
mechanism["edsServiceName"] = state.update->eds_service_name;
|
355
359
|
}
|
356
360
|
break;
|
357
|
-
case
|
361
|
+
case XdsClusterResource::ClusterType::LOGICAL_DNS:
|
358
362
|
mechanism["type"] = "LOGICAL_DNS";
|
359
363
|
mechanism["dnsHostname"] = state.update->dns_hostname;
|
360
364
|
break;
|
@@ -371,7 +375,7 @@ bool CdsLb::GenerateDiscoveryMechanismForCluster(
|
|
371
375
|
}
|
372
376
|
|
373
377
|
void CdsLb::OnClusterChanged(const std::string& name,
|
374
|
-
|
378
|
+
XdsClusterResource cluster_data) {
|
375
379
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_cds_lb_trace)) {
|
376
380
|
gpr_log(
|
377
381
|
GPR_INFO,
|
@@ -509,7 +513,7 @@ void CdsLb::OnResourceDoesNotExist(const std::string& name) {
|
|
509
513
|
}
|
510
514
|
|
511
515
|
grpc_error_handle CdsLb::UpdateXdsCertificateProvider(
|
512
|
-
const std::string& cluster_name, const
|
516
|
+
const std::string& cluster_name, const XdsClusterResource& cluster_data) {
|
513
517
|
// Early out if channel is not configured to use xds security.
|
514
518
|
grpc_channel_credentials* channel_credentials =
|
515
519
|
grpc_channel_credentials_find_in_args(args_);
|
@@ -609,7 +613,7 @@ grpc_error_handle CdsLb::UpdateXdsCertificateProvider(
|
|
609
613
|
}
|
610
614
|
|
611
615
|
void CdsLb::CancelClusterDataWatch(absl::string_view cluster_name,
|
612
|
-
|
616
|
+
ClusterWatcher* watcher,
|
613
617
|
bool delay_unsubscription) {
|
614
618
|
if (xds_certificate_provider_ != nullptr) {
|
615
619
|
std::string name(cluster_name);
|
@@ -619,7 +623,7 @@ void CdsLb::CancelClusterDataWatch(absl::string_view cluster_name,
|
|
619
623
|
nullptr);
|
620
624
|
xds_certificate_provider_->UpdateSubjectAlternativeNameMatchers(name, {});
|
621
625
|
}
|
622
|
-
xds_client_
|
626
|
+
XdsClusterResourceType::CancelWatch(xds_client_.get(), cluster_name, watcher,
|
623
627
|
delay_unsubscription);
|
624
628
|
}
|
625
629
|
//
|
@@ -19,9 +19,9 @@
|
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
|
-
#include "src/core/ext/filters/client_channel/server_address.h"
|
23
22
|
#include "src/core/ext/xds/xds_client_stats.h"
|
24
23
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
24
|
+
#include "src/core/lib/resolver/server_address.h"
|
25
25
|
|
26
26
|
namespace grpc_core {
|
27
27
|
|
@@ -30,6 +30,7 @@
|
|
30
30
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
31
31
|
#include "src/core/ext/xds/xds_client.h"
|
32
32
|
#include "src/core/ext/xds/xds_client_stats.h"
|
33
|
+
#include "src/core/ext/xds/xds_endpoint.h"
|
33
34
|
#include "src/core/lib/channel/channel_args.h"
|
34
35
|
#include "src/core/lib/gpr/env.h"
|
35
36
|
#include "src/core/lib/gpr/string.h"
|
@@ -120,7 +121,7 @@ class XdsClusterImplLbConfig : public LoadBalancingPolicy::Config {
|
|
120
121
|
std::string cluster_name, std::string eds_service_name,
|
121
122
|
absl::optional<std::string> lrs_load_reporting_server_name,
|
122
123
|
uint32_t max_concurrent_requests,
|
123
|
-
RefCountedPtr<
|
124
|
+
RefCountedPtr<XdsEndpointResource::DropConfig> drop_config)
|
124
125
|
: child_policy_(std::move(child_policy)),
|
125
126
|
cluster_name_(std::move(cluster_name)),
|
126
127
|
eds_service_name_(std::move(eds_service_name)),
|
@@ -140,7 +141,7 @@ class XdsClusterImplLbConfig : public LoadBalancingPolicy::Config {
|
|
140
141
|
return lrs_load_reporting_server_name_;
|
141
142
|
};
|
142
143
|
uint32_t max_concurrent_requests() const { return max_concurrent_requests_; }
|
143
|
-
RefCountedPtr<
|
144
|
+
RefCountedPtr<XdsEndpointResource::DropConfig> drop_config() const {
|
144
145
|
return drop_config_;
|
145
146
|
}
|
146
147
|
|
@@ -150,7 +151,7 @@ class XdsClusterImplLbConfig : public LoadBalancingPolicy::Config {
|
|
150
151
|
std::string eds_service_name_;
|
151
152
|
absl::optional<std::string> lrs_load_reporting_server_name_;
|
152
153
|
uint32_t max_concurrent_requests_;
|
153
|
-
RefCountedPtr<
|
154
|
+
RefCountedPtr<XdsEndpointResource::DropConfig> drop_config_;
|
154
155
|
};
|
155
156
|
|
156
157
|
// xDS Cluster Impl LB policy.
|
@@ -205,7 +206,7 @@ class XdsClusterImplLb : public LoadBalancingPolicy {
|
|
205
206
|
|
206
207
|
RefCountedPtr<CircuitBreakerCallCounterMap::CallCounter> call_counter_;
|
207
208
|
uint32_t max_concurrent_requests_;
|
208
|
-
RefCountedPtr<
|
209
|
+
RefCountedPtr<XdsEndpointResource::DropConfig> drop_config_;
|
209
210
|
RefCountedPtr<XdsClusterDropStats> drop_stats_;
|
210
211
|
RefCountedPtr<RefCountedPicker> picker_;
|
211
212
|
};
|
@@ -238,7 +239,7 @@ class XdsClusterImplLb : public LoadBalancingPolicy {
|
|
238
239
|
|
239
240
|
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
|
240
241
|
const grpc_channel_args* args);
|
241
|
-
void UpdateChildPolicyLocked(ServerAddressList addresses,
|
242
|
+
void UpdateChildPolicyLocked(absl::StatusOr<ServerAddressList> addresses,
|
242
243
|
const grpc_channel_args* args);
|
243
244
|
|
244
245
|
void MaybeUpdatePickerLocked();
|
@@ -470,8 +471,8 @@ void XdsClusterImplLb::UpdateLocked(UpdateArgs args) {
|
|
470
471
|
config_->cluster_name(), config_->eds_service_name());
|
471
472
|
} else {
|
472
473
|
// Cluster name, EDS service name, and LRS server name should never
|
473
|
-
// change, because the
|
474
|
-
// that happens.
|
474
|
+
// change, because the xds_cluster_resolver policy above us should be
|
475
|
+
// swapped out if that happens.
|
475
476
|
GPR_ASSERT(config_->cluster_name() == old_config->cluster_name());
|
476
477
|
GPR_ASSERT(config_->eds_service_name() == old_config->eds_service_name());
|
477
478
|
GPR_ASSERT(config_->lrs_load_reporting_server_name() ==
|
@@ -541,8 +542,9 @@ OrphanablePtr<LoadBalancingPolicy> XdsClusterImplLb::CreateChildPolicyLocked(
|
|
541
542
|
return lb_policy;
|
542
543
|
}
|
543
544
|
|
544
|
-
void XdsClusterImplLb::UpdateChildPolicyLocked(
|
545
|
-
|
545
|
+
void XdsClusterImplLb::UpdateChildPolicyLocked(
|
546
|
+
absl::StatusOr<ServerAddressList> addresses,
|
547
|
+
const grpc_channel_args* args) {
|
546
548
|
// Create policy if needed.
|
547
549
|
if (child_policy_ == nullptr) {
|
548
550
|
child_policy_ = CreateChildPolicyLocked(args);
|
@@ -736,7 +738,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
736
738
|
}
|
737
739
|
}
|
738
740
|
// Drop config.
|
739
|
-
auto drop_config = MakeRefCounted<
|
741
|
+
auto drop_config = MakeRefCounted<XdsEndpointResource::DropConfig>();
|
740
742
|
it = json.object_value().find("dropCategories");
|
741
743
|
if (it == json.object_value().end()) {
|
742
744
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
@@ -762,7 +764,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
762
764
|
|
763
765
|
private:
|
764
766
|
static std::vector<grpc_error_handle> ParseDropCategories(
|
765
|
-
const Json& json,
|
767
|
+
const Json& json, XdsEndpointResource::DropConfig* drop_config) {
|
766
768
|
std::vector<grpc_error_handle> error_list;
|
767
769
|
if (json.type() != Json::Type::ARRAY) {
|
768
770
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
@@ -786,7 +788,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
786
788
|
}
|
787
789
|
|
788
790
|
static std::vector<grpc_error_handle> ParseDropCategory(
|
789
|
-
const Json& json,
|
791
|
+
const Json& json, XdsEndpointResource::DropConfig* drop_config) {
|
790
792
|
std::vector<grpc_error_handle> error_list;
|
791
793
|
if (json.type() != Json::Type::OBJECT) {
|
792
794
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
@@ -122,7 +122,7 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
|
|
122
122
|
void Orphan() override;
|
123
123
|
|
124
124
|
void UpdateLocked(RefCountedPtr<LoadBalancingPolicy::Config> config,
|
125
|
-
const ServerAddressList
|
125
|
+
const absl::StatusOr<ServerAddressList>& addresses,
|
126
126
|
const grpc_channel_args* args);
|
127
127
|
void ExitIdleLocked();
|
128
128
|
void ResetBackoffLocked();
|
@@ -441,7 +441,8 @@ XdsClusterManagerLb::ClusterChild::CreateChildPolicyLocked(
|
|
441
441
|
|
442
442
|
void XdsClusterManagerLb::ClusterChild::UpdateLocked(
|
443
443
|
RefCountedPtr<LoadBalancingPolicy::Config> config,
|
444
|
-
const ServerAddressList
|
444
|
+
const absl::StatusOr<ServerAddressList>& addresses,
|
445
|
+
const grpc_channel_args* args) {
|
445
446
|
if (xds_cluster_manager_policy_->shutting_down_) return;
|
446
447
|
// Update child weight.
|
447
448
|
// Reactivate if needed.
|