grpc 1.28.0.pre2 → 1.31.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
@@ -21,18 +21,19 @@
|
|
|
21
21
|
|
|
22
22
|
#include <set>
|
|
23
23
|
|
|
24
|
+
#include "absl/strings/string_view.h"
|
|
25
|
+
#include "absl/types/optional.h"
|
|
26
|
+
|
|
24
27
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
|
25
28
|
#include "src/core/ext/filters/client_channel/xds/xds_api.h"
|
|
26
29
|
#include "src/core/ext/filters/client_channel/xds/xds_bootstrap.h"
|
|
27
30
|
#include "src/core/ext/filters/client_channel/xds/xds_client_stats.h"
|
|
28
31
|
#include "src/core/lib/gprpp/map.h"
|
|
29
32
|
#include "src/core/lib/gprpp/memory.h"
|
|
30
|
-
#include "src/core/lib/gprpp/optional.h"
|
|
31
33
|
#include "src/core/lib/gprpp/orphanable.h"
|
|
32
34
|
#include "src/core/lib/gprpp/ref_counted.h"
|
|
33
35
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
|
34
|
-
#include "src/core/lib/
|
|
35
|
-
#include "src/core/lib/iomgr/combiner.h"
|
|
36
|
+
#include "src/core/lib/iomgr/work_serializer.h"
|
|
36
37
|
|
|
37
38
|
namespace grpc_core {
|
|
38
39
|
|
|
@@ -49,6 +50,8 @@ class XdsClient : public InternallyRefCounted
|
|
|
49
50
|
RefCountedPtr<ServiceConfig> service_config) = 0;
|
|
50
51
|
|
|
51
52
|
virtual void OnError(grpc_error* error) = 0;
|
|
53
|
+
|
|
54
|
+
virtual void OnResourceDoesNotExist() = 0;
|
|
52
55
|
};
|
|
53
56
|
|
|
54
57
|
// Cluster data watcher interface. Implemented by callers.
|
|
@@ -59,6 +62,8 @@ class XdsClient : public InternallyRefCounted
|
|
|
59
62
|
virtual void OnClusterChanged(XdsApi::CdsUpdate cluster_data) = 0;
|
|
60
63
|
|
|
61
64
|
virtual void OnError(grpc_error* error) = 0;
|
|
65
|
+
|
|
66
|
+
virtual void OnResourceDoesNotExist() = 0;
|
|
62
67
|
};
|
|
63
68
|
|
|
64
69
|
// Endpoint data watcher interface. Implemented by callers.
|
|
@@ -69,12 +74,14 @@ class XdsClient : public InternallyRefCounted
|
|
|
69
74
|
virtual void OnEndpointChanged(XdsApi::EdsUpdate update) = 0;
|
|
70
75
|
|
|
71
76
|
virtual void OnError(grpc_error* error) = 0;
|
|
77
|
+
|
|
78
|
+
virtual void OnResourceDoesNotExist() = 0;
|
|
72
79
|
};
|
|
73
80
|
|
|
74
81
|
// If *error is not GRPC_ERROR_NONE after construction, then there was
|
|
75
82
|
// an error initializing the client.
|
|
76
|
-
XdsClient(
|
|
77
|
-
|
|
83
|
+
XdsClient(std::shared_ptr<WorkSerializer> work_serializer,
|
|
84
|
+
grpc_pollset_set* interested_parties, absl::string_view server_name,
|
|
78
85
|
std::unique_ptr<ServiceConfigWatcherInterface> watcher,
|
|
79
86
|
const grpc_channel_args& channel_args, grpc_error** error);
|
|
80
87
|
~XdsClient();
|
|
@@ -86,38 +93,45 @@ class XdsClient : public InternallyRefCounted
|
|
|
86
93
|
// keep a raw pointer to the watcher, which may be used only for
|
|
87
94
|
// cancellation. (Because the caller does not own the watcher, the
|
|
88
95
|
// pointer must not be used for any other purpose.)
|
|
89
|
-
|
|
96
|
+
// If the caller is going to start a new watch after cancelling the
|
|
97
|
+
// old one, it should set delay_unsubscription to true.
|
|
98
|
+
void WatchClusterData(absl::string_view cluster_name,
|
|
90
99
|
std::unique_ptr<ClusterWatcherInterface> watcher);
|
|
91
|
-
void CancelClusterDataWatch(
|
|
92
|
-
ClusterWatcherInterface* watcher
|
|
100
|
+
void CancelClusterDataWatch(absl::string_view cluster_name,
|
|
101
|
+
ClusterWatcherInterface* watcher,
|
|
102
|
+
bool delay_unsubscription = false);
|
|
93
103
|
|
|
94
104
|
// Start and cancel endpoint data watch for a cluster.
|
|
95
105
|
// The XdsClient takes ownership of the watcher, but the caller may
|
|
96
106
|
// keep a raw pointer to the watcher, which may be used only for
|
|
97
107
|
// cancellation. (Because the caller does not own the watcher, the
|
|
98
108
|
// pointer must not be used for any other purpose.)
|
|
99
|
-
|
|
109
|
+
// If the caller is going to start a new watch after cancelling the
|
|
110
|
+
// old one, it should set delay_unsubscription to true.
|
|
111
|
+
void WatchEndpointData(absl::string_view eds_service_name,
|
|
100
112
|
std::unique_ptr<EndpointWatcherInterface> watcher);
|
|
101
|
-
void CancelEndpointDataWatch(
|
|
102
|
-
EndpointWatcherInterface* watcher
|
|
113
|
+
void CancelEndpointDataWatch(absl::string_view eds_service_name,
|
|
114
|
+
EndpointWatcherInterface* watcher,
|
|
115
|
+
bool delay_unsubscription = false);
|
|
103
116
|
|
|
104
117
|
// Adds and removes drop stats for cluster_name and eds_service_name.
|
|
105
118
|
RefCountedPtr<XdsClusterDropStats> AddClusterDropStats(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
void RemoveClusterDropStats(
|
|
109
|
-
|
|
110
|
-
|
|
119
|
+
absl::string_view lrs_server, absl::string_view cluster_name,
|
|
120
|
+
absl::string_view eds_service_name);
|
|
121
|
+
void RemoveClusterDropStats(absl::string_view /*lrs_server*/,
|
|
122
|
+
absl::string_view cluster_name,
|
|
123
|
+
absl::string_view eds_service_name,
|
|
111
124
|
XdsClusterDropStats* cluster_drop_stats);
|
|
112
125
|
|
|
113
126
|
// Adds and removes locality stats for cluster_name and eds_service_name
|
|
114
127
|
// for the specified locality.
|
|
115
128
|
RefCountedPtr<XdsClusterLocalityStats> AddClusterLocalityStats(
|
|
116
|
-
|
|
117
|
-
|
|
129
|
+
absl::string_view lrs_server, absl::string_view cluster_name,
|
|
130
|
+
absl::string_view eds_service_name,
|
|
131
|
+
RefCountedPtr<XdsLocalityName> locality);
|
|
118
132
|
void RemoveClusterLocalityStats(
|
|
119
|
-
|
|
120
|
-
|
|
133
|
+
absl::string_view /*lrs_server*/, absl::string_view cluster_name,
|
|
134
|
+
absl::string_view eds_service_name,
|
|
121
135
|
const RefCountedPtr<XdsLocalityName>& locality,
|
|
122
136
|
XdsClusterLocalityStats* cluster_locality_stats);
|
|
123
137
|
|
|
@@ -128,6 +142,8 @@ class XdsClient : public InternallyRefCounted
|
|
|
128
142
|
grpc_arg MakeChannelArg() const;
|
|
129
143
|
static RefCountedPtr<XdsClient> GetFromChannelArgs(
|
|
130
144
|
const grpc_channel_args& args);
|
|
145
|
+
static grpc_channel_args* RemoveFromChannelArgs(
|
|
146
|
+
const grpc_channel_args& args);
|
|
131
147
|
|
|
132
148
|
private:
|
|
133
149
|
// Contains a channel to the xds server and all the data related to the
|
|
@@ -167,7 +183,8 @@ class XdsClient : public InternallyRefCounted
|
|
|
167
183
|
void CancelConnectivityWatchLocked();
|
|
168
184
|
|
|
169
185
|
void Subscribe(const std::string& type_url, const std::string& name);
|
|
170
|
-
void Unsubscribe(const std::string& type_url, const std::string& name
|
|
186
|
+
void Unsubscribe(const std::string& type_url, const std::string& name,
|
|
187
|
+
bool delay_unsubscription);
|
|
171
188
|
|
|
172
189
|
private:
|
|
173
190
|
class StateWatcher;
|
|
@@ -189,7 +206,7 @@ class XdsClient : public InternallyRefCounted
|
|
|
189
206
|
std::map<ClusterWatcherInterface*, std::unique_ptr<ClusterWatcherInterface>>
|
|
190
207
|
watchers;
|
|
191
208
|
// The latest data seen from CDS.
|
|
192
|
-
|
|
209
|
+
absl::optional<XdsApi::CdsUpdate> update;
|
|
193
210
|
};
|
|
194
211
|
|
|
195
212
|
struct EndpointState {
|
|
@@ -197,12 +214,18 @@ class XdsClient : public InternallyRefCounted
|
|
|
197
214
|
std::unique_ptr<EndpointWatcherInterface>>
|
|
198
215
|
watchers;
|
|
199
216
|
// The latest data seen from EDS.
|
|
200
|
-
XdsApi::EdsUpdate update;
|
|
217
|
+
absl::optional<XdsApi::EdsUpdate> update;
|
|
201
218
|
};
|
|
202
219
|
|
|
203
220
|
struct LoadReportState {
|
|
221
|
+
struct LocalityState {
|
|
222
|
+
std::set<XdsClusterLocalityStats*> locality_stats;
|
|
223
|
+
std::vector<XdsClusterLocalityStats::Snapshot> deleted_locality_stats;
|
|
224
|
+
};
|
|
225
|
+
|
|
204
226
|
std::set<XdsClusterDropStats*> drop_stats;
|
|
205
|
-
|
|
227
|
+
XdsClusterDropStats::DroppedRequestsMap deleted_drop_stats;
|
|
228
|
+
std::map<RefCountedPtr<XdsLocalityName>, LocalityState,
|
|
206
229
|
XdsLocalityName::Less>
|
|
207
230
|
locality_stats;
|
|
208
231
|
grpc_millis last_report_time = ExecCtx::Get()->Now();
|
|
@@ -211,11 +234,22 @@ class XdsClient : public InternallyRefCounted
|
|
|
211
234
|
// Sends an error notification to all watchers.
|
|
212
235
|
void NotifyOnError(grpc_error* error);
|
|
213
236
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
237
|
+
// Returns the weighted_clusters action name to use from
|
|
238
|
+
// weighted_cluster_index_map_ for a WeightedClusters route action.
|
|
239
|
+
std::string WeightedClustersActionName(
|
|
240
|
+
const std::vector<XdsApi::RdsUpdate::RdsRoute::ClusterWeight>&
|
|
241
|
+
weighted_clusters);
|
|
217
242
|
|
|
218
|
-
|
|
243
|
+
// Updates weighted_cluster_index_map_ that will
|
|
244
|
+
// determine the names of the WeightedCluster actions for the current update.
|
|
245
|
+
void UpdateWeightedClusterIndexMap(const XdsApi::RdsUpdate& rds_update);
|
|
246
|
+
|
|
247
|
+
// Create the service config generated by the RdsUpdate.
|
|
248
|
+
grpc_error* CreateServiceConfig(const XdsApi::RdsUpdate& rds_update,
|
|
249
|
+
RefCountedPtr<ServiceConfig>* service_config);
|
|
250
|
+
|
|
251
|
+
XdsApi::ClusterLoadReportMap BuildLoadReportSnapshot(
|
|
252
|
+
bool send_all_clusters, const std::set<std::string>& clusters);
|
|
219
253
|
|
|
220
254
|
// Channel arg vtable functions.
|
|
221
255
|
static void* ChannelArgCopy(void* p);
|
|
@@ -226,7 +260,7 @@ class XdsClient : public InternallyRefCounted
|
|
|
226
260
|
|
|
227
261
|
const grpc_millis request_timeout_;
|
|
228
262
|
|
|
229
|
-
|
|
263
|
+
std::shared_ptr<WorkSerializer> work_serializer_;
|
|
230
264
|
grpc_pollset_set* interested_parties_;
|
|
231
265
|
|
|
232
266
|
std::unique_ptr<XdsBootstrap> bootstrap_;
|
|
@@ -239,17 +273,34 @@ class XdsClient : public InternallyRefCounted
|
|
|
239
273
|
// The channel for communicating with the xds server.
|
|
240
274
|
OrphanablePtr<ChannelState> chand_;
|
|
241
275
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
276
|
+
absl::optional<XdsApi::LdsUpdate> lds_result_;
|
|
277
|
+
absl::optional<XdsApi::RdsUpdate> rds_result_;
|
|
278
|
+
|
|
279
|
+
// One entry for each watched CDS resource.
|
|
245
280
|
std::map<std::string /*cluster_name*/, ClusterState> cluster_map_;
|
|
246
|
-
//
|
|
281
|
+
// One entry for each watched EDS resource.
|
|
247
282
|
std::map<std::string /*eds_service_name*/, EndpointState> endpoint_map_;
|
|
248
283
|
std::map<
|
|
249
284
|
std::pair<std::string /*cluster_name*/, std::string /*eds_service_name*/>,
|
|
250
285
|
LoadReportState>
|
|
251
286
|
load_report_map_;
|
|
252
287
|
|
|
288
|
+
// 2-level map to store WeightedCluster action names.
|
|
289
|
+
// Top level map is keyed by cluster names without weight like a_b_c; bottom
|
|
290
|
+
// level map is keyed by cluster names + weights like a10_b50_c40.
|
|
291
|
+
struct ClusterNamesInfo {
|
|
292
|
+
uint64_t next_index = 0;
|
|
293
|
+
std::map<std::string /*cluster names + weights*/,
|
|
294
|
+
uint64_t /*policy index number*/>
|
|
295
|
+
cluster_weights_map;
|
|
296
|
+
};
|
|
297
|
+
using WeightedClusterIndexMap =
|
|
298
|
+
std::map<std::string /*cluster names*/, ClusterNamesInfo>;
|
|
299
|
+
|
|
300
|
+
// Cache of action names for WeightedCluster targets in the current
|
|
301
|
+
// service config.
|
|
302
|
+
WeightedClusterIndexMap weighted_cluster_index_map_;
|
|
303
|
+
|
|
253
304
|
bool shutting_down_ = false;
|
|
254
305
|
};
|
|
255
306
|
|
|
@@ -34,9 +34,9 @@ namespace grpc_core {
|
|
|
34
34
|
//
|
|
35
35
|
|
|
36
36
|
XdsClusterDropStats::XdsClusterDropStats(RefCountedPtr<XdsClient> xds_client,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
absl::string_view lrs_server_name,
|
|
38
|
+
absl::string_view cluster_name,
|
|
39
|
+
absl::string_view eds_service_name)
|
|
40
40
|
: xds_client_(std::move(xds_client)),
|
|
41
41
|
lrs_server_name_(lrs_server_name),
|
|
42
42
|
cluster_name_(cluster_name),
|
|
@@ -64,8 +64,8 @@ void XdsClusterDropStats::AddCallDropped(const std::string& category) {
|
|
|
64
64
|
//
|
|
65
65
|
|
|
66
66
|
XdsClusterLocalityStats::XdsClusterLocalityStats(
|
|
67
|
-
RefCountedPtr<XdsClient> xds_client,
|
|
68
|
-
|
|
67
|
+
RefCountedPtr<XdsClient> xds_client, absl::string_view lrs_server_name,
|
|
68
|
+
absl::string_view cluster_name, absl::string_view eds_service_name,
|
|
69
69
|
RefCountedPtr<XdsLocalityName> name)
|
|
70
70
|
: xds_client_(std::move(xds_client)),
|
|
71
71
|
lrs_server_name_(lrs_server_name),
|
|
@@ -89,13 +89,12 @@ uint64_t GetAndResetCounter(Atomic
|
|
|
89
89
|
|
|
90
90
|
XdsClusterLocalityStats::Snapshot
|
|
91
91
|
XdsClusterLocalityStats::GetSnapshotAndReset() {
|
|
92
|
-
Snapshot snapshot = {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
GetAndResetCounter(&total_issued_requests_)};
|
|
92
|
+
Snapshot snapshot = {GetAndResetCounter(&total_successful_requests_),
|
|
93
|
+
// Don't reset total_requests_in_progress because it's
|
|
94
|
+
// not related to a single reporting interval.
|
|
95
|
+
total_requests_in_progress_.Load(MemoryOrder::RELAXED),
|
|
96
|
+
GetAndResetCounter(&total_error_requests_),
|
|
97
|
+
GetAndResetCounter(&total_issued_requests_)};
|
|
99
98
|
MutexLock lock(&backend_metrics_mu_);
|
|
100
99
|
snapshot.backend_metrics = std::move(backend_metrics_);
|
|
101
100
|
return snapshot;
|
|
@@ -21,11 +21,14 @@
|
|
|
21
21
|
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
|
23
23
|
|
|
24
|
-
#include <
|
|
24
|
+
#include <map>
|
|
25
|
+
#include <string>
|
|
26
|
+
|
|
27
|
+
#include "absl/strings/str_cat.h"
|
|
28
|
+
#include "absl/strings/str_format.h"
|
|
29
|
+
#include "absl/strings/string_view.h"
|
|
25
30
|
|
|
26
31
|
#include "src/core/lib/gprpp/atomic.h"
|
|
27
|
-
#include "src/core/lib/gprpp/inlined_vector.h"
|
|
28
|
-
#include "src/core/lib/gprpp/map.h"
|
|
29
32
|
#include "src/core/lib/gprpp/memory.h"
|
|
30
33
|
#include "src/core/lib/gprpp/ref_counted.h"
|
|
31
34
|
#include "src/core/lib/gprpp/sync.h"
|
|
@@ -42,11 +45,7 @@ class XdsLocalityName : public RefCounted
|
|
|
42
45
|
struct Less {
|
|
43
46
|
bool operator()(const XdsLocalityName* lhs,
|
|
44
47
|
const XdsLocalityName* rhs) const {
|
|
45
|
-
|
|
46
|
-
if (cmp_result != 0) return cmp_result < 0;
|
|
47
|
-
cmp_result = lhs->zone_.compare(rhs->zone_);
|
|
48
|
-
if (cmp_result != 0) return cmp_result < 0;
|
|
49
|
-
return lhs->sub_zone_.compare(rhs->sub_zone_) < 0;
|
|
48
|
+
return lhs->Compare(*rhs) < 0;
|
|
50
49
|
}
|
|
51
50
|
|
|
52
51
|
bool operator()(const RefCountedPtr<XdsLocalityName>& lhs,
|
|
@@ -65,25 +64,36 @@ class XdsLocalityName : public RefCounted
|
|
|
65
64
|
sub_zone_ == other.sub_zone_;
|
|
66
65
|
}
|
|
67
66
|
|
|
67
|
+
bool operator!=(const XdsLocalityName& other) const {
|
|
68
|
+
return !(*this == other);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
int Compare(const XdsLocalityName& other) const {
|
|
72
|
+
int cmp_result = region_.compare(other.region_);
|
|
73
|
+
if (cmp_result != 0) return cmp_result;
|
|
74
|
+
cmp_result = zone_.compare(other.zone_);
|
|
75
|
+
if (cmp_result != 0) return cmp_result;
|
|
76
|
+
return sub_zone_.compare(other.sub_zone_);
|
|
77
|
+
}
|
|
78
|
+
|
|
68
79
|
const std::string& region() const { return region_; }
|
|
69
80
|
const std::string& zone() const { return zone_; }
|
|
70
81
|
const std::string& sub_zone() const { return sub_zone_; }
|
|
71
82
|
|
|
72
|
-
const
|
|
73
|
-
if (human_readable_string_
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
human_readable_string_.reset(tmp);
|
|
83
|
+
const std::string& AsHumanReadableString() {
|
|
84
|
+
if (human_readable_string_.empty()) {
|
|
85
|
+
human_readable_string_ =
|
|
86
|
+
absl::StrFormat("{region=\"%s\", zone=\"%s\", sub_zone=\"%s\"}",
|
|
87
|
+
region_, zone_, sub_zone_);
|
|
78
88
|
}
|
|
79
|
-
return human_readable_string_
|
|
89
|
+
return human_readable_string_;
|
|
80
90
|
}
|
|
81
91
|
|
|
82
92
|
private:
|
|
83
93
|
std::string region_;
|
|
84
94
|
std::string zone_;
|
|
85
95
|
std::string sub_zone_;
|
|
86
|
-
|
|
96
|
+
std::string human_readable_string_;
|
|
87
97
|
};
|
|
88
98
|
|
|
89
99
|
// Drop stats for an xds cluster.
|
|
@@ -92,8 +102,9 @@ class XdsClusterDropStats : public RefCounted
|
|
|
92
102
|
using DroppedRequestsMap = std::map<std::string /* category */, uint64_t>;
|
|
93
103
|
|
|
94
104
|
XdsClusterDropStats(RefCountedPtr<XdsClient> xds_client,
|
|
95
|
-
|
|
96
|
-
|
|
105
|
+
absl::string_view lrs_server_name,
|
|
106
|
+
absl::string_view cluster_name,
|
|
107
|
+
absl::string_view eds_service_name);
|
|
97
108
|
~XdsClusterDropStats();
|
|
98
109
|
|
|
99
110
|
// Returns a snapshot of this instance and resets all the counters.
|
|
@@ -103,9 +114,9 @@ class XdsClusterDropStats : public RefCounted
|
|
|
103
114
|
|
|
104
115
|
private:
|
|
105
116
|
RefCountedPtr<XdsClient> xds_client_;
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
117
|
+
absl::string_view lrs_server_name_;
|
|
118
|
+
absl::string_view cluster_name_;
|
|
119
|
+
absl::string_view eds_service_name_;
|
|
109
120
|
// Protects dropped_requests_. A mutex is necessary because the length of
|
|
110
121
|
// dropped_requests_ can be accessed by both the picker (from data plane
|
|
111
122
|
// mutex) and the load reporting thread (from the control plane combiner).
|
|
@@ -163,8 +174,9 @@ class XdsClusterLocalityStats : public RefCounted
|
|
|
163
174
|
};
|
|
164
175
|
|
|
165
176
|
XdsClusterLocalityStats(RefCountedPtr<XdsClient> xds_client,
|
|
166
|
-
|
|
167
|
-
|
|
177
|
+
absl::string_view lrs_server_name,
|
|
178
|
+
absl::string_view cluster_name,
|
|
179
|
+
absl::string_view eds_service_name,
|
|
168
180
|
RefCountedPtr<XdsLocalityName> name);
|
|
169
181
|
~XdsClusterLocalityStats();
|
|
170
182
|
|
|
@@ -176,9 +188,9 @@ class XdsClusterLocalityStats : public RefCounted
|
|
|
176
188
|
|
|
177
189
|
private:
|
|
178
190
|
RefCountedPtr<XdsClient> xds_client_;
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
191
|
+
absl::string_view lrs_server_name_;
|
|
192
|
+
absl::string_view cluster_name_;
|
|
193
|
+
absl::string_view eds_service_name_;
|
|
182
194
|
RefCountedPtr<XdsLocalityName> name_;
|
|
183
195
|
|
|
184
196
|
Atomic<uint64_t> total_successful_requests_{0};
|
|
@@ -188,8 +200,8 @@ class XdsClusterLocalityStats : public RefCounted
|
|
|
188
200
|
|
|
189
201
|
// Protects backend_metrics_. A mutex is necessary because the length of
|
|
190
202
|
// backend_metrics_ can be accessed by both the callback intercepting the
|
|
191
|
-
// call's recv_trailing_metadata (not from the control plane
|
|
192
|
-
// the load reporting thread (from the control plane
|
|
203
|
+
// call's recv_trailing_metadata (not from the control plane work serializer)
|
|
204
|
+
// and the load reporting thread (from the control plane work serializer).
|
|
193
205
|
Mutex backend_metrics_mu_;
|
|
194
206
|
std::map<std::string, BackendMetric> backend_metrics_;
|
|
195
207
|
};
|
|
@@ -17,11 +17,19 @@
|
|
|
17
17
|
|
|
18
18
|
#include <grpc/support/port_platform.h>
|
|
19
19
|
|
|
20
|
-
#include <grpc/support/alloc.h>
|
|
21
|
-
#include <grpc/support/log.h>
|
|
22
|
-
#include <grpc/support/string_util.h>
|
|
23
20
|
#include <stdint.h>
|
|
24
21
|
#include <string.h>
|
|
22
|
+
|
|
23
|
+
#include <string>
|
|
24
|
+
#include <vector>
|
|
25
|
+
|
|
26
|
+
#include "absl/strings/str_cat.h"
|
|
27
|
+
#include "absl/strings/str_format.h"
|
|
28
|
+
#include "absl/strings/str_join.h"
|
|
29
|
+
|
|
30
|
+
#include <grpc/support/alloc.h>
|
|
31
|
+
#include <grpc/support/log.h>
|
|
32
|
+
|
|
25
33
|
#include "src/core/ext/filters/http/client/http_client_filter.h"
|
|
26
34
|
#include "src/core/lib/gpr/string.h"
|
|
27
35
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
|
@@ -31,6 +39,7 @@
|
|
|
31
39
|
#include "src/core/lib/slice/slice_internal.h"
|
|
32
40
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
|
33
41
|
#include "src/core/lib/transport/static_metadata.h"
|
|
42
|
+
#include "src/core/lib/transport/status_conversion.h"
|
|
34
43
|
#include "src/core/lib/transport/transport_impl.h"
|
|
35
44
|
|
|
36
45
|
#define EXPECTED_CONTENT_TYPE "application/grpc"
|
|
@@ -112,18 +121,19 @@ static grpc_error* client_filter_incoming_metadata(grpc_metadata_batch* b) {
|
|
|
112
121
|
} else {
|
|
113
122
|
char* val = grpc_dump_slice(GRPC_MDVALUE(b->idx.named.status->md),
|
|
114
123
|
GPR_DUMP_ASCII);
|
|
115
|
-
|
|
116
|
-
|
|
124
|
+
std::string msg =
|
|
125
|
+
absl::StrCat("Received http2 header with status: ", val);
|
|
117
126
|
grpc_error* e = grpc_error_set_str(
|
|
118
127
|
grpc_error_set_int(
|
|
119
128
|
grpc_error_set_str(
|
|
120
129
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
|
121
130
|
"Received http2 :status header with non-200 OK status"),
|
|
122
131
|
GRPC_ERROR_STR_VALUE, grpc_slice_from_copied_string(val)),
|
|
123
|
-
GRPC_ERROR_INT_GRPC_STATUS,
|
|
124
|
-
|
|
132
|
+
GRPC_ERROR_INT_GRPC_STATUS,
|
|
133
|
+
grpc_http2_status_to_grpc_status(atoi(val))),
|
|
134
|
+
GRPC_ERROR_STR_GRPC_MESSAGE,
|
|
135
|
+
grpc_slice_from_cpp_string(std::move(msg)));
|
|
125
136
|
gpr_free(val);
|
|
126
|
-
gpr_free(msg);
|
|
127
137
|
return e;
|
|
128
138
|
}
|
|
129
139
|
}
|
|
@@ -518,51 +528,36 @@ static size_t max_payload_size_from_args(const grpc_channel_args* args) {
|
|
|
518
528
|
|
|
519
529
|
static grpc_core::ManagedMemorySlice user_agent_from_args(
|
|
520
530
|
const grpc_channel_args* args, const char* transport_name) {
|
|
521
|
-
|
|
522
|
-
size_t i;
|
|
523
|
-
int is_first = 1;
|
|
524
|
-
char* tmp;
|
|
531
|
+
std::vector<std::string> user_agent_fields;
|
|
525
532
|
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
for (i = 0; args && i < args->num_args; i++) {
|
|
533
|
+
for (size_t i = 0; args && i < args->num_args; i++) {
|
|
529
534
|
if (0 == strcmp(args->args[i].key, GRPC_ARG_PRIMARY_USER_AGENT_STRING)) {
|
|
530
535
|
if (args->args[i].type != GRPC_ARG_STRING) {
|
|
531
536
|
gpr_log(GPR_ERROR, "Channel argument '%s' should be a string",
|
|
532
537
|
GRPC_ARG_PRIMARY_USER_AGENT_STRING);
|
|
533
538
|
} else {
|
|
534
|
-
|
|
535
|
-
is_first = 0;
|
|
536
|
-
gpr_strvec_add(&v, gpr_strdup(args->args[i].value.string));
|
|
539
|
+
user_agent_fields.push_back(args->args[i].value.string);
|
|
537
540
|
}
|
|
538
541
|
}
|
|
539
542
|
}
|
|
540
543
|
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
is_first = 0;
|
|
545
|
-
gpr_strvec_add(&v, tmp);
|
|
544
|
+
user_agent_fields.push_back(
|
|
545
|
+
absl::StrFormat("grpc-c/%s (%s; %s)", grpc_version_string(),
|
|
546
|
+
GPR_PLATFORM_STRING, transport_name));
|
|
546
547
|
|
|
547
|
-
for (i = 0; args && i < args->num_args; i++) {
|
|
548
|
+
for (size_t i = 0; args && i < args->num_args; i++) {
|
|
548
549
|
if (0 == strcmp(args->args[i].key, GRPC_ARG_SECONDARY_USER_AGENT_STRING)) {
|
|
549
550
|
if (args->args[i].type != GRPC_ARG_STRING) {
|
|
550
551
|
gpr_log(GPR_ERROR, "Channel argument '%s' should be a string",
|
|
551
552
|
GRPC_ARG_SECONDARY_USER_AGENT_STRING);
|
|
552
553
|
} else {
|
|
553
|
-
|
|
554
|
-
is_first = 0;
|
|
555
|
-
gpr_strvec_add(&v, gpr_strdup(args->args[i].value.string));
|
|
554
|
+
user_agent_fields.push_back(args->args[i].value.string);
|
|
556
555
|
}
|
|
557
556
|
}
|
|
558
557
|
}
|
|
559
558
|
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
grpc_core::ManagedMemorySlice result(tmp);
|
|
563
|
-
gpr_free(tmp);
|
|
564
|
-
|
|
565
|
-
return result;
|
|
559
|
+
std::string user_agent_string = absl::StrJoin(user_agent_fields, " ");
|
|
560
|
+
return grpc_core::ManagedMemorySlice(user_agent_string.c_str());
|
|
566
561
|
}
|
|
567
562
|
|
|
568
563
|
/* Constructor for channel_data */
|