grpc 1.28.0 → 1.30.2
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 +7694 -11190
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security.h +30 -9
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/grpc_types.h +19 -21
- data/include/grpc/impl/codegen/port_platform.h +6 -2
- data/include/grpc/module.modulemap +24 -39
- data/src/core/ext/filters/client_channel/backend_metric.cc +7 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +212 -241
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -22
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_proxy.cc +17 -10
- data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
- data/src/core/ext/filters/client_channel/lb_policy.h +42 -33
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +240 -301
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +11 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +5 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +84 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +6 -2
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
- data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
- data/src/core/ext/filters/client_channel/resolver.cc +5 -8
- data/src/core/ext/filters/client_channel/resolver.h +12 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +73 -59
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +35 -35
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +16 -20
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +72 -117
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +184 -133
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +7 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +40 -43
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +93 -102
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +32 -5
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -3
- data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +16 -16
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +19 -16
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +20 -31
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +4 -3
- data/src/core/ext/filters/client_channel/server_address.cc +6 -9
- data/src/core/ext/filters/client_channel/server_address.h +6 -12
- data/src/core/ext/filters/client_channel/service_config.cc +104 -144
- data/src/core/ext/filters/client_channel/service_config.h +28 -98
- data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
- data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
- data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +54 -24
- data/src/core/ext/filters/client_channel/subchannel.h +35 -11
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +348 -221
- data/src/core/ext/filters/client_channel/xds/xds_api.h +37 -37
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +44 -49
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +4 -3
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +4 -2
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +532 -339
- data/src/core/ext/filters/client_channel/xds/xds_client.h +57 -22
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +11 -12
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +31 -19
- data/src/core/ext/filters/http/client/http_client_filter.cc +23 -28
- data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
- data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +7 -10
- data/src/core/ext/filters/message_size/message_size_filter.h +4 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +23 -22
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +14 -21
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +15 -8
- data/src/core/ext/transport/inproc/inproc_transport.cc +19 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +4 -229
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -875
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +43 -7
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +47 -26
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +115 -65
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +24 -20
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +28 -13
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +38 -18
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +88 -6
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +9 -6
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +15 -10
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +16 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +63 -41
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +173 -77
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +48 -28
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +4 -0
- data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +16 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +1 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +9 -8
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +30 -24
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +21 -20
- data/src/core/ext/upb-generated/validate/validate.upb.h +69 -63
- data/src/core/lib/channel/channel_args.cc +15 -14
- data/src/core/lib/channel/channel_args.h +3 -1
- data/src/core/lib/channel/channel_stack.h +20 -13
- data/src/core/lib/channel/channelz.cc +5 -6
- data/src/core/lib/channel/channelz.h +3 -2
- data/src/core/lib/channel/channelz_registry.cc +5 -3
- data/src/core/lib/channel/connected_channel.cc +7 -5
- data/src/core/lib/channel/context.h +1 -1
- data/src/core/lib/channel/handshaker.cc +11 -13
- data/src/core/lib/channel/handshaker.h +4 -2
- data/src/core/lib/channel/handshaker_registry.cc +5 -17
- data/src/core/lib/channel/status_util.cc +2 -3
- data/src/core/lib/compression/message_compress.cc +5 -1
- data/src/core/lib/debug/stats.cc +21 -27
- data/src/core/lib/debug/stats.h +3 -1
- data/src/core/lib/gpr/spinlock.h +2 -3
- data/src/core/lib/gpr/string.cc +2 -26
- data/src/core/lib/gpr/string.h +0 -16
- data/src/core/lib/gpr/sync_abseil.cc +2 -0
- data/src/core/lib/gpr/time.cc +4 -0
- data/src/core/lib/gpr/time_posix.cc +1 -1
- data/src/core/lib/gprpp/atomic.h +6 -6
- data/src/core/lib/gprpp/fork.cc +1 -1
- data/src/core/lib/gprpp/host_port.cc +29 -35
- data/src/core/lib/gprpp/host_port.h +14 -17
- data/src/core/lib/gprpp/map.h +5 -11
- data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +2 -3
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/http/parser.h +2 -3
- data/src/core/lib/iomgr/buffer_list.h +22 -21
- data/src/core/lib/iomgr/call_combiner.h +3 -2
- data/src/core/lib/iomgr/cfstream_handle.cc +3 -2
- data/src/core/lib/iomgr/closure.h +2 -3
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
- data/src/core/lib/iomgr/endpoint_pair.h +2 -3
- data/src/core/lib/iomgr/error.cc +6 -9
- data/src/core/lib/iomgr/error.h +0 -1
- data/src/core/lib/iomgr/ev_apple.cc +356 -0
- data/src/core/lib/iomgr/ev_apple.h +43 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -23
- data/src/core/lib/iomgr/ev_epollex_linux.cc +2 -3
- data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
- data/src/core/lib/iomgr/ev_posix.cc +2 -3
- data/src/core/lib/iomgr/exec_ctx.h +14 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
- data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
- data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
- data/src/core/lib/iomgr/port.h +1 -0
- data/src/core/lib/iomgr/python_util.h +46 -0
- data/src/core/lib/iomgr/resolve_address.h +4 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +29 -39
- data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -17
- data/src/core/lib/iomgr/resource_quota.cc +4 -6
- data/src/core/lib/iomgr/sockaddr_utils.cc +23 -29
- data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
- data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
- data/src/core/lib/iomgr/socket_mutator.h +2 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -26
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
- data/src/core/lib/iomgr/tcp_client_posix.cc +8 -5
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_custom.cc +2 -3
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -9
- data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
- data/src/core/lib/iomgr/tcp_uv.cc +3 -2
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer_generic.cc +2 -3
- data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
- data/src/core/lib/iomgr/timer_heap.h +2 -3
- data/src/core/lib/iomgr/udp_server.cc +9 -14
- data/src/core/lib/json/json.h +3 -2
- data/src/core/lib/json/json_reader.cc +5 -5
- data/src/core/lib/json/json_writer.cc +13 -12
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
- data/src/core/lib/security/credentials/credentials.cc +0 -84
- data/src/core/lib/security/credentials/credentials.h +8 -59
- data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +3 -8
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
- data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +8 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +55 -27
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +9 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +13 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +38 -11
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +20 -25
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +59 -12
- data/src/core/lib/security/security_connector/ssl_utils.h +12 -10
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +77 -51
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -5
- data/src/core/lib/security/transport/auth_filters.h +0 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +1 -2
- data/src/core/lib/slice/slice_intern.cc +2 -3
- data/src/core/lib/slice/slice_internal.h +14 -0
- data/src/core/lib/slice/slice_utils.h +9 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
- data/src/core/lib/surface/call.cc +2 -3
- data/src/core/lib/surface/call_log_batch.cc +50 -58
- data/src/core/lib/surface/channel.cc +53 -31
- data/src/core/lib/surface/channel.h +35 -4
- data/src/core/lib/surface/channel_ping.cc +2 -3
- data/src/core/lib/surface/completion_queue.cc +33 -33
- data/src/core/lib/surface/event_string.cc +18 -25
- data/src/core/lib/surface/event_string.h +3 -1
- data/src/core/lib/surface/init_secure.cc +1 -4
- data/src/core/lib/surface/server.cc +570 -369
- data/src/core/lib/surface/server.h +32 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.h +7 -2
- data/src/core/lib/transport/connectivity_state.cc +7 -6
- data/src/core/lib/transport/connectivity_state.h +5 -3
- data/src/core/lib/transport/metadata.cc +3 -3
- data/src/core/lib/transport/metadata_batch.h +2 -3
- data/src/core/lib/transport/static_metadata.h +1 -1
- data/src/core/lib/transport/status_conversion.cc +6 -14
- data/src/core/lib/transport/transport.cc +2 -3
- data/src/core/lib/transport/transport.h +3 -2
- data/src/core/lib/transport/transport_op_string.cc +61 -102
- data/src/core/lib/uri/uri_parser.h +2 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +20 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +8 -1
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
- data/src/core/tsi/fake_transport_security.cc +10 -15
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
- data/src/core/tsi/ssl_transport_security.cc +52 -39
- data/src/core/tsi/ssl_transport_security.h +8 -8
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.h +6 -9
- data/src/core/tsi/transport_security_grpc.h +2 -3
- data/src/core/tsi/transport_security_interface.h +3 -3
- data/src/ruby/ext/grpc/rb_call.c +9 -1
- data/src/ruby/ext/grpc/rb_call_credentials.c +3 -2
- 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/errors.rb +103 -42
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
- data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
- data/src/ruby/lib/grpc/generic/service.rb +5 -4
- data/src/ruby/lib/grpc/structs.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +5 -3
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
- data/src/ruby/spec/debug_message_spec.rb +134 -0
- data/src/ruby/spec/generic/service_spec.rb +2 -0
- 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 +7 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +7 -1
- data/src/ruby/spec/support/services.rb +10 -4
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
- data/third_party/abseil-cpp/absl/time/clock.h +74 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
- data/third_party/abseil-cpp/absl/time/format.cc +153 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
- data/third_party/abseil-cpp/absl/time/time.cc +499 -0
- data/third_party/abseil-cpp/absl/time/time.h +1584 -0
- data/third_party/boringssl-with-bazel/err_data.c +329 -297
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +15 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +289 -117
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +13 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +432 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +5 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +80 -99
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +41 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +32 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -114
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +51 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -12
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +4 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +9 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +20 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +172 -77
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +5 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +146 -57
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +14 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +28 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +12 -4
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +64 -47
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +29 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +6 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +64 -5
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +6 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +47 -53
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +23 -75
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +50 -20
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
- metadata +115 -39
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
- data/src/core/lib/gprpp/string_view.h +0 -60
- data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
@@ -35,6 +35,7 @@
|
|
35
35
|
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
36
36
|
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
|
37
37
|
#include "src/core/ext/filters/client_channel/retry_throttle.h"
|
38
|
+
#include "src/core/ext/filters/client_channel/service_config_parser.h"
|
38
39
|
#include "src/core/lib/surface/channel_init.h"
|
39
40
|
|
40
41
|
static bool append_filter(grpc_channel_stack_builder* builder, void* arg) {
|
@@ -43,7 +44,7 @@ static bool append_filter(grpc_channel_stack_builder* builder, void* arg) {
|
|
43
44
|
}
|
44
45
|
|
45
46
|
void grpc_client_channel_init(void) {
|
46
|
-
grpc_core::
|
47
|
+
grpc_core::ServiceConfigParser::Init();
|
47
48
|
grpc_core::internal::ClientChannelServiceConfigParser::Register();
|
48
49
|
grpc_core::LoadBalancingPolicyRegistry::Builder::InitRegistry();
|
49
50
|
grpc_core::ResolverRegistry::Builder::InitRegistry();
|
@@ -65,5 +66,5 @@ void grpc_client_channel_shutdown(void) {
|
|
65
66
|
grpc_core::internal::ServerRetryThrottleMap::Shutdown();
|
66
67
|
grpc_core::ResolverRegistry::Builder::ShutdownRegistry();
|
67
68
|
grpc_core::LoadBalancingPolicyRegistry::Builder::ShutdownRegistry();
|
68
|
-
grpc_core::
|
69
|
+
grpc_core::ServiceConfigParser::Shutdown();
|
69
70
|
}
|
@@ -125,8 +125,7 @@ void HealthCheckClient::StartCallLocked() {
|
|
125
125
|
call_state_->StartCall();
|
126
126
|
}
|
127
127
|
|
128
|
-
void HealthCheckClient::
|
129
|
-
MutexLock lock(&mu_);
|
128
|
+
void HealthCheckClient::StartRetryTimerLocked() {
|
130
129
|
SetHealthStatusLocked(GRPC_CHANNEL_TRANSIENT_FAILURE,
|
131
130
|
"health check call failed; will retry after backoff");
|
132
131
|
grpc_millis next_try = retry_backoff_.NextAttemptTime();
|
@@ -297,14 +296,7 @@ void HealthCheckClient::CallState::StartCall() {
|
|
297
296
|
"checking call on subchannel (%s); will retry",
|
298
297
|
health_check_client_.get(), this, grpc_error_string(error));
|
299
298
|
GRPC_ERROR_UNREF(error);
|
300
|
-
|
301
|
-
// holding health_check_client_->mu_ when CallEnded() is called.
|
302
|
-
call_->Ref(DEBUG_LOCATION, "call_end_closure").release();
|
303
|
-
ExecCtx::Run(
|
304
|
-
DEBUG_LOCATION,
|
305
|
-
GRPC_CLOSURE_INIT(&batch_.handler_private.closure, CallEndedRetry, this,
|
306
|
-
grpc_schedule_on_exec_ctx),
|
307
|
-
GRPC_ERROR_NONE);
|
299
|
+
CallEndedLocked(/*retry=*/true);
|
308
300
|
return;
|
309
301
|
}
|
310
302
|
// Initialize payload and batch.
|
@@ -582,18 +574,11 @@ void HealthCheckClient::CallState::RecvTrailingMetadataReady(
|
|
582
574
|
kErrorMessage);
|
583
575
|
retry = false;
|
584
576
|
}
|
585
|
-
self->
|
586
|
-
|
587
|
-
|
588
|
-
void HealthCheckClient::CallState::CallEndedRetry(void* arg,
|
589
|
-
grpc_error* /*error*/) {
|
590
|
-
HealthCheckClient::CallState* self =
|
591
|
-
static_cast<HealthCheckClient::CallState*>(arg);
|
592
|
-
self->CallEnded(true /* retry */);
|
593
|
-
self->call_->Unref(DEBUG_LOCATION, "call_end_closure");
|
577
|
+
MutexLock lock(&self->health_check_client_->mu_);
|
578
|
+
self->CallEndedLocked(retry);
|
594
579
|
}
|
595
580
|
|
596
|
-
void HealthCheckClient::CallState::
|
581
|
+
void HealthCheckClient::CallState::CallEndedLocked(bool retry) {
|
597
582
|
// If this CallState is still in use, this call ended because of a failure,
|
598
583
|
// so we need to stop using it and optionally create a new one.
|
599
584
|
// Otherwise, we have deliberately ended this call, and no further action
|
@@ -606,10 +591,10 @@ void HealthCheckClient::CallState::CallEnded(bool retry) {
|
|
606
591
|
// If the call fails after we've gotten a successful response, reset
|
607
592
|
// the backoff and restart the call immediately.
|
608
593
|
health_check_client_->retry_backoff_.Reset();
|
609
|
-
health_check_client_->
|
594
|
+
health_check_client_->StartCallLocked();
|
610
595
|
} else {
|
611
596
|
// If the call failed without receiving any messages, retry later.
|
612
|
-
health_check_client_->
|
597
|
+
health_check_client_->StartRetryTimerLocked();
|
613
598
|
}
|
614
599
|
}
|
615
600
|
}
|
@@ -72,8 +72,8 @@ class HealthCheckClient : public InternallyRefCounted
|
|
72
72
|
void StartBatch(grpc_transport_stream_op_batch* batch);
|
73
73
|
static void StartBatchInCallCombiner(void* arg, grpc_error* error);
|
74
74
|
|
75
|
-
|
76
|
-
void
|
75
|
+
// Requires holding health_check_client_->mu_.
|
76
|
+
void CallEndedLocked(bool retry);
|
77
77
|
|
78
78
|
static void OnComplete(void* arg, grpc_error* error);
|
79
79
|
static void RecvInitialMetadataReady(void* arg, grpc_error* error);
|
@@ -143,7 +143,7 @@ class HealthCheckClient : public InternallyRefCounted
|
|
143
143
|
void StartCall();
|
144
144
|
void StartCallLocked(); // Requires holding mu_.
|
145
145
|
|
146
|
-
void
|
146
|
+
void StartRetryTimerLocked(); // Requires holding mu_.
|
147
147
|
static void OnRetryTimer(void* arg, grpc_error* error);
|
148
148
|
|
149
149
|
void SetHealthStatus(grpc_connectivity_state state, const char* reason);
|
@@ -45,17 +45,23 @@ namespace {
|
|
45
45
|
* credentials if present in the 'http_proxy' env var, otherwise leaves it
|
46
46
|
* unchanged. It is caller's responsibility to gpr_free user_cred.
|
47
47
|
*/
|
48
|
-
char* GetHttpProxyServer(char** user_cred) {
|
48
|
+
char* GetHttpProxyServer(const grpc_channel_args* args, char** user_cred) {
|
49
49
|
GPR_ASSERT(user_cred != nullptr);
|
50
50
|
grpc_uri* uri = nullptr;
|
51
51
|
char* proxy_name = nullptr;
|
52
52
|
char** authority_strs = nullptr;
|
53
53
|
size_t authority_nstrs;
|
54
|
-
/*
|
55
|
-
*
|
56
|
-
*
|
54
|
+
/* We check the following places to determine the HTTP proxy to use, stopping
|
55
|
+
* at the first one that is set:
|
56
|
+
* 1. GRPC_ARG_HTTP_PROXY channel arg
|
57
|
+
* 2. grpc_proxy environment variable
|
58
|
+
* 3. https_proxy environment variable
|
59
|
+
* 4. http_proxy environment variable
|
60
|
+
* If none of the above are set, then no HTTP proxy will be used.
|
57
61
|
*/
|
58
|
-
char* uri_str =
|
62
|
+
char* uri_str =
|
63
|
+
gpr_strdup(grpc_channel_args_find_string(args, GRPC_ARG_HTTP_PROXY));
|
64
|
+
if (uri_str == nullptr) uri_str = gpr_getenv("grpc_proxy");
|
59
65
|
if (uri_str == nullptr) uri_str = gpr_getenv("https_proxy");
|
60
66
|
if (uri_str == nullptr) uri_str = gpr_getenv("http_proxy");
|
61
67
|
if (uri_str == nullptr) return nullptr;
|
@@ -103,7 +109,7 @@ class HttpProxyMapper : public ProxyMapperInterface {
|
|
103
109
|
return false;
|
104
110
|
}
|
105
111
|
char* user_cred = nullptr;
|
106
|
-
*name_to_resolve = GetHttpProxyServer(&user_cred);
|
112
|
+
*name_to_resolve = GetHttpProxyServer(args, &user_cred);
|
107
113
|
if (*name_to_resolve == nullptr) return false;
|
108
114
|
char* no_proxy_str = nullptr;
|
109
115
|
grpc_uri* uri = grpc_uri_parse(server_uri, false /* suppress_errors */);
|
@@ -125,8 +131,8 @@ class HttpProxyMapper : public ProxyMapperInterface {
|
|
125
131
|
if (no_proxy_str != nullptr) {
|
126
132
|
static const char* NO_PROXY_SEPARATOR = ",";
|
127
133
|
bool use_proxy = true;
|
128
|
-
|
129
|
-
|
134
|
+
std::string server_host;
|
135
|
+
std::string server_port;
|
130
136
|
if (!grpc_core::SplitHostPort(
|
131
137
|
uri->path[0] == '/' ? uri->path + 1 : uri->path, &server_host,
|
132
138
|
&server_port)) {
|
@@ -136,7 +142,7 @@ class HttpProxyMapper : public ProxyMapperInterface {
|
|
136
142
|
server_uri);
|
137
143
|
gpr_free(no_proxy_str);
|
138
144
|
} else {
|
139
|
-
size_t uri_len =
|
145
|
+
size_t uri_len = server_host.size();
|
140
146
|
char** no_proxy_hosts;
|
141
147
|
size_t num_no_proxy_hosts;
|
142
148
|
gpr_string_split(no_proxy_str, NO_PROXY_SEPARATOR, &no_proxy_hosts,
|
@@ -146,7 +152,8 @@ class HttpProxyMapper : public ProxyMapperInterface {
|
|
146
152
|
size_t no_proxy_len = strlen(no_proxy_entry);
|
147
153
|
if (no_proxy_len <= uri_len &&
|
148
154
|
gpr_stricmp(no_proxy_entry,
|
149
|
-
&(server_host.
|
155
|
+
&(server_host.c_str()[uri_len - no_proxy_len])) ==
|
156
|
+
0) {
|
150
157
|
gpr_log(GPR_INFO, "not using proxy for host in no_proxy list '%s'",
|
151
158
|
server_uri);
|
152
159
|
use_proxy = false;
|
@@ -33,13 +33,12 @@ DebugOnlyTraceFlag grpc_trace_lb_policy_refcount(false, "lb_policy_refcount");
|
|
33
33
|
|
34
34
|
LoadBalancingPolicy::LoadBalancingPolicy(Args args, intptr_t initial_refcount)
|
35
35
|
: InternallyRefCounted(&grpc_trace_lb_policy_refcount, initial_refcount),
|
36
|
-
|
36
|
+
work_serializer_(std::move(args.work_serializer)),
|
37
37
|
interested_parties_(grpc_pollset_set_create()),
|
38
38
|
channel_control_helper_(std::move(args.channel_control_helper)) {}
|
39
39
|
|
40
40
|
LoadBalancingPolicy::~LoadBalancingPolicy() {
|
41
41
|
grpc_pollset_set_destroy(interested_parties_);
|
42
|
-
GRPC_COMBINER_UNREF(combiner_, "lb_policy");
|
43
42
|
}
|
44
43
|
|
45
44
|
void LoadBalancingPolicy::Orphan() {
|
@@ -57,7 +56,7 @@ LoadBalancingPolicy::UpdateArgs::UpdateArgs(const UpdateArgs& other) {
|
|
57
56
|
args = grpc_channel_args_copy(other.args);
|
58
57
|
}
|
59
58
|
|
60
|
-
LoadBalancingPolicy::UpdateArgs::UpdateArgs(UpdateArgs&& other) {
|
59
|
+
LoadBalancingPolicy::UpdateArgs::UpdateArgs(UpdateArgs&& other) noexcept {
|
61
60
|
addresses = std::move(other.addresses);
|
62
61
|
config = std::move(other.config);
|
63
62
|
// TODO(roth): Use std::move() once channel args is converted to C++.
|
@@ -75,7 +74,7 @@ LoadBalancingPolicy::UpdateArgs& LoadBalancingPolicy::UpdateArgs::operator=(
|
|
75
74
|
}
|
76
75
|
|
77
76
|
LoadBalancingPolicy::UpdateArgs& LoadBalancingPolicy::UpdateArgs::operator=(
|
78
|
-
UpdateArgs&& other) {
|
77
|
+
UpdateArgs&& other) noexcept {
|
79
78
|
addresses = std::move(other.addresses);
|
80
79
|
config = std::move(other.config);
|
81
80
|
// TODO(roth): Use std::move() once channel args is converted to C++.
|
@@ -99,29 +98,31 @@ LoadBalancingPolicy::PickResult LoadBalancingPolicy::QueuePicker::Pick(
|
|
99
98
|
// the time this function returns, the pick will already have
|
100
99
|
// been processed, and we'll be trying to re-process the same
|
101
100
|
// pick again, leading to a crash.
|
102
|
-
// 2. We are currently running in the data plane
|
103
|
-
// need to bounce into the control plane
|
101
|
+
// 2. We are currently running in the data plane mutex, but we
|
102
|
+
// need to bounce into the control plane work_serializer to call
|
104
103
|
// ExitIdleLocked().
|
105
104
|
if (!exit_idle_called_) {
|
106
105
|
exit_idle_called_ = true;
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
106
|
+
auto* parent = parent_->Ref().release(); // ref held by lambda.
|
107
|
+
ExecCtx::Run(DEBUG_LOCATION,
|
108
|
+
GRPC_CLOSURE_CREATE(
|
109
|
+
[](void* arg, grpc_error* /*error*/) {
|
110
|
+
auto* parent = static_cast<LoadBalancingPolicy*>(arg);
|
111
|
+
parent->work_serializer()->Run(
|
112
|
+
[parent]() {
|
113
|
+
parent->ExitIdleLocked();
|
114
|
+
parent->Unref();
|
115
|
+
},
|
116
|
+
DEBUG_LOCATION);
|
117
|
+
},
|
118
|
+
parent, nullptr),
|
119
|
+
GRPC_ERROR_NONE);
|
112
120
|
}
|
113
121
|
PickResult result;
|
114
122
|
result.type = PickResult::PICK_QUEUE;
|
115
123
|
return result;
|
116
124
|
}
|
117
125
|
|
118
|
-
void LoadBalancingPolicy::QueuePicker::CallExitIdle(void* arg,
|
119
|
-
grpc_error* /*error*/) {
|
120
|
-
LoadBalancingPolicy* parent = static_cast<LoadBalancingPolicy*>(arg);
|
121
|
-
parent->ExitIdleLocked();
|
122
|
-
parent->Unref(DEBUG_LOCATION, "QueuePicker::CallExitIdle");
|
123
|
-
}
|
124
|
-
|
125
126
|
//
|
126
127
|
// LoadBalancingPolicy::TransientFailurePicker
|
127
128
|
//
|
@@ -24,15 +24,16 @@
|
|
24
24
|
#include <functional>
|
25
25
|
#include <iterator>
|
26
26
|
|
27
|
+
#include "absl/strings/string_view.h"
|
28
|
+
|
27
29
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
28
30
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
29
31
|
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
30
32
|
#include "src/core/lib/gprpp/map.h"
|
31
33
|
#include "src/core/lib/gprpp/orphanable.h"
|
32
34
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
33
|
-
#include "src/core/lib/gprpp/string_view.h"
|
34
|
-
#include "src/core/lib/iomgr/combiner.h"
|
35
35
|
#include "src/core/lib/iomgr/polling_entity.h"
|
36
|
+
#include "src/core/lib/iomgr/work_serializer.h"
|
36
37
|
#include "src/core/lib/transport/connectivity_state.h"
|
37
38
|
|
38
39
|
namespace grpc_core {
|
@@ -72,7 +73,7 @@ extern DebugOnlyTraceFlag grpc_trace_lb_policy_refcount;
|
|
72
73
|
/// LoadBalacingPolicy API.
|
73
74
|
///
|
74
75
|
/// Note: All methods with a "Locked" suffix must be called from the
|
75
|
-
///
|
76
|
+
/// work_serializer passed to the constructor.
|
76
77
|
///
|
77
78
|
/// Any I/O done by the LB policy should be done under the pollset_set
|
78
79
|
/// returned by \a interested_parties().
|
@@ -93,11 +94,11 @@ class LoadBalancingPolicy : public InternallyRefCounted
|
|
93
94
|
/// Application-specific requests cost metrics. Metric names are
|
94
95
|
/// determined by the application. Each value is an absolute cost
|
95
96
|
/// (e.g. 3487 bytes of storage) associated with the request.
|
96
|
-
std::map<
|
97
|
+
std::map<absl::string_view, double, StringLess> request_cost;
|
97
98
|
/// Application-specific resource utilization metrics. Metric names
|
98
99
|
/// are determined by the application. Each value is expressed as a
|
99
100
|
/// fraction of total resources available.
|
100
|
-
std::map<
|
101
|
+
std::map<absl::string_view, double, StringLess> utilization;
|
101
102
|
};
|
102
103
|
|
103
104
|
/// Interface for accessing per-call state.
|
@@ -115,7 +116,17 @@ class LoadBalancingPolicy : public InternallyRefCounted
|
|
115
116
|
|
116
117
|
/// Returns the backend metric data returned by the server for the call,
|
117
118
|
/// or null if no backend metric data was returned.
|
119
|
+
// TODO(roth): Move this out of CallState, since it should not be
|
120
|
+
// accessible to the picker, only to the recv_trailing_metadata_ready
|
121
|
+
// callback. It should instead be in its own interface.
|
118
122
|
virtual const BackendMetricData* GetBackendMetricData() = 0;
|
123
|
+
|
124
|
+
/// EXPERIMENTAL API.
|
125
|
+
/// Returns the value of the call attribute \a key.
|
126
|
+
/// Keys are static strings, so an attribute can be accessed by an LB
|
127
|
+
/// policy implementation only if it knows about the internal key.
|
128
|
+
/// Returns a null string_view if key not found.
|
129
|
+
virtual absl::string_view ExperimentalGetCallAttribute(const char* key) = 0;
|
119
130
|
};
|
120
131
|
|
121
132
|
/// Interface for accessing metadata.
|
@@ -123,12 +134,13 @@ class LoadBalancingPolicy : public InternallyRefCounted
|
|
123
134
|
class MetadataInterface {
|
124
135
|
public:
|
125
136
|
class iterator
|
126
|
-
: public std::iterator<
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
137
|
+
: public std::iterator<
|
138
|
+
std::input_iterator_tag,
|
139
|
+
std::pair<absl::string_view, absl::string_view>, // value_type
|
140
|
+
std::ptrdiff_t, // difference_type
|
141
|
+
std::pair<absl::string_view, absl::string_view>*, // pointer
|
142
|
+
std::pair<absl::string_view, absl::string_view>& // reference
|
143
|
+
> {
|
132
144
|
public:
|
133
145
|
iterator(const MetadataInterface* md, intptr_t handle)
|
134
146
|
: md_(md), handle_(handle) {}
|
@@ -155,7 +167,7 @@ class LoadBalancingPolicy : public InternallyRefCounted
|
|
155
167
|
/// Implementations must ensure that the key and value remain alive
|
156
168
|
/// until the call ends. If desired, they may be allocated via
|
157
169
|
/// CallState::Alloc().
|
158
|
-
virtual void Add(
|
170
|
+
virtual void Add(absl::string_view key, absl::string_view value) = 0;
|
159
171
|
|
160
172
|
/// Iteration interface.
|
161
173
|
virtual iterator begin() const = 0;
|
@@ -172,7 +184,7 @@ class LoadBalancingPolicy : public InternallyRefCounted
|
|
172
184
|
friend class iterator;
|
173
185
|
|
174
186
|
virtual intptr_t IteratorHandleNext(intptr_t handle) const = 0;
|
175
|
-
virtual std::pair<
|
187
|
+
virtual std::pair<absl::string_view /*key*/, absl::string_view /*value */>
|
176
188
|
IteratorHandleGet(intptr_t handle) const = 0;
|
177
189
|
};
|
178
190
|
|
@@ -184,7 +196,7 @@ class LoadBalancingPolicy : public InternallyRefCounted
|
|
184
196
|
/// call to the chosen backend.
|
185
197
|
MetadataInterface* initial_metadata;
|
186
198
|
/// An interface for accessing call state. Can be used to allocate
|
187
|
-
///
|
199
|
+
/// memory associated with the call in an efficient way.
|
188
200
|
CallState* call_state;
|
189
201
|
};
|
190
202
|
|
@@ -226,6 +238,9 @@ class LoadBalancingPolicy : public InternallyRefCounted
|
|
226
238
|
/// does not take ownership, so any data that needs to be used after
|
227
239
|
/// returning must be copied.
|
228
240
|
/// The call state can be used to obtain backend metric data.
|
241
|
+
// TODO(roth): The arguments to this callback should be moved into a
|
242
|
+
// struct, so that we can later add new fields without breaking
|
243
|
+
// existing implementations.
|
229
244
|
std::function<void(grpc_error*, MetadataInterface*, CallState*)>
|
230
245
|
recv_trailing_metadata_ready;
|
231
246
|
};
|
@@ -242,7 +257,7 @@ class LoadBalancingPolicy : public InternallyRefCounted
|
|
242
257
|
/// live in the LB policy object itself.
|
243
258
|
///
|
244
259
|
/// Currently, pickers are always accessed from within the
|
245
|
-
/// client_channel data plane
|
260
|
+
/// client_channel data plane mutex, so they do not have to be
|
246
261
|
/// thread-safe.
|
247
262
|
class SubchannelPicker {
|
248
263
|
public:
|
@@ -254,9 +269,6 @@ class LoadBalancingPolicy : public InternallyRefCounted
|
|
254
269
|
|
255
270
|
/// A proxy object implemented by the client channel and used by the
|
256
271
|
/// LB policy to communicate with the channel.
|
257
|
-
// TODO(juanlishen): Consider adding a mid-layer subclass that helps handle
|
258
|
-
// things like swapping in pending policy when it's ready. Currently, we are
|
259
|
-
// duplicating the logic in many subclasses.
|
260
272
|
class ChannelControlHelper {
|
261
273
|
public:
|
262
274
|
ChannelControlHelper() = default;
|
@@ -276,7 +288,8 @@ class LoadBalancingPolicy : public InternallyRefCounted
|
|
276
288
|
|
277
289
|
/// Adds a trace message associated with the channel.
|
278
290
|
enum TraceSeverity { TRACE_INFO, TRACE_WARNING, TRACE_ERROR };
|
279
|
-
virtual void AddTraceEvent(TraceSeverity severity,
|
291
|
+
virtual void AddTraceEvent(TraceSeverity severity,
|
292
|
+
absl::string_view message) = 0;
|
280
293
|
};
|
281
294
|
|
282
295
|
/// Interface for configuration data used by an LB policy implementation.
|
@@ -302,19 +315,15 @@ class LoadBalancingPolicy : public InternallyRefCounted
|
|
302
315
|
UpdateArgs() = default;
|
303
316
|
~UpdateArgs() { grpc_channel_args_destroy(args); }
|
304
317
|
UpdateArgs(const UpdateArgs& other);
|
305
|
-
UpdateArgs(UpdateArgs&& other);
|
318
|
+
UpdateArgs(UpdateArgs&& other) noexcept;
|
306
319
|
UpdateArgs& operator=(const UpdateArgs& other);
|
307
|
-
UpdateArgs& operator=(UpdateArgs&& other);
|
320
|
+
UpdateArgs& operator=(UpdateArgs&& other) noexcept;
|
308
321
|
};
|
309
322
|
|
310
323
|
/// Args used to instantiate an LB policy.
|
311
324
|
struct Args {
|
312
|
-
/// The
|
313
|
-
|
314
|
-
// TODO(roth): Once we have a C++-like interface for combiners, this
|
315
|
-
// API should change to take a smart pointer that does pass ownership
|
316
|
-
// of a reference.
|
317
|
-
Combiner* combiner = nullptr;
|
325
|
+
/// The work_serializer under which all LB policy calls will be run.
|
326
|
+
std::shared_ptr<WorkSerializer> work_serializer;
|
318
327
|
/// Channel control helper.
|
319
328
|
/// Note: LB policies MUST NOT call any method on the helper from
|
320
329
|
/// their constructor.
|
@@ -352,7 +361,7 @@ class LoadBalancingPolicy : public InternallyRefCounted
|
|
352
361
|
|
353
362
|
grpc_pollset_set* interested_parties() const { return interested_parties_; }
|
354
363
|
|
355
|
-
// Note: This must be invoked while holding the
|
364
|
+
// Note: This must be invoked while holding the work_serializer.
|
356
365
|
void Orphan() override;
|
357
366
|
|
358
367
|
// A picker that returns PICK_QUEUE for all picks.
|
@@ -368,8 +377,6 @@ class LoadBalancingPolicy : public InternallyRefCounted
|
|
368
377
|
PickResult Pick(PickArgs args) override;
|
369
378
|
|
370
379
|
private:
|
371
|
-
static void CallExitIdle(void* arg, grpc_error* error);
|
372
|
-
|
373
380
|
RefCountedPtr<LoadBalancingPolicy> parent_;
|
374
381
|
bool exit_idle_called_ = false;
|
375
382
|
};
|
@@ -387,7 +394,9 @@ class LoadBalancingPolicy : public InternallyRefCounted
|
|
387
394
|
};
|
388
395
|
|
389
396
|
protected:
|
390
|
-
|
397
|
+
std::shared_ptr<WorkSerializer> work_serializer() const {
|
398
|
+
return work_serializer_;
|
399
|
+
}
|
391
400
|
|
392
401
|
// Note: LB policies MUST NOT call any method on the helper from their
|
393
402
|
// constructor.
|
@@ -399,8 +408,8 @@ class LoadBalancingPolicy : public InternallyRefCounted
|
|
399
408
|
virtual void ShutdownLocked() = 0;
|
400
409
|
|
401
410
|
private:
|
402
|
-
///
|
403
|
-
|
411
|
+
/// Work Serializer under which LB policy actions take place.
|
412
|
+
std::shared_ptr<WorkSerializer> work_serializer_;
|
404
413
|
/// Owned pointer to interested parties in load balancing decisions.
|
405
414
|
grpc_pollset_set* interested_parties_;
|
406
415
|
/// Channel control helper.
|