grpc 1.30.1 → 1.32.0.pre1
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 +723 -15910
- data/include/grpc/grpc_security.h +31 -14
- data/include/grpc/grpc_security_constants.h +3 -0
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/grpc_types.h +7 -5
- data/include/grpc/impl/codegen/port_platform.h +6 -33
- data/src/core/ext/filters/client_channel/backend_metric.cc +12 -9
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +470 -285
- data/src/core/ext/filters/client_channel/client_channel.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
- data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
- data/src/core/ext/filters/client_channel/config_selector.h +93 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +8 -1
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +8 -8
- data/src/core/ext/filters/client_channel/http_proxy.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy.h +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +59 -36
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -37
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -13
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +29 -10
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +5 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +4 -6
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +23 -13
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +18 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +22 -14
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +18 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +385 -78
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +5 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +6 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +8 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +9 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +7 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +36 -51
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- 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 +6 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +383 -31
- data/src/core/ext/filters/client_channel/resolver_registry.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +6 -7
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +0 -1
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +38 -32
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +39 -20
- data/src/core/ext/filters/client_channel/server_address.cc +40 -7
- data/src/core/ext/filters/client_channel/server_address.h +42 -4
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +65 -24
- data/src/core/ext/filters/client_channel/subchannel.h +16 -4
- data/src/core/ext/filters/http/client/http_client_filter.cc +5 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +2 -1
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +74 -33
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
- data/src/core/ext/filters/max_age/max_age_filter.cc +2 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +56 -80
- data/src/core/ext/filters/message_size/message_size_filter.h +6 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +18 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +10 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +378 -348
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +7 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +10 -16
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +9 -9
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +256 -279
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +23 -28
- data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -9
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -29
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +34 -71
- data/src/core/ext/transport/chttp2/transport/writing.cc +15 -19
- data/src/core/ext/transport/inproc/inproc_transport.cc +47 -27
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +224 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +700 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +226 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +380 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1378 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/filter.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +69 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/outlier_detection.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +334 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/backoff.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +79 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +309 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +869 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +96 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +328 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +195 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +634 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +684 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/http_uri.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +80 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +152 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +536 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +58 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +220 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +273 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +332 -0
- data/src/core/ext/upb-generated/envoy/config/listener/{v2 → v3}/api_listener.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +108 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +401 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +138 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +490 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +174 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +599 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +204 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +773 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2855 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +59 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +135 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +108 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +312 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1125 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +34 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +111 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +401 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +72 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +198 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +105 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +388 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/cluster/v3}/cds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +129 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +386 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +136 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/rds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/srds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +114 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +77 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +145 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +127 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +188 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +250 -0
- data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
- data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +8 -9
- data/src/core/ext/upb-generated/envoy/type/{percent.upb.c → v3/percent.upb.c} +9 -8
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +86 -0
- data/src/core/ext/upb-generated/envoy/type/{range.upb.c → v3/range.upb.c} +12 -11
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -0
- data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +6 -5
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +61 -0
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +759 -0
- data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +39 -39
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +412 -386
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +34 -55
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +5 -6
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -0
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
- data/src/core/ext/upb-generated/validate/validate.upb.c +11 -11
- data/src/core/ext/upb-generated/validate/validate.upb.h +537 -536
- data/src/core/ext/xds/xds_api.cc +2388 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_api.h +120 -40
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +56 -25
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +8 -3
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel.h +4 -4
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +3 -3
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_secure.cc +2 -5
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +94 -347
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +12 -45
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +2 -2
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +13 -13
- data/src/core/lib/channel/channel_trace.cc +2 -6
- data/src/core/lib/channel/channelz.cc +19 -30
- data/src/core/lib/channel/channelz.h +1 -1
- data/src/core/lib/channel/channelz_registry.cc +3 -1
- data/src/core/lib/gpr/log_linux.cc +6 -8
- data/src/core/lib/gpr/log_posix.cc +6 -8
- data/src/core/lib/gpr/string.cc +10 -9
- data/src/core/lib/gpr/string.h +4 -2
- data/src/core/lib/gpr/sync_posix.cc +2 -8
- data/src/core/lib/gprpp/global_config_env.cc +8 -6
- data/src/core/lib/http/httpcli.cc +13 -10
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -0
- data/src/core/lib/iomgr/endpoint.cc +5 -1
- data/src/core/lib/iomgr/endpoint.h +7 -3
- data/src/core/lib/iomgr/endpoint_cfstream.cc +32 -11
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -6
- data/src/core/lib/iomgr/ev_epollex_linux.cc +15 -21
- data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.h +3 -3
- data/src/core/lib/iomgr/port.h +1 -21
- data/src/core/lib/iomgr/resolve_address_custom.cc +13 -18
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -8
- data/src/core/lib/iomgr/resource_quota.cc +34 -31
- data/src/core/lib/iomgr/sockaddr_utils.cc +9 -6
- data/src/core/lib/iomgr/sockaddr_utils.h +3 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +95 -55
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +9 -11
- data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +27 -36
- data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
- data/src/core/lib/iomgr/tcp_custom.cc +33 -17
- data/src/core/lib/iomgr/tcp_custom.h +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +31 -13
- data/src/core/lib/iomgr/tcp_server.cc +3 -4
- data/src/core/lib/iomgr/tcp_server.h +7 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +6 -14
- data/src/core/lib/iomgr/tcp_server_posix.cc +34 -41
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -9
- data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
- data/src/core/lib/iomgr/tcp_windows.cc +26 -10
- data/src/core/lib/iomgr/timer_generic.cc +13 -12
- data/src/core/lib/iomgr/udp_server.cc +24 -23
- data/src/core/lib/iomgr/udp_server.h +5 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
- data/src/core/lib/json/json_reader.cc +20 -21
- data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
- data/src/core/lib/security/authorization/authorization_engine.h +84 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +153 -0
- data/src/core/lib/security/authorization/evaluate_args.h +59 -0
- data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +42 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +68 -0
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +93 -0
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +56 -0
- data/src/core/lib/security/authorization/mock_cel/statusor.h +50 -0
- data/src/core/lib/security/credentials/credentials.h +5 -3
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +64 -43
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +19 -28
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +10 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +11 -12
- data/src/core/lib/security/security_connector/security_connector.cc +2 -0
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -11
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
- data/src/core/lib/security/security_connector/ssl_utils.cc +44 -23
- data/src/core/lib/security/security_connector/ssl_utils.h +6 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +27 -24
- data/src/core/lib/security/transport/client_auth_filter.cc +10 -9
- data/src/core/lib/security/transport/secure_endpoint.cc +7 -1
- data/src/core/lib/security/util/json_util.cc +12 -13
- data/src/core/lib/slice/slice.cc +38 -1
- data/src/core/lib/slice/slice_internal.h +1 -0
- data/src/core/lib/surface/call.cc +52 -53
- data/src/core/lib/surface/call.h +2 -1
- data/src/core/lib/surface/channel.cc +28 -20
- data/src/core/lib/surface/channel.h +12 -2
- data/src/core/lib/surface/completion_queue.cc +0 -5
- data/src/core/lib/surface/init.cc +1 -1
- data/src/core/lib/surface/server.cc +1102 -1347
- data/src/core/lib/surface/server.h +369 -71
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/authority_override.cc +38 -0
- data/src/core/lib/transport/authority_override.h +32 -0
- data/src/core/lib/transport/connectivity_state.cc +18 -13
- data/src/core/lib/transport/connectivity_state.h +18 -6
- data/src/core/lib/transport/error_utils.cc +13 -0
- data/src/core/lib/transport/error_utils.h +6 -0
- data/src/core/lib/transport/static_metadata.cc +295 -276
- data/src/core/lib/transport/static_metadata.h +80 -73
- data/src/core/lib/transport/transport.h +13 -0
- data/src/core/lib/uri/uri_parser.cc +30 -35
- data/src/core/lib/uri/uri_parser.h +3 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -13
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +24 -0
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +102 -11
- data/src/core/tsi/ssl_transport_security.h +14 -2
- data/src/core/tsi/transport_security_interface.h +5 -0
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/extconf.rb +5 -2
- data/src/ruby/ext/grpc/rb_call.c +3 -2
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +54 -10
- data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -4
- data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
- data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +5 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +28 -12
- data/src/ruby/spec/channel_credentials_spec.rb +10 -0
- data/src/ruby/spec/generic/active_call_spec.rb +19 -8
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +25 -1
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +1727 -0
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +161 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
- data/third_party/abseil-cpp/absl/container/fixed_array.h +515 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
- data/third_party/abseil-cpp/absl/container/internal/common.h +202 -0
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +440 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +146 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +191 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +269 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +297 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +49 -0
- data/third_party/abseil-cpp/absl/container/internal/layout.h +741 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1882 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +138 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1895 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +192 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +125 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +70 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +99 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +85 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +128 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +194 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +25 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1480 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +324 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +988 -0
- data/third_party/abseil-cpp/absl/status/status.cc +447 -0
- data/third_party/abseil-cpp/absl/status/status.h +428 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +43 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
- data/third_party/abseil-cpp/absl/strings/cord.cc +2019 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1121 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +151 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +261 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +484 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2728 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1056 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
- data/third_party/abseil-cpp/absl/types/variant.h +861 -0
- data/third_party/boringssl-with-bazel/err_data.c +266 -254
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +159 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +11 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +456 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +192 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +116 -363
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +7 -45
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +28 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +52 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +72 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +800 -715
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +9 -2
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +9 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +21 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -7
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +38 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +4 -24
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -24
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +34 -9
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +31 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +17 -9
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1279 -0
- data/third_party/re2/re2/dfa.cc +2130 -0
- data/third_party/re2/re2/filtered_re2.cc +121 -0
- data/third_party/re2/re2/filtered_re2.h +109 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2464 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +710 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +988 -0
- data/third_party/re2/re2/prog.h +436 -0
- data/third_party/re2/re2/re2.cc +1362 -0
- data/third_party/re2/re2/re2.h +1002 -0
- data/third_party/re2/re2/regexp.cc +980 -0
- data/third_party/re2/re2/regexp.h +659 -0
- data/third_party/re2/re2/set.cc +154 -0
- data/third_party/re2/re2/set.h +80 -0
- data/third_party/re2/re2/simplify.cc +657 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- data/third_party/upb/upb/decode.c +517 -505
- data/third_party/upb/upb/encode.c +165 -123
- data/third_party/upb/upb/msg.c +130 -64
- data/third_party/upb/upb/msg.h +418 -14
- data/third_party/upb/upb/port_def.inc +35 -6
- data/third_party/upb/upb/port_undef.inc +8 -1
- data/third_party/upb/upb/table.c +53 -86
- data/third_party/upb/upb/table.int.h +11 -52
- data/third_party/upb/upb/upb.c +151 -125
- data/third_party/upb/upb/upb.h +91 -147
- data/third_party/upb/upb/upb.hpp +88 -0
- metadata +310 -148
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1906
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -35
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -418
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -197
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -378
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1447
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -78
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -897
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -72
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -673
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -518
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -89
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -266
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -399
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -3032
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1132
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -134
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -144
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
- data/src/core/lib/security/transport/target_authority_table.cc +0 -75
- data/src/core/lib/security/transport/target_authority_table.h +0 -40
- data/src/core/lib/slice/slice_hash_table.h +0 -199
- data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
- data/third_party/upb/upb/generated_util.h +0 -105
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
-
#include "src/core/ext/
|
21
|
+
#include "src/core/ext/xds/xds_channel.h"
|
22
22
|
|
23
23
|
#include <string.h>
|
24
24
|
|
@@ -28,14 +28,11 @@
|
|
28
28
|
#include <grpc/support/alloc.h>
|
29
29
|
#include <grpc/support/string_util.h>
|
30
30
|
|
31
|
-
#include "src/core/ext/filters/client_channel/client_channel.h"
|
32
|
-
#include "src/core/ext/filters/client_channel/server_address.h"
|
33
31
|
#include "src/core/lib/channel/channel_args.h"
|
34
32
|
#include "src/core/lib/gpr/string.h"
|
35
33
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
36
34
|
#include "src/core/lib/security/credentials/credentials.h"
|
37
35
|
#include "src/core/lib/security/credentials/fake/fake_credentials.h"
|
38
|
-
#include "src/core/lib/security/transport/target_authority_table.h"
|
39
36
|
#include "src/core/lib/slice/slice_internal.h"
|
40
37
|
|
41
38
|
namespace grpc_core {
|
@@ -73,7 +70,7 @@ grpc_channel* CreateXdsChannel(const XdsBootstrap& bootstrap,
|
|
73
70
|
if (!bootstrap.server().channel_creds.empty()) {
|
74
71
|
for (size_t i = 0; i < bootstrap.server().channel_creds.size(); ++i) {
|
75
72
|
if (bootstrap.server().channel_creds[i].type == "google_default") {
|
76
|
-
creds = grpc_google_default_credentials_create();
|
73
|
+
creds = grpc_google_default_credentials_create(nullptr);
|
77
74
|
break;
|
78
75
|
} else if (bootstrap.server().channel_creds[i].type == "fake") {
|
79
76
|
creds = grpc_fake_transport_security_credentials_create();
|
@@ -30,18 +30,15 @@
|
|
30
30
|
#include <grpc/byte_buffer_reader.h>
|
31
31
|
#include <grpc/grpc.h>
|
32
32
|
#include <grpc/support/alloc.h>
|
33
|
-
#include <grpc/support/string_util.h>
|
34
33
|
#include <grpc/support/time.h>
|
35
34
|
|
36
35
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
37
|
-
#include "src/core/ext/filters/client_channel/parse_address.h"
|
38
|
-
#include "src/core/ext/filters/client_channel/server_address.h"
|
39
36
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
40
|
-
#include "src/core/ext/
|
41
|
-
#include "src/core/ext/
|
42
|
-
#include "src/core/ext/
|
43
|
-
#include "src/core/ext/
|
44
|
-
#include "src/core/ext/
|
37
|
+
#include "src/core/ext/xds/xds_api.h"
|
38
|
+
#include "src/core/ext/xds/xds_channel.h"
|
39
|
+
#include "src/core/ext/xds/xds_channel_args.h"
|
40
|
+
#include "src/core/ext/xds/xds_client.h"
|
41
|
+
#include "src/core/ext/xds/xds_client_stats.h"
|
45
42
|
#include "src/core/lib/backoff/backoff.h"
|
46
43
|
#include "src/core/lib/channel/channel_args.h"
|
47
44
|
#include "src/core/lib/channel/channel_stack.h"
|
@@ -55,7 +52,6 @@
|
|
55
52
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
56
53
|
#include "src/core/lib/iomgr/timer.h"
|
57
54
|
#include "src/core/lib/iomgr/work_serializer.h"
|
58
|
-
#include "src/core/lib/slice/slice_hash_table.h"
|
59
55
|
#include "src/core/lib/slice/slice_internal.h"
|
60
56
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
61
57
|
#include "src/core/lib/surface/call.h"
|
@@ -180,21 +176,18 @@ class XdsClient::ChannelState::AdsCallState
|
|
180
176
|
void OnTimerLocked(grpc_error* error) {
|
181
177
|
if (error == GRPC_ERROR_NONE && timer_pending_) {
|
182
178
|
timer_pending_ = false;
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
grpc_error* watcher_error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
|
189
|
-
gpr_free(msg);
|
179
|
+
grpc_error* watcher_error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
180
|
+
absl::StrFormat(
|
181
|
+
"timeout obtaining resource {type=%s name=%s} from xds server",
|
182
|
+
type_url_, name_)
|
183
|
+
.c_str());
|
190
184
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
191
185
|
gpr_log(GPR_INFO, "[xds_client %p] %s", ads_calld_->xds_client(),
|
192
186
|
grpc_error_string(watcher_error));
|
193
187
|
}
|
194
188
|
if (type_url_ == XdsApi::kLdsTypeUrl ||
|
195
189
|
type_url_ == XdsApi::kRdsTypeUrl) {
|
196
|
-
ads_calld_->xds_client()->
|
197
|
-
watcher_error);
|
190
|
+
ads_calld_->xds_client()->listener_watcher_->OnError(watcher_error);
|
198
191
|
} else if (type_url_ == XdsApi::kCdsTypeUrl) {
|
199
192
|
ClusterState& state = ads_calld_->xds_client()->cluster_map_[name_];
|
200
193
|
for (const auto& p : state.watchers) {
|
@@ -401,13 +394,15 @@ class XdsClient::ChannelState::StateWatcher
|
|
401
394
|
parent_(std::move(parent)) {}
|
402
395
|
|
403
396
|
private:
|
404
|
-
void OnConnectivityStateChange(grpc_connectivity_state new_state
|
397
|
+
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
398
|
+
const absl::Status& status) override {
|
405
399
|
if (!parent_->shutting_down_ &&
|
406
400
|
new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
407
401
|
// In TRANSIENT_FAILURE. Notify all watchers of error.
|
408
402
|
gpr_log(GPR_INFO,
|
409
|
-
"[xds_client %p] xds channel in state
|
410
|
-
|
403
|
+
"[xds_client %p] xds channel in state:TRANSIENT_FAILURE "
|
404
|
+
"status_message:(%s)",
|
405
|
+
parent_->xds_client(), status.ToString().c_str());
|
411
406
|
parent_->xds_client()->NotifyOnError(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
412
407
|
"xds channel in TRANSIENT_FAILURE"));
|
413
408
|
}
|
@@ -686,11 +681,14 @@ XdsClient::ChannelState::AdsCallState::AdsCallState(
|
|
686
681
|
GPR_ASSERT(xds_client() != nullptr);
|
687
682
|
GPR_ASSERT(!xds_client()->server_name_.empty());
|
688
683
|
// Create a call with the specified method name.
|
684
|
+
const auto& method =
|
685
|
+
xds_client()->bootstrap_->server().ShouldUseV3()
|
686
|
+
? GRPC_MDSTR_SLASH_ENVOY_DOT_SERVICE_DOT_DISCOVERY_DOT_V3_DOT_AGGREGATEDDISCOVERYSERVICE_SLASH_STREAMAGGREGATEDRESOURCES
|
687
|
+
: GRPC_MDSTR_SLASH_ENVOY_DOT_SERVICE_DOT_DISCOVERY_DOT_V2_DOT_AGGREGATEDDISCOVERYSERVICE_SLASH_STREAMAGGREGATEDRESOURCES;
|
689
688
|
call_ = grpc_channel_create_pollset_set_call(
|
690
689
|
chand()->channel_, nullptr, GRPC_PROPAGATE_DEFAULTS,
|
691
|
-
xds_client()->interested_parties_,
|
692
|
-
|
693
|
-
nullptr, GRPC_MILLIS_INF_FUTURE, nullptr);
|
690
|
+
xds_client()->interested_parties_, method, nullptr,
|
691
|
+
GRPC_MILLIS_INF_FUTURE, nullptr);
|
694
692
|
GPR_ASSERT(call_ != nullptr);
|
695
693
|
// Init data associated with the call.
|
696
694
|
grpc_metadata_array_init(&initial_metadata_recv_);
|
@@ -720,7 +718,7 @@ XdsClient::ChannelState::AdsCallState::AdsCallState(
|
|
720
718
|
// Op: send request message.
|
721
719
|
GRPC_CLOSURE_INIT(&on_request_sent_, OnRequestSent, this,
|
722
720
|
grpc_schedule_on_exec_ctx);
|
723
|
-
if (xds_client()->
|
721
|
+
if (xds_client()->listener_watcher_ != nullptr) {
|
724
722
|
Subscribe(XdsApi::kLdsTypeUrl, xds_client()->server_name_);
|
725
723
|
if (xds_client()->lds_result_.has_value() &&
|
726
724
|
!xds_client()->lds_result_->route_config_name.empty()) {
|
@@ -789,7 +787,7 @@ void XdsClient::ChannelState::AdsCallState::Orphan() {
|
|
789
787
|
// on_status_received_ will complete the cancellation and clean up. Otherwise,
|
790
788
|
// we are here because xds_client has to orphan a failed call, then the
|
791
789
|
// following cancellation will be a no-op.
|
792
|
-
|
790
|
+
grpc_call_cancel_internal(call_);
|
793
791
|
state_map_.clear();
|
794
792
|
// Note that the initial ref is hold by on_status_received_. So the
|
795
793
|
// corresponding unref happens in on_status_received_ instead of here.
|
@@ -883,7 +881,7 @@ void XdsClient::ChannelState::AdsCallState::AcceptLdsUpdate(
|
|
883
881
|
xds_client()->rds_result_.reset();
|
884
882
|
}
|
885
883
|
xds_client()->lds_result_.reset();
|
886
|
-
xds_client()->
|
884
|
+
xds_client()->listener_watcher_->OnResourceDoesNotExist();
|
887
885
|
return;
|
888
886
|
}
|
889
887
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
@@ -894,15 +892,8 @@ void XdsClient::ChannelState::AdsCallState::AcceptLdsUpdate(
|
|
894
892
|
? lds_update->route_config_name.c_str()
|
895
893
|
: "<inlined>"));
|
896
894
|
if (lds_update->rds_update.has_value()) {
|
897
|
-
gpr_log(GPR_INFO, "
|
898
|
-
lds_update->rds_update
|
899
|
-
for (const auto& route : lds_update->rds_update.value().routes) {
|
900
|
-
gpr_log(GPR_INFO,
|
901
|
-
" route: { service=\"%s\", "
|
902
|
-
"method=\"%s\" }, cluster=\"%s\" }",
|
903
|
-
route.service.c_str(), route.method.c_str(),
|
904
|
-
route.cluster_name.c_str());
|
905
|
-
}
|
895
|
+
gpr_log(GPR_INFO, "RouteConfiguration: %s",
|
896
|
+
lds_update->rds_update->ToString().c_str());
|
906
897
|
}
|
907
898
|
}
|
908
899
|
auto& lds_state = state_map_[XdsApi::kLdsTypeUrl];
|
@@ -928,14 +919,15 @@ void XdsClient::ChannelState::AdsCallState::AcceptLdsUpdate(
|
|
928
919
|
if (xds_client()->lds_result_->rds_update.has_value()) {
|
929
920
|
// If the RouteConfiguration was found inlined in LDS response, notify
|
930
921
|
// the watcher immediately.
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
if (
|
935
|
-
xds_client()->
|
936
|
-
|
922
|
+
const XdsApi::RdsUpdate::VirtualHost* vhost =
|
923
|
+
xds_client()->lds_result_->rds_update->FindVirtualHostForDomain(
|
924
|
+
xds_client()->server_name_);
|
925
|
+
if (vhost == nullptr) {
|
926
|
+
xds_client()->listener_watcher_->OnError(
|
927
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
928
|
+
"no VirtualHost found for domain"));
|
937
929
|
} else {
|
938
|
-
xds_client()->
|
930
|
+
xds_client()->listener_watcher_->OnListenerChanged(vhost->routes);
|
939
931
|
}
|
940
932
|
} else {
|
941
933
|
// Send RDS request for dynamic resolution.
|
@@ -951,21 +943,12 @@ void XdsClient::ChannelState::AdsCallState::AcceptRdsUpdate(
|
|
951
943
|
"[xds_client %p] RDS update does not include requested resource",
|
952
944
|
xds_client());
|
953
945
|
xds_client()->rds_result_.reset();
|
954
|
-
xds_client()->
|
946
|
+
xds_client()->listener_watcher_->OnResourceDoesNotExist();
|
955
947
|
return;
|
956
948
|
}
|
957
949
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
958
|
-
gpr_log(GPR_INFO,
|
959
|
-
|
960
|
-
"%" PRIuPTR " routes",
|
961
|
-
this, rds_update.value().routes.size());
|
962
|
-
for (const auto& route : rds_update.value().routes) {
|
963
|
-
gpr_log(GPR_INFO,
|
964
|
-
" route: { service=\"%s\", "
|
965
|
-
"method=\"%s\" }, cluster=\"%s\" }",
|
966
|
-
route.service.c_str(), route.method.c_str(),
|
967
|
-
route.cluster_name.c_str());
|
968
|
-
}
|
950
|
+
gpr_log(GPR_INFO, "[xds_client %p] RDS update received:\n%s", xds_client(),
|
951
|
+
rds_update->ToString().c_str());
|
969
952
|
}
|
970
953
|
auto& rds_state = state_map_[XdsApi::kRdsTypeUrl];
|
971
954
|
auto& state =
|
@@ -983,14 +966,15 @@ void XdsClient::ChannelState::AdsCallState::AcceptRdsUpdate(
|
|
983
966
|
}
|
984
967
|
xds_client()->rds_result_ = std::move(rds_update);
|
985
968
|
// Notify the watcher.
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
if (
|
990
|
-
xds_client()->
|
991
|
-
|
969
|
+
const XdsApi::RdsUpdate::VirtualHost* vhost =
|
970
|
+
xds_client()->rds_result_->FindVirtualHostForDomain(
|
971
|
+
xds_client()->server_name_);
|
972
|
+
if (vhost == nullptr) {
|
973
|
+
xds_client()->listener_watcher_->OnError(
|
974
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
975
|
+
"no VirtualHost found for domain"));
|
992
976
|
} else {
|
993
|
-
xds_client()->
|
977
|
+
xds_client()->listener_watcher_->OnListenerChanged(vhost->routes);
|
994
978
|
}
|
995
979
|
}
|
996
980
|
|
@@ -1042,6 +1026,13 @@ void XdsClient::ChannelState::AdsCallState::AcceptCdsUpdate(
|
|
1042
1026
|
const std::string& cluster_name = p.first;
|
1043
1027
|
if (cds_update_map.find(cluster_name) == cds_update_map.end()) {
|
1044
1028
|
ClusterState& cluster_state = xds_client()->cluster_map_[cluster_name];
|
1029
|
+
// If the resource was newly requested but has not yet been received,
|
1030
|
+
// we don't want to generate an error for the watchers, because this CDS
|
1031
|
+
// response may be in reaction to an earlier request that did not yet
|
1032
|
+
// request the new resource, so its absence from the response does not
|
1033
|
+
// necessarily indicate that the resource does not exist.
|
1034
|
+
// For that case, we rely on the request timeout instead.
|
1035
|
+
if (!cluster_state.update.has_value()) continue;
|
1045
1036
|
cluster_state.update.reset();
|
1046
1037
|
for (const auto& p : cluster_state.watchers) {
|
1047
1038
|
p.first->OnResourceDoesNotExist();
|
@@ -1097,8 +1088,8 @@ void XdsClient::ChannelState::AdsCallState::AcceptEdsUpdate(
|
|
1097
1088
|
"[xds_client %p] Priority %" PRIuPTR ", locality %" PRIuPTR
|
1098
1089
|
" %s has weight %d, contains %" PRIuPTR " server addresses",
|
1099
1090
|
xds_client(), priority, locality_count,
|
1100
|
-
locality.name->AsHumanReadableString()
|
1101
|
-
locality.serverlist.size());
|
1091
|
+
locality.name->AsHumanReadableString().c_str(),
|
1092
|
+
locality.lb_weight, locality.serverlist.size());
|
1102
1093
|
for (size_t i = 0; i < locality.serverlist.size(); ++i) {
|
1103
1094
|
std::string ipport = grpc_sockaddr_to_string(
|
1104
1095
|
&locality.serverlist[i].address(), false);
|
@@ -1106,7 +1097,8 @@ void XdsClient::ChannelState::AdsCallState::AcceptEdsUpdate(
|
|
1106
1097
|
"[xds_client %p] Priority %" PRIuPTR ", locality %" PRIuPTR
|
1107
1098
|
" %s, server address %" PRIuPTR ": %s",
|
1108
1099
|
xds_client(), priority, locality_count,
|
1109
|
-
locality.name->AsHumanReadableString(), i,
|
1100
|
+
locality.name->AsHumanReadableString().c_str(), i,
|
1101
|
+
ipport.c_str());
|
1110
1102
|
}
|
1111
1103
|
++locality_count;
|
1112
1104
|
}
|
@@ -1203,66 +1195,49 @@ void XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() {
|
|
1203
1195
|
grpc_byte_buffer_reader_destroy(&bbr);
|
1204
1196
|
grpc_byte_buffer_destroy(recv_message_payload_);
|
1205
1197
|
recv_message_payload_ = nullptr;
|
1206
|
-
//
|
1207
|
-
|
1208
|
-
// fallback mode if we have lost contact with the balancer after a certain
|
1209
|
-
// period of time. We will need to save the timeout value here, and then
|
1210
|
-
// when the balancer call ends, we will need to start a timer for the
|
1211
|
-
// specified period of time, and if the timer fires, we go into fallback
|
1212
|
-
// mode. We will also need to cancel the timer when we receive a serverlist
|
1213
|
-
// from the balancer.
|
1214
|
-
// Parse the response.
|
1215
|
-
absl::optional<XdsApi::LdsUpdate> lds_update;
|
1216
|
-
absl::optional<XdsApi::RdsUpdate> rds_update;
|
1217
|
-
XdsApi::CdsUpdateMap cds_update_map;
|
1218
|
-
XdsApi::EdsUpdateMap eds_update_map;
|
1219
|
-
std::string version;
|
1220
|
-
std::string nonce;
|
1221
|
-
std::string type_url;
|
1222
|
-
// Note that ParseAdsResponse() also validates the response.
|
1223
|
-
grpc_error* parse_error = xds_client()->api_.ParseAdsResponse(
|
1198
|
+
// Parse and validate the response.
|
1199
|
+
XdsApi::AdsParseResult result = xds_client()->api_.ParseAdsResponse(
|
1224
1200
|
response_slice, xds_client()->server_name_,
|
1225
1201
|
ResourceNamesForRequest(XdsApi::kRdsTypeUrl),
|
1226
1202
|
ResourceNamesForRequest(XdsApi::kCdsTypeUrl),
|
1227
|
-
ResourceNamesForRequest(XdsApi::kEdsTypeUrl)
|
1228
|
-
&cds_update_map, &eds_update_map, &version, &nonce, &type_url);
|
1203
|
+
ResourceNamesForRequest(XdsApi::kEdsTypeUrl));
|
1229
1204
|
grpc_slice_unref_internal(response_slice);
|
1230
|
-
if (type_url.empty()) {
|
1205
|
+
if (result.type_url.empty()) {
|
1231
1206
|
// Ignore unparsable response.
|
1232
1207
|
gpr_log(GPR_ERROR,
|
1233
1208
|
"[xds_client %p] Error parsing ADS response (%s) -- ignoring",
|
1234
|
-
xds_client(), grpc_error_string(parse_error));
|
1235
|
-
GRPC_ERROR_UNREF(parse_error);
|
1209
|
+
xds_client(), grpc_error_string(result.parse_error));
|
1210
|
+
GRPC_ERROR_UNREF(result.parse_error);
|
1236
1211
|
} else {
|
1237
1212
|
// Update nonce.
|
1238
|
-
auto& state = state_map_[type_url];
|
1239
|
-
state.nonce = std::move(nonce);
|
1213
|
+
auto& state = state_map_[result.type_url];
|
1214
|
+
state.nonce = std::move(result.nonce);
|
1240
1215
|
// NACK or ACK the response.
|
1241
|
-
if (parse_error != GRPC_ERROR_NONE) {
|
1216
|
+
if (result.parse_error != GRPC_ERROR_NONE) {
|
1242
1217
|
GRPC_ERROR_UNREF(state.error);
|
1243
|
-
state.error = parse_error;
|
1218
|
+
state.error = result.parse_error;
|
1244
1219
|
// NACK unacceptable update.
|
1245
1220
|
gpr_log(GPR_ERROR,
|
1246
1221
|
"[xds_client %p] ADS response invalid for resource type %s "
|
1247
1222
|
"version %s, will NACK: nonce=%s error=%s",
|
1248
|
-
xds_client(), type_url.c_str(), version.c_str(),
|
1249
|
-
state.nonce.c_str(), grpc_error_string(parse_error));
|
1250
|
-
SendMessageLocked(type_url);
|
1223
|
+
xds_client(), result.type_url.c_str(), result.version.c_str(),
|
1224
|
+
state.nonce.c_str(), grpc_error_string(result.parse_error));
|
1225
|
+
SendMessageLocked(result.type_url);
|
1251
1226
|
} else {
|
1252
1227
|
seen_response_ = true;
|
1253
1228
|
// Accept the ADS response according to the type_url.
|
1254
|
-
if (type_url == XdsApi::kLdsTypeUrl) {
|
1255
|
-
AcceptLdsUpdate(std::move(lds_update));
|
1256
|
-
} else if (type_url == XdsApi::kRdsTypeUrl) {
|
1257
|
-
AcceptRdsUpdate(std::move(rds_update));
|
1258
|
-
} else if (type_url == XdsApi::kCdsTypeUrl) {
|
1259
|
-
AcceptCdsUpdate(std::move(cds_update_map));
|
1260
|
-
} else if (type_url == XdsApi::kEdsTypeUrl) {
|
1261
|
-
AcceptEdsUpdate(std::move(eds_update_map));
|
1229
|
+
if (result.type_url == XdsApi::kLdsTypeUrl) {
|
1230
|
+
AcceptLdsUpdate(std::move(result.lds_update));
|
1231
|
+
} else if (result.type_url == XdsApi::kRdsTypeUrl) {
|
1232
|
+
AcceptRdsUpdate(std::move(result.rds_update));
|
1233
|
+
} else if (result.type_url == XdsApi::kCdsTypeUrl) {
|
1234
|
+
AcceptCdsUpdate(std::move(result.cds_update_map));
|
1235
|
+
} else if (result.type_url == XdsApi::kEdsTypeUrl) {
|
1236
|
+
AcceptEdsUpdate(std::move(result.eds_update_map));
|
1262
1237
|
}
|
1263
|
-
state.version = std::move(version);
|
1238
|
+
state.version = std::move(result.version);
|
1264
1239
|
// ACK the update.
|
1265
|
-
SendMessageLocked(type_url);
|
1240
|
+
SendMessageLocked(result.type_url);
|
1266
1241
|
// Start load reporting if needed.
|
1267
1242
|
auto& lrs_call = chand()->lrs_calld_;
|
1268
1243
|
if (lrs_call != nullptr) {
|
@@ -1476,11 +1451,14 @@ XdsClient::ChannelState::LrsCallState::LrsCallState(
|
|
1476
1451
|
// the polling entities from client_channel.
|
1477
1452
|
GPR_ASSERT(xds_client() != nullptr);
|
1478
1453
|
GPR_ASSERT(!xds_client()->server_name_.empty());
|
1454
|
+
const auto& method =
|
1455
|
+
xds_client()->bootstrap_->server().ShouldUseV3()
|
1456
|
+
? GRPC_MDSTR_SLASH_ENVOY_DOT_SERVICE_DOT_LOAD_STATS_DOT_V3_DOT_LOADREPORTINGSERVICE_SLASH_STREAMLOADSTATS
|
1457
|
+
: GRPC_MDSTR_SLASH_ENVOY_DOT_SERVICE_DOT_LOAD_STATS_DOT_V2_DOT_LOADREPORTINGSERVICE_SLASH_STREAMLOADSTATS;
|
1479
1458
|
call_ = grpc_channel_create_pollset_set_call(
|
1480
1459
|
chand()->channel_, nullptr, GRPC_PROPAGATE_DEFAULTS,
|
1481
|
-
xds_client()->interested_parties_,
|
1482
|
-
|
1483
|
-
nullptr, GRPC_MILLIS_INF_FUTURE, nullptr);
|
1460
|
+
xds_client()->interested_parties_, method, nullptr,
|
1461
|
+
GRPC_MILLIS_INF_FUTURE, nullptr);
|
1484
1462
|
GPR_ASSERT(call_ != nullptr);
|
1485
1463
|
// Init the request payload.
|
1486
1464
|
grpc_slice request_payload_slice =
|
@@ -1579,7 +1557,7 @@ void XdsClient::ChannelState::LrsCallState::Orphan() {
|
|
1579
1557
|
// on_status_received_ will complete the cancellation and clean up. Otherwise,
|
1580
1558
|
// we are here because xds_client has to orphan a failed call, then the
|
1581
1559
|
// following cancellation will be a no-op.
|
1582
|
-
|
1560
|
+
grpc_call_cancel_internal(call_);
|
1583
1561
|
// Note that the initial ref is hold by on_status_received_. So the
|
1584
1562
|
// corresponding unref happens in on_status_received_ instead of here.
|
1585
1563
|
}
|
@@ -1778,7 +1756,7 @@ grpc_millis GetRequestTimeout(const grpc_channel_args& args) {
|
|
1778
1756
|
XdsClient::XdsClient(std::shared_ptr<WorkSerializer> work_serializer,
|
1779
1757
|
grpc_pollset_set* interested_parties,
|
1780
1758
|
absl::string_view server_name,
|
1781
|
-
std::unique_ptr<
|
1759
|
+
std::unique_ptr<ListenerWatcherInterface> watcher,
|
1782
1760
|
const grpc_channel_args& channel_args, grpc_error** error)
|
1783
1761
|
: InternallyRefCounted<XdsClient>(&grpc_xds_client_trace),
|
1784
1762
|
request_timeout_(GetRequestTimeout(channel_args)),
|
@@ -1786,10 +1764,9 @@ XdsClient::XdsClient(std::shared_ptr<WorkSerializer> work_serializer,
|
|
1786
1764
|
interested_parties_(interested_parties),
|
1787
1765
|
bootstrap_(
|
1788
1766
|
XdsBootstrap::ReadFromFile(this, &grpc_xds_client_trace, error)),
|
1789
|
-
api_(this, &grpc_xds_client_trace,
|
1790
|
-
bootstrap_ == nullptr ? nullptr : bootstrap_->node()),
|
1767
|
+
api_(this, &grpc_xds_client_trace, bootstrap_.get()),
|
1791
1768
|
server_name_(server_name),
|
1792
|
-
|
1769
|
+
listener_watcher_(std::move(watcher)) {
|
1793
1770
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
|
1794
1771
|
gpr_log(GPR_INFO, "[xds_client %p] creating xds client", this);
|
1795
1772
|
}
|
@@ -1812,7 +1789,7 @@ XdsClient::XdsClient(std::shared_ptr<WorkSerializer> work_serializer,
|
|
1812
1789
|
}
|
1813
1790
|
chand_ = MakeOrphanable<ChannelState>(
|
1814
1791
|
Ref(DEBUG_LOCATION, "XdsClient+ChannelState"), channel);
|
1815
|
-
if (
|
1792
|
+
if (listener_watcher_ != nullptr) {
|
1816
1793
|
chand_->Subscribe(XdsApi::kLdsTypeUrl, std::string(server_name));
|
1817
1794
|
}
|
1818
1795
|
}
|
@@ -1835,7 +1812,7 @@ void XdsClient::Orphan() {
|
|
1835
1812
|
// possible for ADS calls to be in progress. Unreffing the loadbalancing
|
1836
1813
|
// policies before those calls are done would lead to issues such as
|
1837
1814
|
// https://github.com/grpc/grpc/issues/20928.
|
1838
|
-
if (
|
1815
|
+
if (listener_watcher_ != nullptr) {
|
1839
1816
|
cluster_map_.clear();
|
1840
1817
|
endpoint_map_.clear();
|
1841
1818
|
}
|
@@ -2010,236 +1987,6 @@ void XdsClient::ResetBackoff() {
|
|
2010
1987
|
}
|
2011
1988
|
}
|
2012
1989
|
|
2013
|
-
namespace {
|
2014
|
-
std::string CreateServiceConfigActionCluster(const std::string& cluster_name) {
|
2015
|
-
return absl::StrFormat(
|
2016
|
-
" \"cds:%s\":{\n"
|
2017
|
-
" \"childPolicy\":[ {\n"
|
2018
|
-
" \"cds_experimental\":{\n"
|
2019
|
-
" \"cluster\": \"%s\"\n"
|
2020
|
-
" }\n"
|
2021
|
-
" } ]\n"
|
2022
|
-
" }",
|
2023
|
-
cluster_name, cluster_name);
|
2024
|
-
}
|
2025
|
-
|
2026
|
-
std::string CreateServiceConfigRoute(const std::string& action_name,
|
2027
|
-
const std::string& service,
|
2028
|
-
const std::string& method) {
|
2029
|
-
return absl::StrFormat(
|
2030
|
-
" { \n"
|
2031
|
-
" \"methodName\": {\n"
|
2032
|
-
" \"service\": \"%s\",\n"
|
2033
|
-
" \"method\": \"%s\"\n"
|
2034
|
-
" },\n"
|
2035
|
-
" \"action\": \"%s\"\n"
|
2036
|
-
" }",
|
2037
|
-
service, method, action_name);
|
2038
|
-
}
|
2039
|
-
|
2040
|
-
// Create the service config for one weighted cluster.
|
2041
|
-
std::string CreateServiceConfigActionWeightedCluster(
|
2042
|
-
const std::string& name,
|
2043
|
-
const std::vector<XdsApi::RdsUpdate::RdsRoute::ClusterWeight>& clusters) {
|
2044
|
-
std::vector<std::string> config_parts;
|
2045
|
-
config_parts.push_back(
|
2046
|
-
absl::StrFormat(" \"weighted:%s\":{\n"
|
2047
|
-
" \"childPolicy\":[ {\n"
|
2048
|
-
" \"weighted_target_experimental\":{\n"
|
2049
|
-
" \"targets\":{\n",
|
2050
|
-
name));
|
2051
|
-
std::vector<std::string> weighted_targets;
|
2052
|
-
weighted_targets.reserve(clusters.size());
|
2053
|
-
for (const auto& cluster_weight : clusters) {
|
2054
|
-
weighted_targets.push_back(absl::StrFormat(
|
2055
|
-
" \"%s\":{\n"
|
2056
|
-
" \"weight\":%d,\n"
|
2057
|
-
" \"childPolicy\":[ {\n"
|
2058
|
-
" \"cds_experimental\":{\n"
|
2059
|
-
" \"cluster\": \"%s\"\n"
|
2060
|
-
" }\n"
|
2061
|
-
" } ]\n"
|
2062
|
-
" }",
|
2063
|
-
cluster_weight.name, cluster_weight.weight, cluster_weight.name));
|
2064
|
-
}
|
2065
|
-
config_parts.push_back(absl::StrJoin(weighted_targets, ",\n"));
|
2066
|
-
config_parts.push_back(
|
2067
|
-
" }\n"
|
2068
|
-
" }\n"
|
2069
|
-
" } ]\n"
|
2070
|
-
" }");
|
2071
|
-
return absl::StrJoin(config_parts, "");
|
2072
|
-
}
|
2073
|
-
|
2074
|
-
struct WeightedClustersKeys {
|
2075
|
-
std::string cluster_names_key;
|
2076
|
-
std::string cluster_weights_key;
|
2077
|
-
};
|
2078
|
-
|
2079
|
-
// Returns the cluster names and weights key or the cluster names only key.
|
2080
|
-
WeightedClustersKeys GetWeightedClustersKey(
|
2081
|
-
const std::vector<XdsApi::RdsUpdate::RdsRoute::ClusterWeight>&
|
2082
|
-
weighted_clusters) {
|
2083
|
-
std::set<std::string> cluster_names;
|
2084
|
-
std::set<std::string> cluster_weights;
|
2085
|
-
for (const auto& cluster_weight : weighted_clusters) {
|
2086
|
-
cluster_names.emplace(absl::StrFormat("%s", cluster_weight.name));
|
2087
|
-
cluster_weights.emplace(
|
2088
|
-
absl::StrFormat("%s_%d", cluster_weight.name, cluster_weight.weight));
|
2089
|
-
}
|
2090
|
-
return {absl::StrJoin(cluster_names, "_"),
|
2091
|
-
absl::StrJoin(cluster_weights, "_")};
|
2092
|
-
}
|
2093
|
-
|
2094
|
-
} // namespace
|
2095
|
-
|
2096
|
-
std::string XdsClient::WeightedClustersActionName(
|
2097
|
-
const std::vector<XdsApi::RdsUpdate::RdsRoute::ClusterWeight>&
|
2098
|
-
weighted_clusters) {
|
2099
|
-
WeightedClustersKeys keys = GetWeightedClustersKey(weighted_clusters);
|
2100
|
-
auto cluster_names_map_it =
|
2101
|
-
weighted_cluster_index_map_.find(keys.cluster_names_key);
|
2102
|
-
GPR_ASSERT(cluster_names_map_it != weighted_cluster_index_map_.end());
|
2103
|
-
const auto& cluster_weights_map =
|
2104
|
-
cluster_names_map_it->second.cluster_weights_map;
|
2105
|
-
auto cluster_weights_map_it =
|
2106
|
-
cluster_weights_map.find(keys.cluster_weights_key);
|
2107
|
-
GPR_ASSERT(cluster_weights_map_it != cluster_weights_map.end());
|
2108
|
-
return absl::StrFormat("%s_%d", keys.cluster_names_key,
|
2109
|
-
cluster_weights_map_it->second);
|
2110
|
-
}
|
2111
|
-
|
2112
|
-
void XdsClient::UpdateWeightedClusterIndexMap(
|
2113
|
-
const XdsApi::RdsUpdate& rds_update) {
|
2114
|
-
// Construct a list of unique WeightedCluster
|
2115
|
-
// actions which we need to process: to find action names
|
2116
|
-
std::map<std::string /* cluster_weights_key */,
|
2117
|
-
std::string /* cluster_names_key */>
|
2118
|
-
actions_to_process;
|
2119
|
-
for (const auto& route : rds_update.routes) {
|
2120
|
-
if (!route.weighted_clusters.empty()) {
|
2121
|
-
WeightedClustersKeys keys =
|
2122
|
-
GetWeightedClustersKey(route.weighted_clusters);
|
2123
|
-
auto action_it = actions_to_process.find(keys.cluster_weights_key);
|
2124
|
-
if (action_it == actions_to_process.end()) {
|
2125
|
-
actions_to_process[std::move(keys.cluster_weights_key)] =
|
2126
|
-
std::move(keys.cluster_names_key);
|
2127
|
-
}
|
2128
|
-
}
|
2129
|
-
}
|
2130
|
-
// First pass of all unique WeightedCluster actions: if the exact same
|
2131
|
-
// weighted target policy (same clusters and weights) appears in the old map,
|
2132
|
-
// then that old action name is taken again and should be moved to the new
|
2133
|
-
// map; any other action names from the old set of actions are candidates for
|
2134
|
-
// reuse.
|
2135
|
-
XdsClient::WeightedClusterIndexMap new_weighted_cluster_index_map;
|
2136
|
-
for (auto action_it = actions_to_process.begin();
|
2137
|
-
action_it != actions_to_process.end();) {
|
2138
|
-
const std::string& cluster_names_key = action_it->second;
|
2139
|
-
const std::string& cluster_weights_key = action_it->first;
|
2140
|
-
auto old_cluster_names_map_it =
|
2141
|
-
weighted_cluster_index_map_.find(cluster_names_key);
|
2142
|
-
if (old_cluster_names_map_it != weighted_cluster_index_map_.end()) {
|
2143
|
-
// Add cluster_names_key to the new map and copy next_index.
|
2144
|
-
auto& new_cluster_names_info =
|
2145
|
-
new_weighted_cluster_index_map[cluster_names_key];
|
2146
|
-
new_cluster_names_info.next_index =
|
2147
|
-
old_cluster_names_map_it->second.next_index;
|
2148
|
-
// Lookup cluster_weights_key in old map.
|
2149
|
-
auto& old_cluster_weights_map =
|
2150
|
-
old_cluster_names_map_it->second.cluster_weights_map;
|
2151
|
-
auto old_cluster_weights_map_it =
|
2152
|
-
old_cluster_weights_map.find(cluster_weights_key);
|
2153
|
-
if (old_cluster_weights_map_it != old_cluster_weights_map.end()) {
|
2154
|
-
// same policy found, move from old map to new map.
|
2155
|
-
new_cluster_names_info.cluster_weights_map[cluster_weights_key] =
|
2156
|
-
old_cluster_weights_map_it->second;
|
2157
|
-
old_cluster_weights_map.erase(old_cluster_weights_map_it);
|
2158
|
-
// This action has been added to new map, so no need to process it
|
2159
|
-
// again.
|
2160
|
-
action_it = actions_to_process.erase(action_it);
|
2161
|
-
continue;
|
2162
|
-
}
|
2163
|
-
}
|
2164
|
-
++action_it;
|
2165
|
-
}
|
2166
|
-
// Second pass of all remaining unique WeightedCluster actions: if clusters
|
2167
|
-
// for a new action are the same as an old unused action, reuse the name. If
|
2168
|
-
// clusters differ, use a brand new name.
|
2169
|
-
for (const auto& action : actions_to_process) {
|
2170
|
-
const std::string& cluster_names_key = action.second;
|
2171
|
-
const std::string& cluster_weights_key = action.first;
|
2172
|
-
auto& new_cluster_names_info =
|
2173
|
-
new_weighted_cluster_index_map[cluster_names_key];
|
2174
|
-
auto& old_cluster_weights_map =
|
2175
|
-
weighted_cluster_index_map_[cluster_names_key].cluster_weights_map;
|
2176
|
-
auto old_cluster_weights_it = old_cluster_weights_map.begin();
|
2177
|
-
if (old_cluster_weights_it != old_cluster_weights_map.end()) {
|
2178
|
-
// There is something to reuse: this action uses the same set
|
2179
|
-
// of clusters as a previous action and that action name is not
|
2180
|
-
// already taken.
|
2181
|
-
new_cluster_names_info.cluster_weights_map[cluster_weights_key] =
|
2182
|
-
old_cluster_weights_it->second;
|
2183
|
-
// Remove the name from being able to reuse again.
|
2184
|
-
old_cluster_weights_map.erase(old_cluster_weights_it);
|
2185
|
-
} else {
|
2186
|
-
// There is nothing to reuse, take the next index to use and
|
2187
|
-
// increment.
|
2188
|
-
new_cluster_names_info.cluster_weights_map[cluster_weights_key] =
|
2189
|
-
new_cluster_names_info.next_index++;
|
2190
|
-
}
|
2191
|
-
}
|
2192
|
-
weighted_cluster_index_map_ = std::move(new_weighted_cluster_index_map);
|
2193
|
-
}
|
2194
|
-
|
2195
|
-
grpc_error* XdsClient::CreateServiceConfig(
|
2196
|
-
const XdsApi::RdsUpdate& rds_update,
|
2197
|
-
RefCountedPtr<ServiceConfig>* service_config) {
|
2198
|
-
UpdateWeightedClusterIndexMap(rds_update);
|
2199
|
-
std::vector<std::string> actions_vector;
|
2200
|
-
std::vector<std::string> route_table;
|
2201
|
-
std::set<std::string> actions_set;
|
2202
|
-
for (const auto& route : rds_update.routes) {
|
2203
|
-
const std::string action_name =
|
2204
|
-
route.weighted_clusters.empty()
|
2205
|
-
? route.cluster_name
|
2206
|
-
: WeightedClustersActionName(route.weighted_clusters);
|
2207
|
-
if (actions_set.find(action_name) == actions_set.end()) {
|
2208
|
-
actions_set.emplace(action_name);
|
2209
|
-
actions_vector.push_back(
|
2210
|
-
route.weighted_clusters.empty()
|
2211
|
-
? CreateServiceConfigActionCluster(action_name)
|
2212
|
-
: CreateServiceConfigActionWeightedCluster(
|
2213
|
-
action_name, route.weighted_clusters));
|
2214
|
-
}
|
2215
|
-
route_table.push_back(CreateServiceConfigRoute(
|
2216
|
-
absl::StrFormat("%s:%s",
|
2217
|
-
route.weighted_clusters.empty() ? "cds" : "weighted",
|
2218
|
-
action_name),
|
2219
|
-
route.service, route.method));
|
2220
|
-
}
|
2221
|
-
std::vector<std::string> config_parts;
|
2222
|
-
config_parts.push_back(
|
2223
|
-
"{\n"
|
2224
|
-
" \"loadBalancingConfig\":[\n"
|
2225
|
-
" { \"xds_routing_experimental\":{\n"
|
2226
|
-
" \"actions\":{\n");
|
2227
|
-
config_parts.push_back(absl::StrJoin(actions_vector, ",\n"));
|
2228
|
-
config_parts.push_back(
|
2229
|
-
" },\n"
|
2230
|
-
" \"routes\":[\n");
|
2231
|
-
config_parts.push_back(absl::StrJoin(route_table, ",\n"));
|
2232
|
-
config_parts.push_back(
|
2233
|
-
" ]\n"
|
2234
|
-
" } }\n"
|
2235
|
-
" ]\n"
|
2236
|
-
"}");
|
2237
|
-
std::string json = absl::StrJoin(config_parts, "");
|
2238
|
-
grpc_error* error = GRPC_ERROR_NONE;
|
2239
|
-
*service_config = ServiceConfig::Create(json.c_str(), &error);
|
2240
|
-
return error;
|
2241
|
-
}
|
2242
|
-
|
2243
1990
|
XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshot(
|
2244
1991
|
bool send_all_clusters, const std::set<std::string>& clusters) {
|
2245
1992
|
XdsApi::ClusterLoadReportMap snapshot_map;
|
@@ -2309,8 +2056,8 @@ XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshot(
|
|
2309
2056
|
}
|
2310
2057
|
|
2311
2058
|
void XdsClient::NotifyOnError(grpc_error* error) {
|
2312
|
-
if (
|
2313
|
-
|
2059
|
+
if (listener_watcher_ != nullptr) {
|
2060
|
+
listener_watcher_->OnError(GRPC_ERROR_REF(error));
|
2314
2061
|
}
|
2315
2062
|
for (const auto& p : cluster_map_) {
|
2316
2063
|
const ClusterState& cluster_state = p.second;
|