grpc 1.28.0.pre2 → 1.31.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +8313 -11862
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security.h +30 -9
- data/include/grpc/grpc_security_constants.h +4 -0
- data/include/grpc/impl/codegen/grpc_types.h +23 -23
- data/include/grpc/impl/codegen/port_platform.h +6 -34
- data/include/grpc/module.modulemap +24 -39
- data/src/core/ext/filters/client_channel/backend_metric.cc +18 -12
- data/src/core/ext/filters/client_channel/client_channel.cc +618 -482
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
- 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 +9 -22
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +23 -14
- data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
- data/src/core/ext/filters/client_channel/lb_policy.h +44 -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 +297 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +311 -497
- 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 +9 -17
- 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 +117 -41
- 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 +1142 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +10 -7
- 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 +78 -61
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +41 -40
- 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 +22 -24
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +12 -10
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +79 -122
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +199 -163
- 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 +46 -45
- 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 +64 -12
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_registry.cc +19 -17
- data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +21 -22
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +19 -16
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +73 -217
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +45 -27
- 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_channel_arg_filter.cc +142 -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 +55 -25
- data/src/core/ext/filters/client_channel/subchannel.h +35 -11
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +1200 -246
- data/src/core/ext/filters/client_channel/xds/xds_api.h +130 -44
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +90 -29
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +9 -4
- 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 +839 -431
- data/src/core/ext/filters/client_channel/xds/xds_client.h +84 -33
- 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 +40 -28
- data/src/core/ext/filters/http/client/http_client_filter.cc +28 -33
- data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
- data/src/core/ext/filters/http/http_filters_plugin.cc +28 -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 +399 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +31 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +61 -88
- data/src/core/ext/filters/message_size/message_size_filter.h +10 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +386 -350
- 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/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +42 -26
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +25 -30
- 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_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
- 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.cc +25 -29
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
- 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 +27 -21
- data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +54 -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.c +4 -229
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -876
- 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 +429 -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 +198 -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 +388 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +1 -0
- 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 +23 -10
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +352 -310
- 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/circuit_breaker.upb.h +42 -34
- 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/filter.upb.h +7 -7
- 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/cluster/outlier_detection.upb.h +79 -61
- 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/address.upb.h +55 -49
- 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 +79 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +48 -27
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +258 -214
- 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/config_source.upb.h +51 -45
- 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 +71 -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/grpc_service.upb.h +107 -100
- 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 +157 -122
- 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/http_uri.upb.h +9 -9
- 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 +173 -73
- 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 +88 -0
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +2 -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.c +1 -0
- 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 +2 -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.c +1 -0
- 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.c +9 -6
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +53 -38
- 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/endpoint/load_report.upb.h +70 -62
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +1 -0
- 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.c +15 -10
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +95 -63
- 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.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +3 -2
- 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.c +1 -0
- 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.c +1 -0
- 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.c +1 -0
- 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.c +1 -0
- 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 +68 -46
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +770 -722
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +1 -0
- 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.c +1 -0
- 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 +2 -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.c +48 -28
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +305 -210
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +1 -0
- 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.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/discovery/v2/ads.upb.h +1 -2
- 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 +22 -16
- data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
- 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 +48 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +1 -0
- 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.c +1 -0
- 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.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +1 -0
- 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.c +1 -0
- 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 +12 -11
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +421 -389
- 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.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +64 -0
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
- data/src/core/ext/upb-generated/validate/validate.upb.c +21 -20
- data/src/core/ext/upb-generated/validate/validate.upb.h +569 -562
- 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/channel_trace.cc +2 -6
- data/src/core/lib/channel/channelz.cc +10 -21
- 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/log_linux.cc +6 -8
- data/src/core/lib/gpr/log_posix.cc +6 -8
- data/src/core/lib/gpr/spinlock.h +2 -3
- data/src/core/lib/gpr/string.cc +10 -33
- data/src/core/lib/gpr/string.h +4 -18
- 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/global_config_env.cc +8 -6
- 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/gprpp/sync.h +9 -0
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +15 -13
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +10 -10
- 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 +4 -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/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/error.cc +6 -9
- data/src/core/lib/iomgr/error.h +0 -1
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- 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 +25 -29
- data/src/core/lib/iomgr/ev_epollex_linux.cc +17 -24
- data/src/core/lib/iomgr/ev_poll_posix.cc +9 -8
- data/src/core/lib/iomgr/ev_posix.cc +4 -3
- data/src/core/lib/iomgr/exec_ctx.h +14 -2
- data/src/core/lib/iomgr/iomgr.cc +10 -0
- data/src/core/lib/iomgr/iomgr.h +10 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- 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 +2 -21
- 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 +42 -57
- 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 +16 -25
- data/src/core/lib/iomgr/resource_quota.cc +38 -37
- data/src/core/lib/iomgr/sockaddr_utils.cc +29 -33
- data/src/core/lib/iomgr/sockaddr_utils.h +10 -15
- 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 +102 -81
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -18
- data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +30 -36
- data/src/core/lib/iomgr/tcp_client_windows.cc +10 -11
- data/src/core/lib/iomgr/tcp_custom.cc +3 -4
- 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 +11 -23
- data/src/core/lib/iomgr/tcp_server_posix.cc +38 -44
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -8
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +10 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
- 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 +15 -15
- 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 +32 -36
- 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.h +3 -2
- data/src/core/lib/json/json_reader.cc +25 -26
- 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 +13 -62
- data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
- 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 +15 -17
- 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.cc +7 -4
- 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 +73 -54
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +9 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +19 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- 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.cc +23 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +48 -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 +17 -17
- 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.cc +2 -0
- data/src/core/lib/security/security_connector/security_connector.h +2 -2
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +38 -36
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +8 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +89 -21
- data/src/core/lib/security/security_connector/ssl_utils.h +18 -12
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +101 -72
- 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 +11 -11
- 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_intern.cc +2 -3
- data/src/core/lib/slice/slice_internal.h +15 -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 +42 -44
- 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 +304 -47
- data/src/core/lib/surface/completion_queue.h +8 -0
- 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.cc +2 -0
- data/src/core/lib/surface/init_secure.cc +1 -4
- data/src/core/lib/surface/server.cc +971 -837
- data/src/core/lib/surface/server.h +66 -12
- 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 +9 -2
- data/src/core/lib/transport/transport_op_string.cc +61 -102
- data/src/core/lib/uri/uri_parser.cc +8 -15
- data/src/core/lib/uri/uri_parser.h +2 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +24 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +31 -14
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +34 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
- 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 +154 -50
- data/src/core/tsi/ssl_transport_security.h +22 -10
- 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 +8 -3
- data/src/ruby/ext/grpc/extconf.rb +5 -2
- data/src/ruby/ext/grpc/rb_call.c +12 -3
- 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/errors.rb +103 -42
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/interceptors.rb +5 -5
- 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 +335 -297
- 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/derive_key.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/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 +385 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +56 -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/evp/evp_asn1.c +143 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -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 +25 -12
- 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 +434 -161
- 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 +18 -25
- 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 +104 -122
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +740 -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/util.c +3 -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/self_check/self_check.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +47 -16
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
- 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/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 +249 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1227 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +682 -0
- 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 +57 -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 +33 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +4 -3
- 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 +6 -2
- 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/evp.h +69 -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 +191 -79
- 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 +282 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +791 -715
- 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 +23 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +30 -22
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +21 -4
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +74 -54
- 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 +34 -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 +44 -5
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +51 -26
- 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 +129 -48
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +23 -75
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +55 -22
- 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
- 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 +122 -41
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1908
- 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
- data/third_party/upb/upb/generated_util.h +0 -105
@@ -26,6 +26,9 @@
|
|
26
26
|
#include <stdio.h>
|
27
27
|
#include <string.h>
|
28
28
|
|
29
|
+
#include "absl/strings/str_cat.h"
|
30
|
+
#include "absl/strings/str_join.h"
|
31
|
+
|
29
32
|
#include <grpc/support/alloc.h>
|
30
33
|
#include <grpc/support/log.h>
|
31
34
|
#include <grpc/support/string_util.h>
|
@@ -33,6 +36,7 @@
|
|
33
36
|
|
34
37
|
#include "src/core/ext/filters/client_channel/backup_poller.h"
|
35
38
|
#include "src/core/ext/filters/client_channel/http_connect_handshaker.h"
|
39
|
+
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
36
40
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
37
41
|
#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
|
38
42
|
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
@@ -46,10 +50,8 @@
|
|
46
50
|
#include "src/core/lib/channel/connected_channel.h"
|
47
51
|
#include "src/core/lib/channel/status_util.h"
|
48
52
|
#include "src/core/lib/gpr/string.h"
|
49
|
-
#include "src/core/lib/gprpp/inlined_vector.h"
|
50
53
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
51
54
|
#include "src/core/lib/gprpp/sync.h"
|
52
|
-
#include "src/core/lib/iomgr/combiner.h"
|
53
55
|
#include "src/core/lib/iomgr/iomgr.h"
|
54
56
|
#include "src/core/lib/iomgr/polling_entity.h"
|
55
57
|
#include "src/core/lib/profiling/timers.h"
|
@@ -109,67 +111,32 @@ class ResolvingLoadBalancingPolicy::ResolvingControlHelper
|
|
109
111
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
110
112
|
const grpc_channel_args& args) override {
|
111
113
|
if (parent_->resolver_ == nullptr) return nullptr; // Shutting down.
|
112
|
-
if (!CalledByCurrentChild() && !CalledByPendingChild()) return nullptr;
|
113
114
|
return parent_->channel_control_helper()->CreateSubchannel(args);
|
114
115
|
}
|
115
116
|
|
116
117
|
void UpdateState(grpc_connectivity_state state,
|
117
118
|
std::unique_ptr<SubchannelPicker> picker) override {
|
118
119
|
if (parent_->resolver_ == nullptr) return; // Shutting down.
|
119
|
-
// If this request is from the pending child policy, ignore it until
|
120
|
-
// it reports READY, at which point we swap it into place.
|
121
|
-
if (CalledByPendingChild()) {
|
122
|
-
if (GRPC_TRACE_FLAG_ENABLED(*(parent_->tracer_))) {
|
123
|
-
gpr_log(GPR_INFO,
|
124
|
-
"resolving_lb=%p helper=%p: pending child policy %p reports "
|
125
|
-
"state=%s",
|
126
|
-
parent_.get(), this, child_, ConnectivityStateName(state));
|
127
|
-
}
|
128
|
-
if (state != GRPC_CHANNEL_READY) return;
|
129
|
-
grpc_pollset_set_del_pollset_set(
|
130
|
-
parent_->lb_policy_->interested_parties(),
|
131
|
-
parent_->interested_parties());
|
132
|
-
parent_->lb_policy_ = std::move(parent_->pending_lb_policy_);
|
133
|
-
} else if (!CalledByCurrentChild()) {
|
134
|
-
// This request is from an outdated child, so ignore it.
|
135
|
-
return;
|
136
|
-
}
|
137
120
|
parent_->channel_control_helper()->UpdateState(state, std::move(picker));
|
138
121
|
}
|
139
122
|
|
140
123
|
void RequestReresolution() override {
|
141
|
-
|
142
|
-
// from the current child policy (or any outdated child).
|
143
|
-
if (parent_->pending_lb_policy_ != nullptr && !CalledByPendingChild()) {
|
144
|
-
return;
|
145
|
-
}
|
124
|
+
if (parent_->resolver_ == nullptr) return; // Shutting down.
|
146
125
|
if (GRPC_TRACE_FLAG_ENABLED(*(parent_->tracer_))) {
|
147
126
|
gpr_log(GPR_INFO, "resolving_lb=%p: started name re-resolving",
|
148
127
|
parent_.get());
|
149
128
|
}
|
150
|
-
|
151
|
-
parent_->resolver_->RequestReresolutionLocked();
|
152
|
-
}
|
129
|
+
parent_->resolver_->RequestReresolutionLocked();
|
153
130
|
}
|
154
131
|
|
155
|
-
void AddTraceEvent(TraceSeverity
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
private:
|
161
|
-
bool CalledByPendingChild() const {
|
162
|
-
GPR_ASSERT(child_ != nullptr);
|
163
|
-
return child_ == parent_->pending_lb_policy_.get();
|
132
|
+
void AddTraceEvent(TraceSeverity severity,
|
133
|
+
absl::string_view message) override {
|
134
|
+
if (parent_->resolver_ == nullptr) return; // Shutting down.
|
135
|
+
parent_->channel_control_helper()->AddTraceEvent(severity, message);
|
164
136
|
}
|
165
137
|
|
166
|
-
|
167
|
-
GPR_ASSERT(child_ != nullptr);
|
168
|
-
return child_ == parent_->lb_policy_.get();
|
169
|
-
};
|
170
|
-
|
138
|
+
private:
|
171
139
|
RefCountedPtr<ResolvingLoadBalancingPolicy> parent_;
|
172
|
-
LoadBalancingPolicy* child_ = nullptr;
|
173
140
|
};
|
174
141
|
|
175
142
|
//
|
@@ -178,16 +145,14 @@ class ResolvingLoadBalancingPolicy::ResolvingControlHelper
|
|
178
145
|
|
179
146
|
ResolvingLoadBalancingPolicy::ResolvingLoadBalancingPolicy(
|
180
147
|
Args args, TraceFlag* tracer, grpc_core::UniquePtr<char> target_uri,
|
181
|
-
|
182
|
-
void* process_resolver_result_user_data)
|
148
|
+
ChannelConfigHelper* helper)
|
183
149
|
: LoadBalancingPolicy(std::move(args)),
|
184
150
|
tracer_(tracer),
|
185
151
|
target_uri_(std::move(target_uri)),
|
186
|
-
|
187
|
-
|
188
|
-
GPR_ASSERT(process_resolver_result != nullptr);
|
152
|
+
helper_(helper) {
|
153
|
+
GPR_ASSERT(helper_ != nullptr);
|
189
154
|
resolver_ = ResolverRegistry::CreateResolver(
|
190
|
-
target_uri_.get(), args.args, interested_parties(),
|
155
|
+
target_uri_.get(), args.args, interested_parties(), work_serializer(),
|
191
156
|
absl::make_unique<ResolverResultHandler>(Ref()));
|
192
157
|
// Since the validity of args has been checked when create the channel,
|
193
158
|
// CreateResolver() must return a non-null result.
|
@@ -217,23 +182,11 @@ void ResolvingLoadBalancingPolicy::ShutdownLocked() {
|
|
217
182
|
interested_parties());
|
218
183
|
lb_policy_.reset();
|
219
184
|
}
|
220
|
-
if (pending_lb_policy_ != nullptr) {
|
221
|
-
if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
|
222
|
-
gpr_log(GPR_INFO, "resolving_lb=%p: shutting down pending lb_policy=%p",
|
223
|
-
this, pending_lb_policy_.get());
|
224
|
-
}
|
225
|
-
grpc_pollset_set_del_pollset_set(pending_lb_policy_->interested_parties(),
|
226
|
-
interested_parties());
|
227
|
-
pending_lb_policy_.reset();
|
228
|
-
}
|
229
185
|
}
|
230
186
|
}
|
231
187
|
|
232
188
|
void ResolvingLoadBalancingPolicy::ExitIdleLocked() {
|
233
|
-
if (lb_policy_ != nullptr)
|
234
|
-
lb_policy_->ExitIdleLocked();
|
235
|
-
if (pending_lb_policy_ != nullptr) pending_lb_policy_->ExitIdleLocked();
|
236
|
-
}
|
189
|
+
if (lb_policy_ != nullptr) lb_policy_->ExitIdleLocked();
|
237
190
|
}
|
238
191
|
|
239
192
|
void ResolvingLoadBalancingPolicy::ResetBackoffLocked() {
|
@@ -242,7 +195,6 @@ void ResolvingLoadBalancingPolicy::ResetBackoffLocked() {
|
|
242
195
|
resolver_->RequestReresolutionLocked();
|
243
196
|
}
|
244
197
|
if (lb_policy_ != nullptr) lb_policy_->ResetBackoffLocked();
|
245
|
-
if (pending_lb_policy_ != nullptr) pending_lb_policy_->ResetBackoffLocked();
|
246
198
|
}
|
247
199
|
|
248
200
|
void ResolvingLoadBalancingPolicy::OnResolverError(grpc_error* error) {
|
@@ -260,6 +212,7 @@ void ResolvingLoadBalancingPolicy::OnResolverError(grpc_error* error) {
|
|
260
212
|
if (lb_policy_ == nullptr) {
|
261
213
|
grpc_error* state_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
262
214
|
"Resolver transient failure", &error, 1);
|
215
|
+
helper_->ResolverTransientFailure(GRPC_ERROR_REF(state_error));
|
263
216
|
channel_control_helper()->UpdateState(
|
264
217
|
GRPC_CHANNEL_TRANSIENT_FAILURE,
|
265
218
|
absl::make_unique<TransientFailurePicker>(state_error));
|
@@ -269,132 +222,41 @@ void ResolvingLoadBalancingPolicy::OnResolverError(grpc_error* error) {
|
|
269
222
|
|
270
223
|
void ResolvingLoadBalancingPolicy::CreateOrUpdateLbPolicyLocked(
|
271
224
|
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config,
|
272
|
-
Resolver::Result result
|
273
|
-
//
|
274
|
-
// policy. When this happens, we leave child_policy_ as-is and store
|
275
|
-
// the new child policy in pending_child_policy_. Once the new child
|
276
|
-
// policy transitions into state READY, we swap it into child_policy_,
|
277
|
-
// replacing the original child policy. So pending_child_policy_ is
|
278
|
-
// non-null only between when we apply an update that changes the child
|
279
|
-
// policy name and when the new child reports state READY.
|
280
|
-
//
|
281
|
-
// Updates can arrive at any point during this transition. We always
|
282
|
-
// apply updates relative to the most recently created child policy,
|
283
|
-
// even if the most recent one is still in pending_child_policy_. This
|
284
|
-
// is true both when applying the updates to an existing child policy
|
285
|
-
// and when determining whether we need to create a new policy.
|
286
|
-
//
|
287
|
-
// As a result of this, there are several cases to consider here:
|
288
|
-
//
|
289
|
-
// 1. We have no existing child policy (i.e., we have started up but
|
290
|
-
// have not yet received a serverlist from the balancer or gone
|
291
|
-
// into fallback mode; in this case, both child_policy_ and
|
292
|
-
// pending_child_policy_ are null). In this case, we create a
|
293
|
-
// new child policy and store it in child_policy_.
|
294
|
-
//
|
295
|
-
// 2. We have an existing child policy and have no pending child policy
|
296
|
-
// from a previous update (i.e., either there has not been a
|
297
|
-
// previous update that changed the policy name, or we have already
|
298
|
-
// finished swapping in the new policy; in this case, child_policy_
|
299
|
-
// is non-null but pending_child_policy_ is null). In this case:
|
300
|
-
// a. If child_policy_->name() equals child_policy_name, then we
|
301
|
-
// update the existing child policy.
|
302
|
-
// b. If child_policy_->name() does not equal child_policy_name,
|
303
|
-
// we create a new policy. The policy will be stored in
|
304
|
-
// pending_child_policy_ and will later be swapped into
|
305
|
-
// child_policy_ by the helper when the new child transitions
|
306
|
-
// into state READY.
|
307
|
-
//
|
308
|
-
// 3. We have an existing child policy and have a pending child policy
|
309
|
-
// from a previous update (i.e., a previous update set
|
310
|
-
// pending_child_policy_ as per case 2b above and that policy has
|
311
|
-
// not yet transitioned into state READY and been swapped into
|
312
|
-
// child_policy_; in this case, both child_policy_ and
|
313
|
-
// pending_child_policy_ are non-null). In this case:
|
314
|
-
// a. If pending_child_policy_->name() equals child_policy_name,
|
315
|
-
// then we update the existing pending child policy.
|
316
|
-
// b. If pending_child_policy->name() does not equal
|
317
|
-
// child_policy_name, then we create a new policy. The new
|
318
|
-
// policy is stored in pending_child_policy_ (replacing the one
|
319
|
-
// that was there before, which will be immediately shut down)
|
320
|
-
// and will later be swapped into child_policy_ by the helper
|
321
|
-
// when the new child transitions into state READY.
|
322
|
-
const char* lb_policy_name = lb_policy_config->name();
|
323
|
-
const bool create_policy =
|
324
|
-
// case 1
|
325
|
-
lb_policy_ == nullptr ||
|
326
|
-
// case 2b
|
327
|
-
(pending_lb_policy_ == nullptr &&
|
328
|
-
strcmp(lb_policy_->name(), lb_policy_name) != 0) ||
|
329
|
-
// case 3b
|
330
|
-
(pending_lb_policy_ != nullptr &&
|
331
|
-
strcmp(pending_lb_policy_->name(), lb_policy_name) != 0);
|
332
|
-
LoadBalancingPolicy* policy_to_update = nullptr;
|
333
|
-
if (create_policy) {
|
334
|
-
// Cases 1, 2b, and 3b: create a new child policy.
|
335
|
-
// If lb_policy_ is null, we set it (case 1), else we set
|
336
|
-
// pending_lb_policy_ (cases 2b and 3b).
|
337
|
-
if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
|
338
|
-
gpr_log(GPR_INFO, "resolving_lb=%p: Creating new %schild policy %s", this,
|
339
|
-
lb_policy_ == nullptr ? "" : "pending ", lb_policy_name);
|
340
|
-
}
|
341
|
-
auto& lb_policy = lb_policy_ == nullptr ? lb_policy_ : pending_lb_policy_;
|
342
|
-
lb_policy =
|
343
|
-
CreateLbPolicyLocked(lb_policy_name, *result.args, trace_strings);
|
344
|
-
policy_to_update = lb_policy.get();
|
345
|
-
} else {
|
346
|
-
// Cases 2a and 3a: update an existing policy.
|
347
|
-
// If we have a pending child policy, send the update to the pending
|
348
|
-
// policy (case 3a), else send it to the current policy (case 2a).
|
349
|
-
policy_to_update = pending_lb_policy_ != nullptr ? pending_lb_policy_.get()
|
350
|
-
: lb_policy_.get();
|
351
|
-
}
|
352
|
-
GPR_ASSERT(policy_to_update != nullptr);
|
353
|
-
// Update the policy.
|
354
|
-
if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
|
355
|
-
gpr_log(GPR_INFO, "resolving_lb=%p: Updating %schild policy %p", this,
|
356
|
-
policy_to_update == pending_lb_policy_.get() ? "pending " : "",
|
357
|
-
policy_to_update);
|
358
|
-
}
|
225
|
+
Resolver::Result result) {
|
226
|
+
// Construct update.
|
359
227
|
UpdateArgs update_args;
|
360
228
|
update_args.addresses = std::move(result.addresses);
|
361
229
|
update_args.config = std::move(lb_policy_config);
|
362
230
|
// TODO(roth): Once channel args is converted to C++, use std::move() here.
|
363
231
|
update_args.args = result.args;
|
364
232
|
result.args = nullptr;
|
365
|
-
|
233
|
+
// Create policy if needed.
|
234
|
+
if (lb_policy_ == nullptr) {
|
235
|
+
lb_policy_ = CreateLbPolicyLocked(*update_args.args);
|
236
|
+
}
|
237
|
+
// Update the policy.
|
238
|
+
if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
|
239
|
+
gpr_log(GPR_INFO, "resolving_lb=%p: Updating child policy %p", this,
|
240
|
+
lb_policy_.get());
|
241
|
+
}
|
242
|
+
lb_policy_->UpdateLocked(std::move(update_args));
|
366
243
|
}
|
367
244
|
|
368
245
|
// Creates a new LB policy.
|
369
|
-
// Updates trace_strings to indicate what was done.
|
370
246
|
OrphanablePtr<LoadBalancingPolicy>
|
371
247
|
ResolvingLoadBalancingPolicy::CreateLbPolicyLocked(
|
372
|
-
const
|
373
|
-
TraceStringVector* trace_strings) {
|
374
|
-
ResolvingControlHelper* helper = new ResolvingControlHelper(Ref());
|
248
|
+
const grpc_channel_args& args) {
|
375
249
|
LoadBalancingPolicy::Args lb_policy_args;
|
376
|
-
lb_policy_args.
|
250
|
+
lb_policy_args.work_serializer = work_serializer();
|
377
251
|
lb_policy_args.channel_control_helper =
|
378
|
-
|
252
|
+
absl::make_unique<ResolvingControlHelper>(Ref());
|
379
253
|
lb_policy_args.args = &args;
|
380
254
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
381
|
-
|
382
|
-
lb_policy_name, std::move(lb_policy_args));
|
383
|
-
if (GPR_UNLIKELY(lb_policy == nullptr)) {
|
384
|
-
gpr_log(GPR_ERROR, "could not create LB policy \"%s\"", lb_policy_name);
|
385
|
-
char* str;
|
386
|
-
gpr_asprintf(&str, "Could not create LB policy \"%s\"", lb_policy_name);
|
387
|
-
trace_strings->push_back(str);
|
388
|
-
return nullptr;
|
389
|
-
}
|
390
|
-
helper->set_child(lb_policy.get());
|
255
|
+
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args), tracer_);
|
391
256
|
if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
|
392
|
-
gpr_log(GPR_INFO, "resolving_lb=%p: created new LB policy
|
393
|
-
|
257
|
+
gpr_log(GPR_INFO, "resolving_lb=%p: created new LB policy %p", this,
|
258
|
+
lb_policy.get());
|
394
259
|
}
|
395
|
-
char* str;
|
396
|
-
gpr_asprintf(&str, "Created new LB policy \"%s\"", lb_policy_name);
|
397
|
-
trace_strings->push_back(str);
|
398
260
|
grpc_pollset_set_add_pollset_set(lb_policy->interested_parties(),
|
399
261
|
interested_parties());
|
400
262
|
return lb_policy;
|
@@ -404,31 +266,21 @@ void ResolvingLoadBalancingPolicy::MaybeAddTraceMessagesForAddressChangesLocked(
|
|
404
266
|
bool resolution_contains_addresses, TraceStringVector* trace_strings) {
|
405
267
|
if (!resolution_contains_addresses &&
|
406
268
|
previous_resolution_contained_addresses_) {
|
407
|
-
trace_strings->push_back(
|
269
|
+
trace_strings->push_back("Address list became empty");
|
408
270
|
} else if (resolution_contains_addresses &&
|
409
271
|
!previous_resolution_contained_addresses_) {
|
410
|
-
trace_strings->push_back(
|
272
|
+
trace_strings->push_back("Address list became non-empty");
|
411
273
|
}
|
412
274
|
previous_resolution_contained_addresses_ = resolution_contains_addresses;
|
413
275
|
}
|
414
276
|
|
415
277
|
void ResolvingLoadBalancingPolicy::ConcatenateAndAddChannelTraceLocked(
|
416
|
-
TraceStringVector
|
417
|
-
if (!trace_strings
|
418
|
-
|
419
|
-
|
420
|
-
gpr_strvec_add(&v, gpr_strdup("Resolution event: "));
|
421
|
-
bool is_first = 1;
|
422
|
-
for (size_t i = 0; i < trace_strings->size(); ++i) {
|
423
|
-
if (!is_first) gpr_strvec_add(&v, gpr_strdup(", "));
|
424
|
-
is_first = false;
|
425
|
-
gpr_strvec_add(&v, (*trace_strings)[i]);
|
426
|
-
}
|
427
|
-
size_t len = 0;
|
428
|
-
grpc_core::UniquePtr<char> message(gpr_strvec_flatten(&v, &len));
|
278
|
+
const TraceStringVector& trace_strings) const {
|
279
|
+
if (!trace_strings.empty()) {
|
280
|
+
std::string message =
|
281
|
+
absl::StrCat("Resolution event: ", absl::StrJoin(trace_strings, ", "));
|
429
282
|
channel_control_helper()->AddTraceEvent(ChannelControlHelper::TRACE_INFO,
|
430
|
-
|
431
|
-
gpr_strvec_destroy(&v);
|
283
|
+
message);
|
432
284
|
}
|
433
285
|
}
|
434
286
|
|
@@ -451,47 +303,51 @@ void ResolvingLoadBalancingPolicy::OnResolverResultChangedLocked(
|
|
451
303
|
TraceStringVector trace_strings;
|
452
304
|
const bool resolution_contains_addresses = result.addresses.size() > 0;
|
453
305
|
// Process the resolver result.
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
bool no_valid_service_config = false;
|
460
|
-
service_config_changed = process_resolver_result_(
|
461
|
-
process_resolver_result_user_data_, result, &lb_policy_config,
|
462
|
-
&service_config_error, &no_valid_service_config);
|
463
|
-
if (service_config_error != GRPC_ERROR_NONE) {
|
464
|
-
service_config_error_string =
|
465
|
-
gpr_strdup(grpc_error_string(service_config_error));
|
466
|
-
if (no_valid_service_config) {
|
306
|
+
ChannelConfigHelper::ApplyServiceConfigResult service_config_result;
|
307
|
+
if (helper_ != nullptr) {
|
308
|
+
service_config_result = helper_->ApplyServiceConfig(result);
|
309
|
+
if (service_config_result.service_config_error != GRPC_ERROR_NONE) {
|
310
|
+
if (service_config_result.no_valid_service_config) {
|
467
311
|
// We received an invalid service config and we don't have a
|
468
312
|
// fallback service config.
|
469
|
-
OnResolverError(service_config_error);
|
470
|
-
|
471
|
-
GRPC_ERROR_UNREF(service_config_error);
|
313
|
+
OnResolverError(service_config_result.service_config_error);
|
314
|
+
service_config_result.service_config_error = GRPC_ERROR_NONE;
|
472
315
|
}
|
473
316
|
}
|
474
317
|
} else {
|
475
|
-
lb_policy_config = child_lb_config_;
|
318
|
+
service_config_result.lb_policy_config = child_lb_config_;
|
319
|
+
}
|
320
|
+
// Before we send the args to the LB policy, grab the ConfigSelector for
|
321
|
+
// later use.
|
322
|
+
RefCountedPtr<ConfigSelector> config_selector =
|
323
|
+
ConfigSelector::GetFromChannelArgs(*result.args);
|
324
|
+
// Create or update LB policy, as needed.
|
325
|
+
if (service_config_result.lb_policy_config != nullptr) {
|
326
|
+
CreateOrUpdateLbPolicyLocked(
|
327
|
+
std::move(service_config_result.lb_policy_config), std::move(result));
|
476
328
|
}
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
329
|
+
// Apply ConfigSelector to channel.
|
330
|
+
// This needs to happen after the LB policy has been updated, since
|
331
|
+
// the ConfigSelector may need the LB policy to know about new
|
332
|
+
// destinations before it can send RPCs to those destinations.
|
333
|
+
if (helper_ != nullptr) {
|
334
|
+
helper_->ApplyConfigSelector(service_config_result.service_config_changed,
|
335
|
+
std::move(config_selector));
|
481
336
|
}
|
482
337
|
// Add channel trace event.
|
483
|
-
if (service_config_changed) {
|
338
|
+
if (service_config_result.service_config_changed) {
|
484
339
|
// TODO(ncteisen): might be worth somehow including a snippet of the
|
485
340
|
// config in the trace, at the risk of bloating the trace logs.
|
486
|
-
trace_strings.push_back(
|
341
|
+
trace_strings.push_back("Service config changed");
|
487
342
|
}
|
488
|
-
if (
|
489
|
-
trace_strings.push_back(
|
490
|
-
|
343
|
+
if (service_config_result.service_config_error != GRPC_ERROR_NONE) {
|
344
|
+
trace_strings.push_back(
|
345
|
+
grpc_error_string(service_config_result.service_config_error));
|
491
346
|
}
|
492
347
|
MaybeAddTraceMessagesForAddressChangesLocked(resolution_contains_addresses,
|
493
348
|
&trace_strings);
|
494
|
-
ConcatenateAndAddChannelTraceLocked(
|
349
|
+
ConcatenateAndAddChannelTraceLocked(trace_strings);
|
350
|
+
GRPC_ERROR_UNREF(service_config_result.service_config_error);
|
495
351
|
}
|
496
352
|
|
497
353
|
} // namespace grpc_core
|
@@ -21,13 +21,15 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include "absl/container/inlined_vector.h"
|
25
|
+
|
26
|
+
#include "src/core/ext/filters/client_channel/config_selector.h"
|
24
27
|
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
25
28
|
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
26
29
|
#include "src/core/ext/filters/client_channel/resolver.h"
|
27
30
|
#include "src/core/lib/channel/channel_args.h"
|
28
31
|
#include "src/core/lib/channel/channel_stack.h"
|
29
32
|
#include "src/core/lib/debug/trace.h"
|
30
|
-
#include "src/core/lib/gprpp/inlined_vector.h"
|
31
33
|
#include "src/core/lib/gprpp/orphanable.h"
|
32
34
|
#include "src/core/lib/iomgr/call_combiner.h"
|
33
35
|
#include "src/core/lib/iomgr/closure.h"
|
@@ -51,22 +53,39 @@ namespace grpc_core {
|
|
51
53
|
// child LB policy and config to use.
|
52
54
|
class ResolvingLoadBalancingPolicy : public LoadBalancingPolicy {
|
53
55
|
public:
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
56
|
+
class ChannelConfigHelper {
|
57
|
+
public:
|
58
|
+
struct ApplyServiceConfigResult {
|
59
|
+
// Set to true if the service config has changed since the last result.
|
60
|
+
bool service_config_changed = false;
|
61
|
+
// Set to true if we don't have a valid service config to use.
|
62
|
+
// This tells the ResolvingLoadBalancingPolicy to put the channel
|
63
|
+
// into TRANSIENT_FAILURE.
|
64
|
+
bool no_valid_service_config = false;
|
65
|
+
// A service config parsing error occurred.
|
66
|
+
grpc_error* service_config_error = GRPC_ERROR_NONE;
|
67
|
+
// The LB policy config to use.
|
68
|
+
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config;
|
69
|
+
};
|
70
|
+
|
71
|
+
virtual ~ChannelConfigHelper() = default;
|
72
|
+
|
73
|
+
// Applies the service config to the channel.
|
74
|
+
virtual ApplyServiceConfigResult ApplyServiceConfig(
|
75
|
+
const Resolver::Result& result) = 0;
|
76
|
+
|
77
|
+
// Applies the ConfigSelector to the channel.
|
78
|
+
virtual void ApplyConfigSelector(
|
79
|
+
bool service_config_changed,
|
80
|
+
RefCountedPtr<ConfigSelector> config_selector) = 0;
|
81
|
+
|
82
|
+
// Indicates a resolver transient failure.
|
83
|
+
virtual void ResolverTransientFailure(grpc_error* error) = 0;
|
84
|
+
};
|
85
|
+
|
86
|
+
ResolvingLoadBalancingPolicy(Args args, TraceFlag* tracer,
|
87
|
+
grpc_core::UniquePtr<char> target_uri,
|
88
|
+
ChannelConfigHelper* helper);
|
70
89
|
|
71
90
|
virtual const char* name() const override { return "resolving_lb"; }
|
72
91
|
|
@@ -80,7 +99,7 @@ class ResolvingLoadBalancingPolicy : public LoadBalancingPolicy {
|
|
80
99
|
void ResetBackoffLocked() override;
|
81
100
|
|
82
101
|
private:
|
83
|
-
using TraceStringVector = InlinedVector<char*, 3>;
|
102
|
+
using TraceStringVector = absl::InlinedVector<const char*, 3>;
|
84
103
|
|
85
104
|
class ResolverResultHandler;
|
86
105
|
class ResolvingControlHelper;
|
@@ -92,31 +111,30 @@ class ResolvingLoadBalancingPolicy : public LoadBalancingPolicy {
|
|
92
111
|
void OnResolverError(grpc_error* error);
|
93
112
|
void CreateOrUpdateLbPolicyLocked(
|
94
113
|
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config,
|
95
|
-
Resolver::Result result
|
114
|
+
Resolver::Result result);
|
96
115
|
OrphanablePtr<LoadBalancingPolicy> CreateLbPolicyLocked(
|
97
|
-
const
|
98
|
-
TraceStringVector* trace_strings);
|
116
|
+
const grpc_channel_args& args);
|
99
117
|
void MaybeAddTraceMessagesForAddressChangesLocked(
|
100
118
|
bool resolution_contains_addresses, TraceStringVector* trace_strings);
|
101
119
|
void ConcatenateAndAddChannelTraceLocked(
|
102
|
-
TraceStringVector
|
120
|
+
const TraceStringVector& trace_strings) const;
|
103
121
|
void OnResolverResultChangedLocked(Resolver::Result result);
|
104
122
|
|
105
123
|
// Passed in from caller at construction time.
|
106
124
|
TraceFlag* tracer_;
|
107
125
|
grpc_core::UniquePtr<char> target_uri_;
|
108
|
-
|
109
|
-
void* process_resolver_result_user_data_ = nullptr;
|
110
|
-
grpc_core::UniquePtr<char> child_policy_name_;
|
111
|
-
RefCountedPtr<LoadBalancingPolicy::Config> child_lb_config_;
|
126
|
+
ChannelConfigHelper* helper_;
|
112
127
|
|
113
128
|
// Resolver and associated state.
|
114
129
|
OrphanablePtr<Resolver> resolver_;
|
115
130
|
bool previous_resolution_contained_addresses_ = false;
|
116
131
|
|
132
|
+
// Determined by resolver results.
|
133
|
+
grpc_core::UniquePtr<char> child_policy_name_;
|
134
|
+
RefCountedPtr<LoadBalancingPolicy::Config> child_lb_config_;
|
135
|
+
|
117
136
|
// Child LB policy.
|
118
137
|
OrphanablePtr<LoadBalancingPolicy> lb_policy_;
|
119
|
-
OrphanablePtr<LoadBalancingPolicy> pending_lb_policy_;
|
120
138
|
};
|
121
139
|
|
122
140
|
} // namespace grpc_core
|