grpc 1.30.0 → 1.31.1
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 +560 -619
- data/include/grpc/grpc_security.h +8 -0
- data/include/grpc/grpc_security_constants.h +3 -0
- data/include/grpc/impl/codegen/grpc_types.h +7 -5
- data/include/grpc/impl/codegen/port_platform.h +0 -32
- data/src/core/ext/filters/client_channel/backend_metric.cc +12 -9
- data/src/core/ext/filters/client_channel/client_channel.cc +406 -261
- 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 +2 -0
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +39 -23
- 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 +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +381 -72
- 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 +33 -48
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +21 -18
- 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/resolving_lb_policy.cc +33 -28
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +39 -20
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +1 -1
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +327 -123
- data/src/core/ext/filters/client_channel/xds/xds_api.h +72 -7
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +12 -23
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +112 -33
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +10 -10
- 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/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/server/chttp2_server.cc +383 -347
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +6 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +1 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +19 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +22 -27
- 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 +6 -7
- 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 +13 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
- data/src/core/ext/transport/chttp2/transport/writing.cc +9 -14
- data/src/core/ext/transport/inproc/inproc_transport.cc +35 -15
- 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/api/v2/auth/cert.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +80 -69
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +24 -23
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +66 -56
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +317 -311
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +42 -34
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +7 -7
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +79 -61
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +55 -49
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +9 -8
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +163 -169
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +51 -45
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +4 -5
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +107 -100
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +137 -117
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +105 -87
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +12 -13
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +95 -101
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +49 -65
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +49 -42
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +70 -62
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +81 -65
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +91 -80
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +9 -10
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +36 -31
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +648 -696
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +16 -15
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +95 -88
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +234 -199
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +13 -13
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +20 -18
- data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +18 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +14 -14
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +23 -23
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +7 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +36 -35
- 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/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 +3 -3
- 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 +33 -54
- 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/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.h +536 -535
- data/src/core/lib/channel/channel_trace.cc +2 -6
- data/src/core/lib/channel/channelz.cc +5 -15
- 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/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_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/ev_posix.cc +2 -0
- data/src/core/lib/iomgr/iomgr.cc +10 -0
- data/src/core/lib/iomgr/iomgr.h +10 -0
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- 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 +7 -5
- data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
- 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 +1 -1
- data/src/core/lib/iomgr/tcp_custom.h +1 -1
- 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/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/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 +12 -9
- 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 +10 -10
- 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/auth_filters.h +0 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +10 -9
- 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 +40 -41
- data/src/core/lib/surface/completion_queue.cc +271 -14
- data/src/core/lib/surface/completion_queue.h +8 -0
- data/src/core/lib/surface/init.cc +2 -0
- data/src/core/lib/surface/server.cc +565 -632
- data/src/core/lib/surface/server.h +34 -12
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/transport.h +6 -0
- data/src/core/lib/uri/uri_parser.cc +8 -15
- 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 +2 -0
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +108 -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 +57 -12
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/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/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/support/services.rb +10 -4
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/boringssl-with-bazel/err_data.c +89 -83
- 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 +143 -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/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_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/asn1.h +22 -22
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +33 -16
- 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 +789 -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 +17 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -7
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +28 -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/tls13_client.cc +31 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +12 -9
- 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 +467 -504
- data/third_party/upb/upb/encode.c +163 -121
- 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 -75
- data/third_party/upb/upb/table.int.h +11 -43
- data/third_party/upb/upb/upb.c +148 -124
- data/third_party/upb/upb/upb.h +65 -147
- data/third_party/upb/upb/upb.hpp +86 -0
- metadata +90 -30
- data/third_party/upb/upb/generated_util.h +0 -105
@@ -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
|
@@ -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
|
}
|
@@ -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
|
}
|
@@ -190,6 +190,8 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
190
190
|
|
191
191
|
/// Arguments used when picking a subchannel for a call.
|
192
192
|
struct PickArgs {
|
193
|
+
/// The path of the call. Indicates the RPC service and method name.
|
194
|
+
absl::string_view path;
|
193
195
|
/// Initial metadata associated with the picking call.
|
194
196
|
/// The LB policy may use the existing metadata to influence its routing
|
195
197
|
/// decision, and it may add new metadata elements to be sent with the
|
@@ -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>
|
@@ -128,16 +131,21 @@ constexpr char kGrpclb[] = "grpclb";
|
|
128
131
|
|
129
132
|
class GrpcLbConfig : public LoadBalancingPolicy::Config {
|
130
133
|
public:
|
131
|
-
|
132
|
-
|
134
|
+
GrpcLbConfig(RefCountedPtr<LoadBalancingPolicy::Config> child_policy,
|
135
|
+
std::string service_name)
|
136
|
+
: child_policy_(std::move(child_policy)),
|
137
|
+
service_name_(std::move(service_name)) {}
|
133
138
|
const char* name() const override { return kGrpclb; }
|
134
139
|
|
135
140
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
|
136
141
|
return child_policy_;
|
137
142
|
}
|
138
143
|
|
144
|
+
const std::string& service_name() const { return service_name_; }
|
145
|
+
|
139
146
|
private:
|
140
147
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_;
|
148
|
+
std::string service_name_;
|
141
149
|
};
|
142
150
|
|
143
151
|
class GrpcLb : public LoadBalancingPolicy {
|
@@ -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.
|
@@ -759,8 +765,11 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
759
765
|
nullptr, deadline, nullptr);
|
760
766
|
// Init the LB call request payload.
|
761
767
|
upb::Arena arena;
|
762
|
-
grpc_slice request_payload_slice =
|
763
|
-
|
768
|
+
grpc_slice request_payload_slice = GrpcLbRequestCreate(
|
769
|
+
grpclb_policy()->config_->service_name().empty()
|
770
|
+
? grpclb_policy()->server_name_
|
771
|
+
: grpclb_policy()->config_->service_name().c_str(),
|
772
|
+
arena.ptr());
|
764
773
|
send_message_payload_ =
|
765
774
|
grpc_raw_byte_buffer_create(&request_payload_slice, 1);
|
766
775
|
grpc_slice_unref_internal(request_payload_slice);
|
@@ -1386,12 +1395,8 @@ void GrpcLb::ResetBackoffLocked() {
|
|
1386
1395
|
|
1387
1396
|
void GrpcLb::UpdateLocked(UpdateArgs args) {
|
1388
1397
|
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
|
-
}
|
1398
|
+
config_ = args.config;
|
1399
|
+
GPR_ASSERT(config_ != nullptr);
|
1395
1400
|
ProcessAddressesAndChannelArgsLocked(args.addresses, *args.args);
|
1396
1401
|
// Update the existing child policy.
|
1397
1402
|
if (child_policy_ != nullptr) CreateOrUpdateChildPolicyLocked();
|
@@ -1456,11 +1461,10 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
|
1456
1461
|
balancer_addresses, response_generator_.get(), &args);
|
1457
1462
|
// Create balancer channel if needed.
|
1458
1463
|
if (lb_channel_ == nullptr) {
|
1459
|
-
|
1460
|
-
|
1461
|
-
|
1464
|
+
std::string uri_str = absl::StrCat("fake:///", server_name_);
|
1465
|
+
lb_channel_ =
|
1466
|
+
CreateGrpclbBalancerChannel(uri_str.c_str(), *lb_channel_args);
|
1462
1467
|
GPR_ASSERT(lb_channel_ != nullptr);
|
1463
|
-
gpr_free(uri_str);
|
1464
1468
|
}
|
1465
1469
|
// Propagate updates to the LB channel (pick_first) through the fake
|
1466
1470
|
// resolver.
|
@@ -1646,7 +1650,7 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
|
|
1646
1650
|
update_args.args =
|
1647
1651
|
CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
|
1648
1652
|
GPR_ASSERT(update_args.args != nullptr);
|
1649
|
-
update_args.config =
|
1653
|
+
update_args.config = config_->child_policy();
|
1650
1654
|
// Create child policy if needed.
|
1651
1655
|
if (child_policy_ == nullptr) {
|
1652
1656
|
child_policy_ = CreateChildPolicyLocked(update_args.args);
|
@@ -1676,12 +1680,23 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1676
1680
|
const Json& json, grpc_error** error) const override {
|
1677
1681
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
1678
1682
|
if (json.type() == Json::Type::JSON_NULL) {
|
1679
|
-
return MakeRefCounted<GrpcLbConfig>(nullptr);
|
1683
|
+
return MakeRefCounted<GrpcLbConfig>(nullptr, "");
|
1680
1684
|
}
|
1681
1685
|
std::vector<grpc_error*> error_list;
|
1682
1686
|
Json child_policy_config_json_tmp;
|
1683
1687
|
const Json* child_policy_config_json;
|
1684
|
-
|
1688
|
+
std::string service_name;
|
1689
|
+
auto it = json.object_value().find("serviceName");
|
1690
|
+
if (it != json.object_value().end()) {
|
1691
|
+
const Json& service_name_json = it->second;
|
1692
|
+
if (service_name_json.type() != Json::Type::STRING) {
|
1693
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1694
|
+
"field:serviceName error:type should be string"));
|
1695
|
+
} else {
|
1696
|
+
service_name = service_name_json.string_value();
|
1697
|
+
}
|
1698
|
+
}
|
1699
|
+
it = json.object_value().find("childPolicy");
|
1685
1700
|
if (it == json.object_value().end()) {
|
1686
1701
|
child_policy_config_json_tmp = Json::Array{Json::Object{
|
1687
1702
|
{"round_robin", Json::Object()},
|
@@ -1701,7 +1716,8 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1701
1716
|
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
1702
1717
|
}
|
1703
1718
|
if (error_list.empty()) {
|
1704
|
-
return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config)
|
1719
|
+
return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config),
|
1720
|
+
std::move(service_name));
|
1705
1721
|
} else {
|
1706
1722
|
*error = GRPC_ERROR_CREATE_FROM_VECTOR("GrpcLb Parser", &error_list);
|
1707
1723
|
return nullptr;
|
@@ -390,23 +390,21 @@ SubchannelList<SubchannelListType, SubchannelDataType>::SubchannelList(
|
|
390
390
|
if (subchannel == nullptr) {
|
391
391
|
// Subchannel could not be created.
|
392
392
|
if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
|
393
|
-
char* address_uri = grpc_sockaddr_to_uri(&addresses[i].address());
|
394
393
|
gpr_log(GPR_INFO,
|
395
394
|
"[%s %p] could not create subchannel for address uri %s, "
|
396
395
|
"ignoring",
|
397
|
-
tracer_->name(), policy_,
|
398
|
-
|
396
|
+
tracer_->name(), policy_,
|
397
|
+
grpc_sockaddr_to_uri(&addresses[i].address()).c_str());
|
399
398
|
}
|
400
399
|
continue;
|
401
400
|
}
|
402
401
|
if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
|
403
|
-
char* address_uri = grpc_sockaddr_to_uri(&addresses[i].address());
|
404
402
|
gpr_log(GPR_INFO,
|
405
403
|
"[%s %p] subchannel list %p index %" PRIuPTR
|
406
404
|
": Created subchannel %p for address uri %s",
|
407
405
|
tracer_->name(), policy_, this, subchannels_.size(),
|
408
|
-
subchannel.get(),
|
409
|
-
|
406
|
+
subchannel.get(),
|
407
|
+
grpc_sockaddr_to_uri(&addresses[i].address()).c_str());
|
410
408
|
}
|
411
409
|
subchannels_.emplace_back(this, addresses[i], std::move(subchannel));
|
412
410
|
}
|