grpc 1.30.2 → 1.32.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +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/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 +20 -0
- 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 +308 -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
@@ -79,4 +79,4 @@ void grpc_client_channel_stop_connectivity_watch(
|
|
79
79
|
grpc_core::RefCountedPtr<grpc_core::SubchannelCall>
|
80
80
|
grpc_client_channel_get_subchannel_call(grpc_call_element* elem);
|
81
81
|
|
82
|
-
#endif
|
82
|
+
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_H
|
@@ -0,0 +1,62 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2020 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
|
+
//
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#include "src/core/ext/filters/client_channel/config_selector.h"
|
20
|
+
|
21
|
+
#include "src/core/lib/channel/channel_args.h"
|
22
|
+
|
23
|
+
// Channel arg key for ConfigSelector.
|
24
|
+
#define GRPC_ARG_CONFIG_SELECTOR "grpc.internal.config_selector"
|
25
|
+
|
26
|
+
namespace grpc_core {
|
27
|
+
|
28
|
+
namespace {
|
29
|
+
|
30
|
+
void* ConfigSelectorArgCopy(void* p) {
|
31
|
+
ConfigSelector* config_selector = static_cast<ConfigSelector*>(p);
|
32
|
+
config_selector->Ref().release();
|
33
|
+
return p;
|
34
|
+
}
|
35
|
+
|
36
|
+
void ConfigSelectorArgDestroy(void* p) {
|
37
|
+
ConfigSelector* config_selector = static_cast<ConfigSelector*>(p);
|
38
|
+
config_selector->Unref();
|
39
|
+
}
|
40
|
+
|
41
|
+
int ConfigSelectorArgCmp(void* p, void* q) { return GPR_ICMP(p, q); }
|
42
|
+
|
43
|
+
const grpc_arg_pointer_vtable kChannelArgVtable = {
|
44
|
+
ConfigSelectorArgCopy, ConfigSelectorArgDestroy, ConfigSelectorArgCmp};
|
45
|
+
|
46
|
+
} // namespace
|
47
|
+
|
48
|
+
grpc_arg ConfigSelector::MakeChannelArg() const {
|
49
|
+
return grpc_channel_arg_pointer_create(
|
50
|
+
const_cast<char*>(GRPC_ARG_CONFIG_SELECTOR),
|
51
|
+
const_cast<ConfigSelector*>(this), &kChannelArgVtable);
|
52
|
+
}
|
53
|
+
|
54
|
+
RefCountedPtr<ConfigSelector> ConfigSelector::GetFromChannelArgs(
|
55
|
+
const grpc_channel_args& args) {
|
56
|
+
ConfigSelector* config_selector =
|
57
|
+
grpc_channel_args_find_pointer<ConfigSelector>(&args,
|
58
|
+
GRPC_ARG_CONFIG_SELECTOR);
|
59
|
+
return config_selector != nullptr ? config_selector->Ref() : nullptr;
|
60
|
+
}
|
61
|
+
|
62
|
+
} // namespace grpc_core
|
@@ -0,0 +1,93 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2020 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
|
+
//
|
16
|
+
|
17
|
+
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CONFIG_SELECTOR_H
|
18
|
+
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CONFIG_SELECTOR_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include <functional>
|
23
|
+
#include <map>
|
24
|
+
|
25
|
+
#include "absl/strings/string_view.h"
|
26
|
+
|
27
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
28
|
+
#include <grpc/impl/codegen/slice.h>
|
29
|
+
|
30
|
+
#include "src/core/ext/filters/client_channel/service_config.h"
|
31
|
+
#include "src/core/ext/filters/client_channel/service_config_parser.h"
|
32
|
+
#include "src/core/lib/gprpp/arena.h"
|
33
|
+
#include "src/core/lib/gprpp/ref_counted.h"
|
34
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
35
|
+
#include "src/core/lib/transport/metadata_batch.h"
|
36
|
+
|
37
|
+
namespace grpc_core {
|
38
|
+
|
39
|
+
// Internal API used to allow resolver implementations to override
|
40
|
+
// MethodConfig and provide input to LB policies on a per-call basis.
|
41
|
+
class ConfigSelector : public RefCounted<ConfigSelector> {
|
42
|
+
public:
|
43
|
+
struct GetCallConfigArgs {
|
44
|
+
grpc_slice* path;
|
45
|
+
grpc_metadata_batch* initial_metadata;
|
46
|
+
Arena* arena;
|
47
|
+
};
|
48
|
+
|
49
|
+
struct CallConfig {
|
50
|
+
// Can be set to indicate the call should be failed.
|
51
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
52
|
+
// The per-method parsed configs that will be passed to
|
53
|
+
// ServiceConfigCallData.
|
54
|
+
const ServiceConfigParser::ParsedConfigVector* method_configs = nullptr;
|
55
|
+
// Call attributes that will be accessible to LB policy implementations.
|
56
|
+
std::map<const char*, absl::string_view> call_attributes;
|
57
|
+
// A callback that, if set, will be invoked when the call is
|
58
|
+
// committed (i.e., when we know that we will never again need to
|
59
|
+
// ask the picker for a subchannel for this call).
|
60
|
+
std::function<void()> on_call_committed;
|
61
|
+
};
|
62
|
+
|
63
|
+
virtual ~ConfigSelector() = default;
|
64
|
+
|
65
|
+
virtual CallConfig GetCallConfig(GetCallConfigArgs args) = 0;
|
66
|
+
|
67
|
+
grpc_arg MakeChannelArg() const;
|
68
|
+
static RefCountedPtr<ConfigSelector> GetFromChannelArgs(
|
69
|
+
const grpc_channel_args& args);
|
70
|
+
};
|
71
|
+
|
72
|
+
// Default ConfigSelector that gets the MethodConfig from the service config.
|
73
|
+
class DefaultConfigSelector : public ConfigSelector {
|
74
|
+
public:
|
75
|
+
explicit DefaultConfigSelector(RefCountedPtr<ServiceConfig> service_config)
|
76
|
+
: service_config_(std::move(service_config)) {}
|
77
|
+
|
78
|
+
CallConfig GetCallConfig(GetCallConfigArgs args) override {
|
79
|
+
CallConfig call_config;
|
80
|
+
if (service_config_ != nullptr) {
|
81
|
+
call_config.method_configs =
|
82
|
+
service_config_->GetMethodParsedConfigVector(*args.path);
|
83
|
+
}
|
84
|
+
return call_config;
|
85
|
+
}
|
86
|
+
|
87
|
+
private:
|
88
|
+
RefCountedPtr<ServiceConfig> service_config_;
|
89
|
+
};
|
90
|
+
|
91
|
+
} // namespace grpc_core
|
92
|
+
|
93
|
+
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CONFIG_SELECTOR_H */
|
@@ -24,6 +24,9 @@
|
|
24
24
|
|
25
25
|
namespace grpc_core {
|
26
26
|
|
27
|
+
#define GRPC_REGISTER_SUBCHANNEL_CALM_DOWN_AFTER_ATTEMPTS 100
|
28
|
+
#define GRPC_REGISTER_SUBCHANNEL_CALM_DOWN_MICROS 10
|
29
|
+
|
27
30
|
GlobalSubchannelPool::GlobalSubchannelPool() {
|
28
31
|
subchannel_map_ = grpc_avl_create(&subchannel_avl_vtable_);
|
29
32
|
gpr_mu_init(&mu_);
|
@@ -58,7 +61,7 @@ Subchannel* GlobalSubchannelPool::RegisterSubchannel(SubchannelKey* key,
|
|
58
61
|
Subchannel* constructed) {
|
59
62
|
Subchannel* c = nullptr;
|
60
63
|
// Compare and swap (CAS) loop:
|
61
|
-
|
64
|
+
for (int attempt_count = 0; c == nullptr; attempt_count++) {
|
62
65
|
// Ref the shared map to have a local copy.
|
63
66
|
gpr_mu_lock(&mu_);
|
64
67
|
grpc_avl old_map = grpc_avl_ref(subchannel_map_, nullptr);
|
@@ -72,7 +75,26 @@ Subchannel* GlobalSubchannelPool::RegisterSubchannel(SubchannelKey* key,
|
|
72
75
|
GRPC_SUBCHANNEL_UNREF(constructed,
|
73
76
|
"subchannel_register+found_existing");
|
74
77
|
// Exit the CAS loop without modifying the shared map.
|
75
|
-
}
|
78
|
+
} else {
|
79
|
+
// Reuse of the subchannel failed, so retry CAS loop
|
80
|
+
if (attempt_count >=
|
81
|
+
GRPC_REGISTER_SUBCHANNEL_CALM_DOWN_AFTER_ATTEMPTS) {
|
82
|
+
// GRPC_SUBCHANNEL_REF_FROM_WEAK_REF returning nullptr means that the
|
83
|
+
// subchannel we got is no longer valid and it's going to be removed
|
84
|
+
// from the AVL tree soon. Spinning here excesively here can actually
|
85
|
+
// prevent another thread from removing the subchannel, basically
|
86
|
+
// resulting in a live lock. See b/157516542 for more details.
|
87
|
+
// TODO(jtattermusch): the entire ref-counting mechanism for
|
88
|
+
// subchannels should be overhaulded, but the current workaround
|
89
|
+
// is fine for short-term.
|
90
|
+
// TODO(jtattermusch): gpr does not support thread yield operation,
|
91
|
+
// so a very short wait is the best we can do.
|
92
|
+
gpr_sleep_until(gpr_time_add(
|
93
|
+
gpr_now(GPR_CLOCK_REALTIME),
|
94
|
+
gpr_time_from_micros(GRPC_REGISTER_SUBCHANNEL_CALM_DOWN_MICROS,
|
95
|
+
GPR_TIMESPAN)));
|
96
|
+
}
|
97
|
+
}
|
76
98
|
} else {
|
77
99
|
// There hasn't been such subchannel. Add one.
|
78
100
|
// Note that we should ref the old map first because grpc_avl_add() will
|
@@ -23,6 +23,8 @@
|
|
23
23
|
|
24
24
|
#include "src/core/ext/filters/client_channel/health/health_check_client.h"
|
25
25
|
|
26
|
+
#include "upb/upb.hpp"
|
27
|
+
|
26
28
|
#include "src/core/lib/debug/trace.h"
|
27
29
|
#include "src/core/lib/gprpp/sync.h"
|
28
30
|
#include "src/core/lib/slice/slice_internal.h"
|
@@ -89,7 +91,12 @@ void HealthCheckClient::SetHealthStatusLocked(grpc_connectivity_state state,
|
|
89
91
|
gpr_log(GPR_INFO, "HealthCheckClient %p: setting state=%s reason=%s", this,
|
90
92
|
ConnectivityStateName(state), reason);
|
91
93
|
}
|
92
|
-
if (watcher_ != nullptr)
|
94
|
+
if (watcher_ != nullptr) {
|
95
|
+
watcher_->Notify(state,
|
96
|
+
state == GRPC_CHANNEL_TRANSIENT_FAILURE
|
97
|
+
? absl::Status(absl::StatusCode::kUnavailable, reason)
|
98
|
+
: absl::Status());
|
99
|
+
}
|
93
100
|
}
|
94
101
|
|
95
102
|
void HealthCheckClient::Orphan() {
|
@@ -22,6 +22,8 @@
|
|
22
22
|
|
23
23
|
#include <string.h>
|
24
24
|
|
25
|
+
#include "absl/strings/str_cat.h"
|
26
|
+
|
25
27
|
#include <grpc/slice_buffer.h>
|
26
28
|
#include <grpc/support/alloc.h>
|
27
29
|
#include <grpc/support/log.h>
|
@@ -241,11 +243,10 @@ void HttpConnectHandshaker::OnReadDone(void* arg, grpc_error* error) {
|
|
241
243
|
// Make sure we got a 2xx response.
|
242
244
|
if (handshaker->http_response_.status < 200 ||
|
243
245
|
handshaker->http_response_.status >= 300) {
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
gpr_free(msg);
|
246
|
+
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
247
|
+
absl::StrCat("HTTP proxy returned response code ",
|
248
|
+
handshaker->http_response_.status)
|
249
|
+
.c_str());
|
249
250
|
handshaker->HandshakeFailedLocked(error);
|
250
251
|
goto done;
|
251
252
|
}
|
@@ -324,10 +325,9 @@ void HttpConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
|
|
324
325
|
args_ = args;
|
325
326
|
on_handshake_done_ = on_handshake_done;
|
326
327
|
// Log connection via proxy.
|
327
|
-
|
328
|
+
std::string proxy_name(grpc_endpoint_get_peer(args->endpoint));
|
328
329
|
gpr_log(GPR_INFO, "Connecting to server %s via HTTP proxy %s", server_name,
|
329
|
-
proxy_name);
|
330
|
-
gpr_free(proxy_name);
|
330
|
+
proxy_name.c_str());
|
331
331
|
// Construct HTTP CONNECT request.
|
332
332
|
grpc_httpcli_request request;
|
333
333
|
request.host = server_name;
|
@@ -23,6 +23,8 @@
|
|
23
23
|
#include <stdbool.h>
|
24
24
|
#include <string.h>
|
25
25
|
|
26
|
+
#include "absl/strings/str_cat.h"
|
27
|
+
|
26
28
|
#include <grpc/support/alloc.h>
|
27
29
|
#include <grpc/support/log.h>
|
28
30
|
#include <grpc/support/string_util.h>
|
@@ -176,13 +178,13 @@ class HttpProxyMapper : public ProxyMapperInterface {
|
|
176
178
|
/* Use base64 encoding for user credentials as stated in RFC 7617 */
|
177
179
|
char* encoded_user_cred =
|
178
180
|
grpc_base64_encode(user_cred, strlen(user_cred), 0, 0);
|
179
|
-
|
180
|
-
|
181
|
+
std::string header =
|
182
|
+
absl::StrCat("Proxy-Authorization:Basic ", encoded_user_cred);
|
181
183
|
gpr_free(encoded_user_cred);
|
182
184
|
args_to_add[1] = grpc_channel_arg_string_create(
|
183
|
-
(
|
185
|
+
const_cast<char*>(GRPC_ARG_HTTP_CONNECT_HEADERS),
|
186
|
+
const_cast<char*>(header.c_str()));
|
184
187
|
*new_args = grpc_channel_args_copy_and_add(args, args_to_add, 2);
|
185
|
-
gpr_free(header);
|
186
188
|
} else {
|
187
189
|
*new_args = grpc_channel_args_copy_and_add(args, args_to_add, 1);
|
188
190
|
}
|
@@ -24,6 +24,7 @@
|
|
24
24
|
#include <functional>
|
25
25
|
#include <iterator>
|
26
26
|
|
27
|
+
#include "absl/status/status.h"
|
27
28
|
#include "absl/strings/string_view.h"
|
28
29
|
|
29
30
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
@@ -190,6 +191,8 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
190
191
|
|
191
192
|
/// Arguments used when picking a subchannel for a call.
|
192
193
|
struct PickArgs {
|
194
|
+
/// The path of the call. Indicates the RPC service and method name.
|
195
|
+
absl::string_view path;
|
193
196
|
/// Initial metadata associated with the picking call.
|
194
197
|
/// The LB policy may use the existing metadata to influence its routing
|
195
198
|
/// decision, and it may add new metadata elements to be sent with the
|
@@ -281,6 +284,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
281
284
|
/// Sets the connectivity state and returns a new picker to be used
|
282
285
|
/// by the client channel.
|
283
286
|
virtual void UpdateState(grpc_connectivity_state state,
|
287
|
+
const absl::Status& status,
|
284
288
|
std::unique_ptr<SubchannelPicker>) = 0;
|
285
289
|
|
286
290
|
/// Requests that the resolver re-resolve.
|
@@ -45,7 +45,7 @@ class ChildPolicyHandler::Helper
|
|
45
45
|
return parent_->channel_control_helper()->CreateSubchannel(args);
|
46
46
|
}
|
47
47
|
|
48
|
-
void UpdateState(grpc_connectivity_state state,
|
48
|
+
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
49
49
|
std::unique_ptr<SubchannelPicker> picker) override {
|
50
50
|
if (parent_->shutting_down_) return;
|
51
51
|
// If this request is from the pending child policy, ignore it until
|
@@ -55,8 +55,9 @@ class ChildPolicyHandler::Helper
|
|
55
55
|
if (GRPC_TRACE_FLAG_ENABLED(*(parent_->tracer_))) {
|
56
56
|
gpr_log(GPR_INFO,
|
57
57
|
"[child_policy_handler %p] helper %p: pending child policy %p "
|
58
|
-
"reports state=%s",
|
59
|
-
parent_.get(), this, child_, ConnectivityStateName(state)
|
58
|
+
"reports state=%s (%s)",
|
59
|
+
parent_.get(), this, child_, ConnectivityStateName(state),
|
60
|
+
status.ToString().c_str());
|
60
61
|
}
|
61
62
|
if (state == GRPC_CHANNEL_CONNECTING) return;
|
62
63
|
grpc_pollset_set_del_pollset_set(
|
@@ -67,7 +68,8 @@ class ChildPolicyHandler::Helper
|
|
67
68
|
// This request is from an outdated child, so ignore it.
|
68
69
|
return;
|
69
70
|
}
|
70
|
-
parent_->channel_control_helper()->UpdateState(state,
|
71
|
+
parent_->channel_control_helper()->UpdateState(state, status,
|
72
|
+
std::move(picker));
|
71
73
|
}
|
72
74
|
|
73
75
|
void RequestReresolution() override {
|
@@ -65,9 +65,12 @@
|
|
65
65
|
#include <string.h>
|
66
66
|
|
67
67
|
#include "absl/container/inlined_vector.h"
|
68
|
+
#include "absl/strings/str_cat.h"
|
68
69
|
#include "absl/strings/str_format.h"
|
69
70
|
#include "absl/strings/str_join.h"
|
70
71
|
|
72
|
+
#include "upb/upb.hpp"
|
73
|
+
|
71
74
|
#include <grpc/byte_buffer_reader.h>
|
72
75
|
#include <grpc/grpc.h>
|
73
76
|
#include <grpc/support/alloc.h>
|
@@ -84,7 +87,6 @@
|
|
84
87
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h"
|
85
88
|
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
86
89
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
87
|
-
#include "src/core/ext/filters/client_channel/parse_address.h"
|
88
90
|
#include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
|
89
91
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
90
92
|
#include "src/core/lib/backoff/backoff.h"
|
@@ -95,10 +97,10 @@
|
|
95
97
|
#include "src/core/lib/gprpp/memory.h"
|
96
98
|
#include "src/core/lib/gprpp/orphanable.h"
|
97
99
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
100
|
+
#include "src/core/lib/iomgr/parse_address.h"
|
98
101
|
#include "src/core/lib/iomgr/sockaddr.h"
|
99
102
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
100
103
|
#include "src/core/lib/iomgr/timer.h"
|
101
|
-
#include "src/core/lib/slice/slice_hash_table.h"
|
102
104
|
#include "src/core/lib/slice/slice_internal.h"
|
103
105
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
104
106
|
#include "src/core/lib/surface/call.h"
|
@@ -128,16 +130,21 @@ constexpr char kGrpclb[] = "grpclb";
|
|
128
130
|
|
129
131
|
class GrpcLbConfig : public LoadBalancingPolicy::Config {
|
130
132
|
public:
|
131
|
-
|
132
|
-
|
133
|
+
GrpcLbConfig(RefCountedPtr<LoadBalancingPolicy::Config> child_policy,
|
134
|
+
std::string service_name)
|
135
|
+
: child_policy_(std::move(child_policy)),
|
136
|
+
service_name_(std::move(service_name)) {}
|
133
137
|
const char* name() const override { return kGrpclb; }
|
134
138
|
|
135
139
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
|
136
140
|
return child_policy_;
|
137
141
|
}
|
138
142
|
|
143
|
+
const std::string& service_name() const { return service_name_; }
|
144
|
+
|
139
145
|
private:
|
140
146
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_;
|
147
|
+
std::string service_name_;
|
141
148
|
};
|
142
149
|
|
143
150
|
class GrpcLb : public LoadBalancingPolicy {
|
@@ -296,7 +303,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
296
303
|
|
297
304
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
298
305
|
const grpc_channel_args& args) override;
|
299
|
-
void UpdateState(grpc_connectivity_state state,
|
306
|
+
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
300
307
|
std::unique_ptr<SubchannelPicker> picker) override;
|
301
308
|
void RequestReresolution() override;
|
302
309
|
void AddTraceEvent(TraceSeverity severity,
|
@@ -315,15 +322,16 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
315
322
|
~StateWatcher() { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
|
316
323
|
|
317
324
|
private:
|
318
|
-
void OnConnectivityStateChange(grpc_connectivity_state new_state
|
325
|
+
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
326
|
+
const absl::Status& status) override {
|
319
327
|
if (parent_->fallback_at_startup_checks_pending_ &&
|
320
328
|
new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
321
329
|
// In TRANSIENT_FAILURE. Cancel the fallback timer and go into
|
322
330
|
// fallback mode immediately.
|
323
331
|
gpr_log(GPR_INFO,
|
324
|
-
"[grpclb %p] balancer channel in state
|
332
|
+
"[grpclb %p] balancer channel in state:TRANSIENT_FAILURE (%s); "
|
325
333
|
"entering fallback mode",
|
326
|
-
parent_.get());
|
334
|
+
parent_.get(), status.ToString().c_str());
|
327
335
|
parent_->fallback_at_startup_checks_pending_ = false;
|
328
336
|
grpc_timer_cancel(&parent_->lb_fallback_timer_);
|
329
337
|
parent_->fallback_mode_ = true;
|
@@ -367,6 +375,8 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
367
375
|
|
368
376
|
// Who the client is trying to communicate with.
|
369
377
|
const char* server_name_ = nullptr;
|
378
|
+
// Configurations for the policy.
|
379
|
+
RefCountedPtr<GrpcLbConfig> config_;
|
370
380
|
|
371
381
|
// Current channel args from the resolver.
|
372
382
|
grpc_channel_args* args_ = nullptr;
|
@@ -412,8 +422,6 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
412
422
|
|
413
423
|
// The child policy to use for the backends.
|
414
424
|
OrphanablePtr<LoadBalancingPolicy> child_policy_;
|
415
|
-
// The child policy config.
|
416
|
-
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config_;
|
417
425
|
// Child policy in state READY.
|
418
426
|
bool child_policy_ready_ = false;
|
419
427
|
};
|
@@ -545,12 +553,10 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
|
545
553
|
memcpy(lb_token, server.load_balance_token, lb_token_length);
|
546
554
|
lb_token[lb_token_length] = '\0';
|
547
555
|
} else {
|
548
|
-
char* uri = grpc_sockaddr_to_uri(&addr);
|
549
556
|
gpr_log(GPR_INFO,
|
550
557
|
"Missing LB token for backend address '%s'. The empty token will "
|
551
558
|
"be used instead",
|
552
|
-
|
553
|
-
gpr_free(uri);
|
559
|
+
grpc_sockaddr_to_uri(&addr).c_str());
|
554
560
|
lb_token[0] = '\0';
|
555
561
|
}
|
556
562
|
// Add address.
|
@@ -654,6 +660,7 @@ RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
|
|
654
660
|
}
|
655
661
|
|
656
662
|
void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
663
|
+
const absl::Status& status,
|
657
664
|
std::unique_ptr<SubchannelPicker> picker) {
|
658
665
|
if (parent_->shutting_down_) return;
|
659
666
|
// Record whether child policy reports READY.
|
@@ -684,16 +691,22 @@ void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
|
684
691
|
state != GRPC_CHANNEL_READY)) {
|
685
692
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
686
693
|
gpr_log(GPR_INFO,
|
687
|
-
"[grpclb %p helper %p] state=%s passing
|
688
|
-
|
694
|
+
"[grpclb %p helper %p] state=%s (%s) passing "
|
695
|
+
"child picker %p as-is",
|
696
|
+
parent_.get(), this, ConnectivityStateName(state),
|
697
|
+
status.ToString().c_str(), picker.get());
|
689
698
|
}
|
690
|
-
parent_->channel_control_helper()->UpdateState(state,
|
699
|
+
parent_->channel_control_helper()->UpdateState(state, status,
|
700
|
+
std::move(picker));
|
691
701
|
return;
|
692
702
|
}
|
693
703
|
// Cases 2 and 3a: wrap picker from the child in our own picker.
|
694
704
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
695
|
-
gpr_log(GPR_INFO,
|
696
|
-
|
705
|
+
gpr_log(GPR_INFO,
|
706
|
+
"[grpclb %p helper %p] state=%s (%s) wrapping child "
|
707
|
+
"picker %p",
|
708
|
+
parent_.get(), this, ConnectivityStateName(state),
|
709
|
+
status.ToString().c_str(), picker.get());
|
697
710
|
}
|
698
711
|
RefCountedPtr<GrpcLbClientStats> client_stats;
|
699
712
|
if (parent_->lb_calld_ != nullptr &&
|
@@ -701,7 +714,7 @@ void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
|
701
714
|
client_stats = parent_->lb_calld_->client_stats()->Ref();
|
702
715
|
}
|
703
716
|
parent_->channel_control_helper()->UpdateState(
|
704
|
-
state,
|
717
|
+
state, status,
|
705
718
|
absl::make_unique<Picker>(parent_.get(), parent_->serverlist_,
|
706
719
|
std::move(picker), std::move(client_stats)));
|
707
720
|
}
|
@@ -759,8 +772,11 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
759
772
|
nullptr, deadline, nullptr);
|
760
773
|
// Init the LB call request payload.
|
761
774
|
upb::Arena arena;
|
762
|
-
grpc_slice request_payload_slice =
|
763
|
-
|
775
|
+
grpc_slice request_payload_slice = GrpcLbRequestCreate(
|
776
|
+
grpclb_policy()->config_->service_name().empty()
|
777
|
+
? grpclb_policy()->server_name_
|
778
|
+
: grpclb_policy()->config_->service_name().c_str(),
|
779
|
+
arena.ptr());
|
764
780
|
send_message_payload_ =
|
765
781
|
grpc_raw_byte_buffer_create(&request_payload_slice, 1);
|
766
782
|
grpc_slice_unref_internal(request_payload_slice);
|
@@ -785,7 +801,7 @@ void GrpcLb::BalancerCallState::Orphan() {
|
|
785
801
|
// lb_on_balancer_status_received_ will complete the cancellation and clean
|
786
802
|
// up. Otherwise, we are here because grpclb_policy has to orphan a failed
|
787
803
|
// call, then the following cancellation will be a no-op.
|
788
|
-
|
804
|
+
grpc_call_cancel_internal(lb_call_);
|
789
805
|
if (client_load_report_timer_callback_pending_) {
|
790
806
|
grpc_timer_cancel(&client_load_report_timer_);
|
791
807
|
}
|
@@ -1386,12 +1402,8 @@ void GrpcLb::ResetBackoffLocked() {
|
|
1386
1402
|
|
1387
1403
|
void GrpcLb::UpdateLocked(UpdateArgs args) {
|
1388
1404
|
const bool is_initial_update = lb_channel_ == nullptr;
|
1389
|
-
|
1390
|
-
|
1391
|
-
child_policy_config_ = grpclb_config->child_policy();
|
1392
|
-
} else {
|
1393
|
-
child_policy_config_ = nullptr;
|
1394
|
-
}
|
1405
|
+
config_ = args.config;
|
1406
|
+
GPR_ASSERT(config_ != nullptr);
|
1395
1407
|
ProcessAddressesAndChannelArgsLocked(args.addresses, *args.args);
|
1396
1408
|
// Update the existing child policy.
|
1397
1409
|
if (child_policy_ != nullptr) CreateOrUpdateChildPolicyLocked();
|
@@ -1456,11 +1468,10 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
|
1456
1468
|
balancer_addresses, response_generator_.get(), &args);
|
1457
1469
|
// Create balancer channel if needed.
|
1458
1470
|
if (lb_channel_ == nullptr) {
|
1459
|
-
|
1460
|
-
|
1461
|
-
|
1471
|
+
std::string uri_str = absl::StrCat("fake:///", server_name_);
|
1472
|
+
lb_channel_ =
|
1473
|
+
CreateGrpclbBalancerChannel(uri_str.c_str(), *lb_channel_args);
|
1462
1474
|
GPR_ASSERT(lb_channel_ != nullptr);
|
1463
|
-
gpr_free(uri_str);
|
1464
1475
|
}
|
1465
1476
|
// Propagate updates to the LB channel (pick_first) through the fake
|
1466
1477
|
// resolver.
|
@@ -1646,7 +1657,7 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
|
|
1646
1657
|
update_args.args =
|
1647
1658
|
CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
|
1648
1659
|
GPR_ASSERT(update_args.args != nullptr);
|
1649
|
-
update_args.config =
|
1660
|
+
update_args.config = config_->child_policy();
|
1650
1661
|
// Create child policy if needed.
|
1651
1662
|
if (child_policy_ == nullptr) {
|
1652
1663
|
child_policy_ = CreateChildPolicyLocked(update_args.args);
|
@@ -1676,12 +1687,23 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1676
1687
|
const Json& json, grpc_error** error) const override {
|
1677
1688
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
1678
1689
|
if (json.type() == Json::Type::JSON_NULL) {
|
1679
|
-
return MakeRefCounted<GrpcLbConfig>(nullptr);
|
1690
|
+
return MakeRefCounted<GrpcLbConfig>(nullptr, "");
|
1680
1691
|
}
|
1681
1692
|
std::vector<grpc_error*> error_list;
|
1682
1693
|
Json child_policy_config_json_tmp;
|
1683
1694
|
const Json* child_policy_config_json;
|
1684
|
-
|
1695
|
+
std::string service_name;
|
1696
|
+
auto it = json.object_value().find("serviceName");
|
1697
|
+
if (it != json.object_value().end()) {
|
1698
|
+
const Json& service_name_json = it->second;
|
1699
|
+
if (service_name_json.type() != Json::Type::STRING) {
|
1700
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1701
|
+
"field:serviceName error:type should be string"));
|
1702
|
+
} else {
|
1703
|
+
service_name = service_name_json.string_value();
|
1704
|
+
}
|
1705
|
+
}
|
1706
|
+
it = json.object_value().find("childPolicy");
|
1685
1707
|
if (it == json.object_value().end()) {
|
1686
1708
|
child_policy_config_json_tmp = Json::Array{Json::Object{
|
1687
1709
|
{"round_robin", Json::Object()},
|
@@ -1701,7 +1723,8 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1701
1723
|
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
1702
1724
|
}
|
1703
1725
|
if (error_list.empty()) {
|
1704
|
-
return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config)
|
1726
|
+
return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config),
|
1727
|
+
std::move(service_name));
|
1705
1728
|
} else {
|
1706
1729
|
*error = GRPC_ERROR_CREATE_FROM_VECTOR("GrpcLb Parser", &error_list);
|
1707
1730
|
return nullptr;
|