grpc 1.28.0 → 1.30.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +7694 -11190
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security.h +22 -9
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/grpc_types.h +19 -21
- data/include/grpc/impl/codegen/port_platform.h +6 -2
- data/include/grpc/module.modulemap +24 -39
- data/src/core/ext/filters/client_channel/backend_metric.cc +7 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +203 -236
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -22
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_proxy.cc +17 -10
- data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
- data/src/core/ext/filters/client_channel/lb_policy.h +42 -33
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +240 -301
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +11 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +5 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +84 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +6 -2
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
- data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
- data/src/core/ext/filters/client_channel/resolver.cc +5 -8
- data/src/core/ext/filters/client_channel/resolver.h +12 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +73 -59
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +35 -35
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +16 -20
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +72 -117
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +184 -133
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +7 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +40 -43
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +93 -102
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +32 -5
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -3
- data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +16 -16
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +19 -16
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +20 -31
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +4 -3
- data/src/core/ext/filters/client_channel/server_address.cc +6 -9
- data/src/core/ext/filters/client_channel/server_address.h +6 -12
- data/src/core/ext/filters/client_channel/service_config.cc +104 -144
- data/src/core/ext/filters/client_channel/service_config.h +28 -98
- data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
- data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
- data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +54 -24
- data/src/core/ext/filters/client_channel/subchannel.h +35 -11
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +348 -221
- data/src/core/ext/filters/client_channel/xds/xds_api.h +37 -37
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +44 -49
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +4 -3
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +4 -2
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +532 -339
- data/src/core/ext/filters/client_channel/xds/xds_client.h +57 -22
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +11 -12
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +31 -19
- data/src/core/ext/filters/http/client/http_client_filter.cc +23 -28
- data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
- data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +7 -10
- data/src/core/ext/filters/message_size/message_size_filter.h +4 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +23 -22
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +14 -21
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +15 -8
- data/src/core/ext/transport/inproc/inproc_transport.cc +19 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +4 -229
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -875
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +43 -7
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +47 -26
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +115 -65
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +24 -20
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +28 -13
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +38 -18
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +88 -6
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +9 -6
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +15 -10
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +16 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +63 -41
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +173 -77
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +48 -28
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +4 -0
- data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +16 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +1 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +9 -8
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +30 -24
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +21 -20
- data/src/core/ext/upb-generated/validate/validate.upb.h +69 -63
- data/src/core/lib/channel/channel_args.cc +15 -14
- data/src/core/lib/channel/channel_args.h +3 -1
- data/src/core/lib/channel/channel_stack.h +20 -13
- data/src/core/lib/channel/channelz.cc +5 -6
- data/src/core/lib/channel/channelz.h +3 -2
- data/src/core/lib/channel/channelz_registry.cc +5 -3
- data/src/core/lib/channel/connected_channel.cc +7 -5
- data/src/core/lib/channel/context.h +1 -1
- data/src/core/lib/channel/handshaker.cc +11 -13
- data/src/core/lib/channel/handshaker.h +4 -2
- data/src/core/lib/channel/handshaker_registry.cc +5 -17
- data/src/core/lib/channel/status_util.cc +2 -3
- data/src/core/lib/compression/message_compress.cc +5 -1
- data/src/core/lib/debug/stats.cc +21 -27
- data/src/core/lib/debug/stats.h +3 -1
- data/src/core/lib/gpr/spinlock.h +2 -3
- data/src/core/lib/gpr/string.cc +2 -26
- data/src/core/lib/gpr/string.h +0 -16
- data/src/core/lib/gpr/sync_abseil.cc +2 -0
- data/src/core/lib/gpr/time.cc +4 -0
- data/src/core/lib/gpr/time_posix.cc +1 -1
- data/src/core/lib/gprpp/atomic.h +6 -6
- data/src/core/lib/gprpp/fork.cc +1 -1
- data/src/core/lib/gprpp/host_port.cc +29 -35
- data/src/core/lib/gprpp/host_port.h +14 -17
- data/src/core/lib/gprpp/map.h +5 -11
- data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +2 -3
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/http/parser.h +2 -3
- data/src/core/lib/iomgr/buffer_list.h +22 -21
- data/src/core/lib/iomgr/call_combiner.h +3 -2
- data/src/core/lib/iomgr/cfstream_handle.cc +3 -2
- data/src/core/lib/iomgr/closure.h +2 -3
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
- data/src/core/lib/iomgr/endpoint_pair.h +2 -3
- data/src/core/lib/iomgr/error.cc +6 -9
- data/src/core/lib/iomgr/error.h +0 -1
- data/src/core/lib/iomgr/ev_apple.cc +356 -0
- data/src/core/lib/iomgr/ev_apple.h +43 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -23
- data/src/core/lib/iomgr/ev_epollex_linux.cc +2 -3
- data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
- data/src/core/lib/iomgr/ev_posix.cc +2 -3
- data/src/core/lib/iomgr/exec_ctx.h +14 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
- data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
- data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
- data/src/core/lib/iomgr/port.h +1 -0
- data/src/core/lib/iomgr/python_util.h +46 -0
- data/src/core/lib/iomgr/resolve_address.h +4 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +29 -39
- data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -17
- data/src/core/lib/iomgr/resource_quota.cc +4 -6
- data/src/core/lib/iomgr/sockaddr_utils.cc +23 -29
- data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
- data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
- data/src/core/lib/iomgr/socket_mutator.h +2 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -26
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
- data/src/core/lib/iomgr/tcp_client_posix.cc +8 -5
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_custom.cc +2 -3
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -9
- data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
- data/src/core/lib/iomgr/tcp_uv.cc +3 -2
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer_generic.cc +2 -3
- data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
- data/src/core/lib/iomgr/timer_heap.h +2 -3
- data/src/core/lib/iomgr/udp_server.cc +9 -14
- data/src/core/lib/json/json.h +3 -2
- data/src/core/lib/json/json_reader.cc +5 -5
- data/src/core/lib/json/json_writer.cc +13 -12
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
- data/src/core/lib/security/credentials/credentials.cc +0 -84
- data/src/core/lib/security/credentials/credentials.h +8 -59
- data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +3 -8
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
- data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +8 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +55 -27
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +9 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +13 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +38 -11
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +20 -25
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +59 -12
- data/src/core/lib/security/security_connector/ssl_utils.h +12 -10
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +77 -51
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +1 -2
- data/src/core/lib/slice/slice_intern.cc +2 -3
- data/src/core/lib/slice/slice_internal.h +14 -0
- data/src/core/lib/slice/slice_utils.h +9 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
- data/src/core/lib/surface/call.cc +2 -3
- data/src/core/lib/surface/call_log_batch.cc +50 -58
- data/src/core/lib/surface/channel.cc +53 -31
- data/src/core/lib/surface/channel.h +35 -4
- data/src/core/lib/surface/channel_ping.cc +2 -3
- data/src/core/lib/surface/completion_queue.cc +33 -33
- data/src/core/lib/surface/event_string.cc +18 -25
- data/src/core/lib/surface/event_string.h +3 -1
- data/src/core/lib/surface/init_secure.cc +1 -4
- data/src/core/lib/surface/server.cc +570 -369
- data/src/core/lib/surface/server.h +32 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.h +7 -2
- data/src/core/lib/transport/connectivity_state.cc +7 -6
- data/src/core/lib/transport/connectivity_state.h +5 -3
- data/src/core/lib/transport/metadata.cc +3 -3
- data/src/core/lib/transport/metadata_batch.h +2 -3
- data/src/core/lib/transport/static_metadata.h +1 -1
- data/src/core/lib/transport/status_conversion.cc +6 -14
- data/src/core/lib/transport/transport.cc +2 -3
- data/src/core/lib/transport/transport.h +3 -2
- data/src/core/lib/transport/transport_op_string.cc +61 -102
- data/src/core/lib/uri/uri_parser.h +2 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +20 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +8 -1
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
- data/src/core/tsi/fake_transport_security.cc +10 -15
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
- data/src/core/tsi/ssl_transport_security.cc +52 -39
- data/src/core/tsi/ssl_transport_security.h +8 -8
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.h +6 -9
- data/src/core/tsi/transport_security_grpc.h +2 -3
- data/src/core/tsi/transport_security_interface.h +3 -3
- data/src/ruby/ext/grpc/rb_call.c +9 -1
- data/src/ruby/lib/grpc/errors.rb +103 -42
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
- data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
- data/src/ruby/lib/grpc/generic/service.rb +5 -4
- data/src/ruby/lib/grpc/structs.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +5 -3
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
- data/src/ruby/spec/debug_message_spec.rb +134 -0
- data/src/ruby/spec/generic/service_spec.rb +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +5 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -0
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
- data/third_party/abseil-cpp/absl/time/clock.h +74 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
- data/third_party/abseil-cpp/absl/time/format.cc +153 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
- data/third_party/abseil-cpp/absl/time/time.cc +499 -0
- data/third_party/abseil-cpp/absl/time/time.h +1584 -0
- data/third_party/boringssl-with-bazel/err_data.c +329 -297
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +15 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +289 -117
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +13 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +432 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +5 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +80 -99
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +41 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +32 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -114
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +51 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -12
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +4 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +9 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +20 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +172 -77
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +5 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +146 -57
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +14 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +28 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +12 -4
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +64 -47
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +29 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +6 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +64 -5
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +6 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +47 -53
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +23 -75
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +50 -20
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
- metadata +111 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
- data/src/core/lib/gprpp/string_view.h +0 -60
- data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
@@ -21,6 +21,7 @@
|
|
21
21
|
|
22
22
|
#include <set>
|
23
23
|
|
24
|
+
#include "absl/strings/string_view.h"
|
24
25
|
#include "absl/types/optional.h"
|
25
26
|
|
26
27
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
@@ -32,8 +33,7 @@
|
|
32
33
|
#include "src/core/lib/gprpp/orphanable.h"
|
33
34
|
#include "src/core/lib/gprpp/ref_counted.h"
|
34
35
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
35
|
-
#include "src/core/lib/
|
36
|
-
#include "src/core/lib/iomgr/combiner.h"
|
36
|
+
#include "src/core/lib/iomgr/work_serializer.h"
|
37
37
|
|
38
38
|
namespace grpc_core {
|
39
39
|
|
@@ -50,6 +50,8 @@ class XdsClient : public InternallyRefCounted
|
|
50
50
|
RefCountedPtr<ServiceConfig> service_config) = 0;
|
51
51
|
|
52
52
|
virtual void OnError(grpc_error* error) = 0;
|
53
|
+
|
54
|
+
virtual void OnResourceDoesNotExist() = 0;
|
53
55
|
};
|
54
56
|
|
55
57
|
// Cluster data watcher interface. Implemented by callers.
|
@@ -60,6 +62,8 @@ class XdsClient : public InternallyRefCounted
|
|
60
62
|
virtual void OnClusterChanged(XdsApi::CdsUpdate cluster_data) = 0;
|
61
63
|
|
62
64
|
virtual void OnError(grpc_error* error) = 0;
|
65
|
+
|
66
|
+
virtual void OnResourceDoesNotExist() = 0;
|
63
67
|
};
|
64
68
|
|
65
69
|
// Endpoint data watcher interface. Implemented by callers.
|
@@ -70,12 +74,14 @@ class XdsClient : public InternallyRefCounted
|
|
70
74
|
virtual void OnEndpointChanged(XdsApi::EdsUpdate update) = 0;
|
71
75
|
|
72
76
|
virtual void OnError(grpc_error* error) = 0;
|
77
|
+
|
78
|
+
virtual void OnResourceDoesNotExist() = 0;
|
73
79
|
};
|
74
80
|
|
75
81
|
// If *error is not GRPC_ERROR_NONE after construction, then there was
|
76
82
|
// an error initializing the client.
|
77
|
-
XdsClient(
|
78
|
-
|
83
|
+
XdsClient(std::shared_ptr<WorkSerializer> work_serializer,
|
84
|
+
grpc_pollset_set* interested_parties, absl::string_view server_name,
|
79
85
|
std::unique_ptr<ServiceConfigWatcherInterface> watcher,
|
80
86
|
const grpc_channel_args& channel_args, grpc_error** error);
|
81
87
|
~XdsClient();
|
@@ -89,9 +95,9 @@ class XdsClient : public InternallyRefCounted
|
|
89
95
|
// pointer must not be used for any other purpose.)
|
90
96
|
// If the caller is going to start a new watch after cancelling the
|
91
97
|
// old one, it should set delay_unsubscription to true.
|
92
|
-
void WatchClusterData(
|
98
|
+
void WatchClusterData(absl::string_view cluster_name,
|
93
99
|
std::unique_ptr<ClusterWatcherInterface> watcher);
|
94
|
-
void CancelClusterDataWatch(
|
100
|
+
void CancelClusterDataWatch(absl::string_view cluster_name,
|
95
101
|
ClusterWatcherInterface* watcher,
|
96
102
|
bool delay_unsubscription = false);
|
97
103
|
|
@@ -102,29 +108,30 @@ class XdsClient : public InternallyRefCounted
|
|
102
108
|
// pointer must not be used for any other purpose.)
|
103
109
|
// If the caller is going to start a new watch after cancelling the
|
104
110
|
// old one, it should set delay_unsubscription to true.
|
105
|
-
void WatchEndpointData(
|
111
|
+
void WatchEndpointData(absl::string_view eds_service_name,
|
106
112
|
std::unique_ptr<EndpointWatcherInterface> watcher);
|
107
|
-
void CancelEndpointDataWatch(
|
113
|
+
void CancelEndpointDataWatch(absl::string_view eds_service_name,
|
108
114
|
EndpointWatcherInterface* watcher,
|
109
115
|
bool delay_unsubscription = false);
|
110
116
|
|
111
117
|
// Adds and removes drop stats for cluster_name and eds_service_name.
|
112
118
|
RefCountedPtr<XdsClusterDropStats> AddClusterDropStats(
|
113
|
-
|
114
|
-
|
115
|
-
void RemoveClusterDropStats(
|
116
|
-
|
117
|
-
|
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,
|
118
124
|
XdsClusterDropStats* cluster_drop_stats);
|
119
125
|
|
120
126
|
// Adds and removes locality stats for cluster_name and eds_service_name
|
121
127
|
// for the specified locality.
|
122
128
|
RefCountedPtr<XdsClusterLocalityStats> AddClusterLocalityStats(
|
123
|
-
|
124
|
-
|
129
|
+
absl::string_view lrs_server, absl::string_view cluster_name,
|
130
|
+
absl::string_view eds_service_name,
|
131
|
+
RefCountedPtr<XdsLocalityName> locality);
|
125
132
|
void RemoveClusterLocalityStats(
|
126
|
-
|
127
|
-
|
133
|
+
absl::string_view /*lrs_server*/, absl::string_view cluster_name,
|
134
|
+
absl::string_view eds_service_name,
|
128
135
|
const RefCountedPtr<XdsLocalityName>& locality,
|
129
136
|
XdsClusterLocalityStats* cluster_locality_stats);
|
130
137
|
|
@@ -135,6 +142,8 @@ class XdsClient : public InternallyRefCounted
|
|
135
142
|
grpc_arg MakeChannelArg() const;
|
136
143
|
static RefCountedPtr<XdsClient> GetFromChannelArgs(
|
137
144
|
const grpc_channel_args& args);
|
145
|
+
static grpc_channel_args* RemoveFromChannelArgs(
|
146
|
+
const grpc_channel_args& args);
|
138
147
|
|
139
148
|
private:
|
140
149
|
// Contains a channel to the xds server and all the data related to the
|
@@ -225,12 +234,22 @@ class XdsClient : public InternallyRefCounted
|
|
225
234
|
// Sends an error notification to all watchers.
|
226
235
|
void NotifyOnError(grpc_error* error);
|
227
236
|
|
228
|
-
|
229
|
-
|
230
|
-
|
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);
|
242
|
+
|
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);
|
231
250
|
|
232
251
|
XdsApi::ClusterLoadReportMap BuildLoadReportSnapshot(
|
233
|
-
const std::set<std::string>& clusters);
|
252
|
+
bool send_all_clusters, const std::set<std::string>& clusters);
|
234
253
|
|
235
254
|
// Channel arg vtable functions.
|
236
255
|
static void* ChannelArgCopy(void* p);
|
@@ -241,7 +260,7 @@ class XdsClient : public InternallyRefCounted
|
|
241
260
|
|
242
261
|
const grpc_millis request_timeout_;
|
243
262
|
|
244
|
-
|
263
|
+
std::shared_ptr<WorkSerializer> work_serializer_;
|
245
264
|
grpc_pollset_set* interested_parties_;
|
246
265
|
|
247
266
|
std::unique_ptr<XdsBootstrap> bootstrap_;
|
@@ -266,6 +285,22 @@ class XdsClient : public InternallyRefCounted
|
|
266
285
|
LoadReportState>
|
267
286
|
load_report_map_;
|
268
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
|
+
|
269
304
|
bool shutting_down_ = false;
|
270
305
|
};
|
271
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,13 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <map>
|
25
|
+
|
26
|
+
#include "absl/strings/string_view.h"
|
27
|
+
|
24
28
|
#include <grpc/support/string_util.h>
|
25
29
|
|
26
30
|
#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
31
|
#include "src/core/lib/gprpp/memory.h"
|
30
32
|
#include "src/core/lib/gprpp/ref_counted.h"
|
31
33
|
#include "src/core/lib/gprpp/sync.h"
|
@@ -42,11 +44,7 @@ class XdsLocalityName : public RefCounted
|
|
42
44
|
struct Less {
|
43
45
|
bool operator()(const XdsLocalityName* lhs,
|
44
46
|
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;
|
47
|
+
return lhs->Compare(*rhs) < 0;
|
50
48
|
}
|
51
49
|
|
52
50
|
bool operator()(const RefCountedPtr<XdsLocalityName>& lhs,
|
@@ -65,6 +63,18 @@ class XdsLocalityName : public RefCounted
|
|
65
63
|
sub_zone_ == other.sub_zone_;
|
66
64
|
}
|
67
65
|
|
66
|
+
bool operator!=(const XdsLocalityName& other) const {
|
67
|
+
return !(*this == other);
|
68
|
+
}
|
69
|
+
|
70
|
+
int Compare(const XdsLocalityName& other) const {
|
71
|
+
int cmp_result = region_.compare(other.region_);
|
72
|
+
if (cmp_result != 0) return cmp_result;
|
73
|
+
cmp_result = zone_.compare(other.zone_);
|
74
|
+
if (cmp_result != 0) return cmp_result;
|
75
|
+
return sub_zone_.compare(other.sub_zone_);
|
76
|
+
}
|
77
|
+
|
68
78
|
const std::string& region() const { return region_; }
|
69
79
|
const std::string& zone() const { return zone_; }
|
70
80
|
const std::string& sub_zone() const { return sub_zone_; }
|
@@ -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 <stdint.h>
|
21
|
+
#include <string.h>
|
22
|
+
|
23
|
+
#include <string>
|
24
|
+
#include <vector>
|
25
|
+
|
26
|
+
#include "absl/strings/str_format.h"
|
27
|
+
#include "absl/strings/str_join.h"
|
28
|
+
|
20
29
|
#include <grpc/support/alloc.h>
|
21
30
|
#include <grpc/support/log.h>
|
22
31
|
#include <grpc/support/string_util.h>
|
23
|
-
|
24
|
-
#include <string.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"
|
@@ -120,7 +129,8 @@ static grpc_error* client_filter_incoming_metadata(grpc_metadata_batch* b) {
|
|
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,
|
132
|
+
GRPC_ERROR_INT_GRPC_STATUS,
|
133
|
+
grpc_http2_status_to_grpc_status(atoi(val))),
|
124
134
|
GRPC_ERROR_STR_GRPC_MESSAGE, grpc_slice_from_copied_string(msg));
|
125
135
|
gpr_free(val);
|
126
136
|
gpr_free(msg);
|
@@ -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 */
|
@@ -53,13 +53,13 @@ void client_authority_start_transport_stream_op_batch(
|
|
53
53
|
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
54
54
|
call_data* calld = static_cast<call_data*>(elem->call_data);
|
55
55
|
// Handle send_initial_metadata.
|
56
|
-
auto* initial_metadata =
|
57
|
-
batch->payload->send_initial_metadata.send_initial_metadata;
|
58
56
|
// If the initial metadata doesn't already contain :authority, add it.
|
59
57
|
if (batch->send_initial_metadata &&
|
60
|
-
|
58
|
+
batch->payload->send_initial_metadata.send_initial_metadata->idx.named
|
59
|
+
.authority == nullptr) {
|
61
60
|
grpc_error* error = grpc_metadata_batch_add_head(
|
62
|
-
|
61
|
+
batch->payload->send_initial_metadata.send_initial_metadata,
|
62
|
+
&calld->authority_storage,
|
63
63
|
GRPC_MDELEM_REF(chand->default_authority_mdelem), GRPC_BATCH_AUTHORITY);
|
64
64
|
if (error != GRPC_ERROR_NONE) {
|
65
65
|
grpc_transport_stream_op_batch_finish_with_failure(batch, error,
|
@@ -22,26 +22,31 @@
|
|
22
22
|
|
23
23
|
#include "src/core/ext/filters/http/client/http_client_filter.h"
|
24
24
|
#include "src/core/ext/filters/http/message_compress/message_compress_filter.h"
|
25
|
+
#include "src/core/ext/filters/http/message_compress/message_decompress_filter.h"
|
25
26
|
#include "src/core/ext/filters/http/server/http_server_filter.h"
|
26
27
|
#include "src/core/lib/channel/channel_stack_builder.h"
|
27
28
|
#include "src/core/lib/surface/call.h"
|
28
29
|
#include "src/core/lib/surface/channel_init.h"
|
29
30
|
#include "src/core/lib/transport/transport_impl.h"
|
30
31
|
|
31
|
-
|
32
|
+
struct optional_filter {
|
32
33
|
const grpc_channel_filter* filter;
|
33
34
|
const char* control_channel_arg;
|
34
|
-
}
|
35
|
+
};
|
35
36
|
|
36
37
|
static optional_filter compress_filter = {
|
37
38
|
&grpc_message_compress_filter, GRPC_ARG_ENABLE_PER_MESSAGE_COMPRESSION};
|
38
39
|
|
40
|
+
static optional_filter decompress_filter = {
|
41
|
+
&grpc_message_decompress_filter, GRPC_ARG_ENABLE_PER_MESSAGE_DECOMPRESSION};
|
42
|
+
|
39
43
|
static bool is_building_http_like_transport(
|
40
44
|
grpc_channel_stack_builder* builder) {
|
41
45
|
grpc_transport* t = grpc_channel_stack_builder_get_transport(builder);
|
42
46
|
return t != nullptr && strstr(t->vtable->name, "http");
|
43
47
|
}
|
44
48
|
|
49
|
+
template <bool enable_in_minimal_stack>
|
45
50
|
static bool maybe_add_optional_filter(grpc_channel_stack_builder* builder,
|
46
51
|
void* arg) {
|
47
52
|
if (!is_building_http_like_transport(builder)) return true;
|
@@ -50,7 +55,8 @@ static bool maybe_add_optional_filter(grpc_channel_stack_builder* builder,
|
|
50
55
|
grpc_channel_stack_builder_get_channel_arguments(builder);
|
51
56
|
bool enable = grpc_channel_arg_get_bool(
|
52
57
|
grpc_channel_args_find(channel_args, filtarg->control_channel_arg),
|
53
|
-
|
58
|
+
enable_in_minimal_stack ||
|
59
|
+
!grpc_channel_args_want_minimal_stack(channel_args));
|
54
60
|
return enable ? grpc_channel_stack_builder_prepend_filter(
|
55
61
|
builder, filtarg->filter, nullptr, nullptr)
|
56
62
|
: true;
|
@@ -66,15 +72,24 @@ static bool maybe_add_required_filter(grpc_channel_stack_builder* builder,
|
|
66
72
|
}
|
67
73
|
|
68
74
|
void grpc_http_filters_init(void) {
|
69
|
-
grpc_channel_init_register_stage(
|
70
|
-
|
71
|
-
|
72
|
-
grpc_channel_init_register_stage(
|
73
|
-
|
74
|
-
|
75
|
-
grpc_channel_init_register_stage(
|
76
|
-
|
77
|
-
|
75
|
+
grpc_channel_init_register_stage(
|
76
|
+
GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
77
|
+
maybe_add_optional_filter<false>, &compress_filter);
|
78
|
+
grpc_channel_init_register_stage(
|
79
|
+
GRPC_CLIENT_DIRECT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
80
|
+
maybe_add_optional_filter<false>, &compress_filter);
|
81
|
+
grpc_channel_init_register_stage(
|
82
|
+
GRPC_SERVER_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
83
|
+
maybe_add_optional_filter<false>, &compress_filter);
|
84
|
+
grpc_channel_init_register_stage(
|
85
|
+
GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
86
|
+
maybe_add_optional_filter<true>, &decompress_filter);
|
87
|
+
grpc_channel_init_register_stage(
|
88
|
+
GRPC_CLIENT_DIRECT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
89
|
+
maybe_add_optional_filter<true>, &decompress_filter);
|
90
|
+
grpc_channel_init_register_stage(
|
91
|
+
GRPC_SERVER_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
92
|
+
maybe_add_optional_filter<true>, &decompress_filter);
|
78
93
|
grpc_channel_init_register_stage(
|
79
94
|
GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
80
95
|
maybe_add_required_filter, (void*)&grpc_http_client_filter);
|