grpc 1.43.1 → 1.44.0.pre2
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 +84 -64
- data/include/grpc/grpc_security.h +10 -0
- data/include/grpc/impl/codegen/compression_types.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +6 -0
- data/src/core/ext/filters/client_channel/backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +62 -68
- data/src/core/ext/filters/client_channel/client_channel.h +8 -8
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +16 -14
- 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 +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +3 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +31 -32
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +43 -29
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +120 -68
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +60 -48
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +62 -61
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +19 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +50 -105
- data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy.h +19 -3
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +207 -81
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +23 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +118 -207
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +25 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +82 -73
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +10 -10
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +2 -5
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +157 -67
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +37 -64
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +1 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +12 -16
- data/src/core/ext/filters/client_channel/subchannel.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +37 -48
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +6 -8
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +51 -122
- data/src/core/ext/filters/http/client_authority_filter.cc +8 -24
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +42 -140
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +5 -25
- data/src/core/ext/filters/http/server/http_server_filter.cc +50 -135
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/rbac/rbac_filter.cc +157 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +74 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +605 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +70 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +3 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +11 -6
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +1 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +89 -29
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +45 -186
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +341 -279
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +69 -159
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +19 -32
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +94 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -24
- data/src/core/ext/transport/chttp2/transport/internal.h +0 -33
- data/src/core/ext/transport/chttp2/transport/parsing.cc +0 -6
- data/src/core/ext/transport/chttp2/transport/writing.cc +47 -116
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +11 -63
- data/src/core/ext/transport/inproc/inproc_transport.h +0 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +61 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +188 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.c +58 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.h +55 -0
- data/src/core/ext/xds/upb_utils.h +65 -0
- data/src/core/ext/xds/xds_api.cc +81 -3458
- data/src/core/ext/xds/xds_api.h +56 -611
- data/src/core/ext/xds/xds_bootstrap.cc +189 -125
- data/src/core/ext/xds/xds_bootstrap.h +20 -15
- data/src/core/ext/xds/xds_certificate_provider.h +1 -0
- data/src/core/ext/xds/xds_channel_creds.cc +108 -0
- data/src/core/ext/xds/xds_channel_creds.h +50 -0
- data/src/core/ext/xds/xds_client.cc +584 -994
- data/src/core/ext/xds/xds_client.h +78 -135
- data/src/core/ext/xds/xds_cluster.cc +451 -0
- data/src/core/ext/xds/xds_cluster.h +111 -0
- data/src/core/ext/xds/xds_common_types.cc +388 -0
- data/src/core/ext/xds/xds_common_types.h +110 -0
- data/src/core/ext/xds/xds_endpoint.cc +364 -0
- data/src/core/ext/xds/xds_endpoint.h +135 -0
- data/src/core/ext/xds/xds_http_filters.cc +5 -0
- data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
- data/src/core/ext/xds/xds_listener.cc +1036 -0
- data/src/core/ext/xds/xds_listener.h +220 -0
- data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → xds/xds_resource_type.cc} +12 -9
- data/src/core/ext/xds/xds_resource_type.h +98 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
- data/src/core/ext/xds/xds_route_config.cc +993 -0
- data/src/core/ext/xds/xds_route_config.h +215 -0
- data/src/core/ext/xds/xds_routing.cc +11 -8
- data/src/core/ext/xds/xds_routing.h +8 -5
- data/src/core/ext/xds/xds_server_config_fetcher.cc +159 -99
- data/src/core/lib/address_utils/parse_address.cc +20 -0
- data/src/core/lib/address_utils/parse_address.h +5 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
- data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
- data/src/core/lib/backoff/backoff.cc +4 -30
- data/src/core/lib/backoff/backoff.h +3 -3
- data/src/core/lib/channel/channel_args.cc +0 -1
- data/src/core/lib/channel/channel_stack.cc +8 -0
- data/src/core/lib/channel/channel_stack.h +1 -1
- data/src/core/lib/channel/channel_stack_builder.cc +5 -9
- data/src/core/lib/channel/channel_stack_builder.h +4 -7
- data/src/core/lib/channel/channelz.cc +1 -0
- data/src/core/lib/compression/compression.cc +19 -111
- data/src/core/lib/compression/compression_internal.cc +142 -202
- data/src/core/lib/compression/compression_internal.h +64 -69
- data/src/core/lib/compression/message_compress.cc +11 -11
- data/src/core/lib/compression/message_compress.h +2 -2
- data/src/core/lib/gpr/useful.h +4 -0
- data/src/core/lib/gprpp/bitset.h +7 -0
- data/src/core/lib/gprpp/chunked_vector.h +45 -3
- data/src/core/lib/gprpp/status_helper.cc +20 -28
- data/src/core/lib/gprpp/status_helper.h +6 -19
- data/src/core/lib/gprpp/table.h +11 -0
- data/src/core/lib/http/httpcli.cc +37 -46
- data/src/core/lib/http/httpcli.h +3 -15
- data/src/core/lib/iomgr/call_combiner.cc +15 -4
- data/src/core/lib/iomgr/closure.h +29 -9
- data/src/core/lib/iomgr/combiner.cc +25 -3
- data/src/core/lib/iomgr/error.cc +2 -0
- data/src/core/lib/iomgr/error.h +3 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +3 -2
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +66 -48
- data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
- data/src/core/lib/iomgr/exec_ctx.cc +22 -9
- data/src/core/lib/iomgr/executor.cc +10 -1
- data/src/core/lib/iomgr/fork_posix.cc +3 -2
- data/src/core/lib/iomgr/iomgr_custom.cc +4 -1
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
- data/src/core/lib/iomgr/port.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +5 -24
- data/src/core/lib/iomgr/resolve_address.h +47 -44
- data/src/core/lib/iomgr/resolve_address_custom.cc +131 -109
- data/src/core/lib/iomgr/resolve_address_custom.h +101 -19
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +82 -66
- data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
- data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
- data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
- data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
- data/src/core/lib/matchers/matchers.cc +1 -1
- data/src/core/lib/promise/activity.h +49 -20
- data/src/core/lib/promise/detail/status.h +5 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +10 -5
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.cc +3 -2
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.h +4 -5
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.h +0 -1
- data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
- data/src/core/lib/{gprpp → resource_quota}/arena.h +24 -13
- data/src/core/lib/security/authorization/evaluate_args.cc +30 -15
- data/src/core/lib/security/authorization/evaluate_args.h +1 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
- data/src/core/lib/security/authorization/matchers.cc +227 -0
- data/src/core/lib/security/authorization/matchers.h +211 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
- data/src/core/lib/security/authorization/rbac_policy.h +170 -0
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/context/security_context.h +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -5
- data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -3
- data/src/core/lib/security/credentials/credentials.h +10 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +6 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +7 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +2 -7
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -7
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +2 -5
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +16 -19
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -5
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +16 -28
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +8 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +6 -13
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +44 -57
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +13 -15
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +5 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +1 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +6 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +7 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +0 -4
- data/src/core/lib/security/security_connector/security_connector.h +5 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +14 -24
- data/src/core/lib/security/security_connector/ssl_utils.h +5 -14
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +2 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +53 -33
- data/src/core/lib/security/transport/server_auth_filter.cc +40 -35
- data/src/core/{ext → lib}/service_config/service_config.cc +2 -2
- data/src/core/{ext → lib}/service_config/service_config.h +4 -4
- data/src/core/{ext → lib}/service_config/service_config_call_data.h +5 -5
- data/src/core/{ext → lib}/service_config/service_config_parser.cc +1 -1
- data/src/core/{ext → lib}/service_config/service_config_parser.h +3 -3
- data/src/core/lib/slice/slice.cc +3 -1
- data/src/core/lib/slice/slice.h +43 -13
- data/src/core/lib/slice/slice_intern.cc +3 -101
- data/src/core/lib/slice/slice_internal.h +1 -2
- data/src/core/lib/slice/slice_refcount.h +4 -13
- data/src/core/lib/slice/slice_refcount_base.h +0 -16
- data/src/core/lib/surface/call.cc +140 -382
- data/src/core/lib/surface/call.h +4 -4
- data/src/core/lib/surface/channel.cc +42 -44
- data/src/core/lib/surface/channel.h +4 -4
- data/src/core/lib/surface/init.cc +0 -2
- data/src/core/lib/surface/lame_client.cc +0 -1
- data/src/core/lib/surface/server.cc +12 -29
- data/src/core/lib/surface/server.h +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.h +14 -0
- data/src/core/lib/transport/metadata_batch.h +799 -717
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +95 -92
- data/src/core/lib/transport/timeout_encoding.cc +200 -66
- data/src/core/lib/transport/timeout_encoding.h +40 -10
- data/src/core/lib/transport/transport.h +1 -1
- data/src/core/lib/transport/transport_op_string.cc +6 -39
- data/src/core/lib/uri/uri_parser.cc +223 -53
- data/src/core/lib/uri/uri_parser.h +36 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
- data/src/core/tsi/ssl_transport_security.cc +53 -13
- data/src/core/tsi/ssl_transport_security.h +18 -6
- data/src/ruby/ext/grpc/extconf.rb +10 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
- data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
- data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
- data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
- data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
- data/third_party/abseil-cpp/absl/random/random.h +189 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +9 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +23 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
- data/third_party/xxhash/xxhash.h +607 -352
- metadata +149 -77
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
- data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
- data/src/core/lib/compression/algorithm_metadata.h +0 -62
- data/src/core/lib/compression/compression_args.cc +0 -140
- data/src/core/lib/compression/compression_args.h +0 -58
- data/src/core/lib/compression/stream_compression.cc +0 -81
- data/src/core/lib/compression/stream_compression.h +0 -117
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
- data/src/core/lib/compression/stream_compression_gzip.h +0 -28
- data/src/core/lib/compression/stream_compression_identity.cc +0 -91
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
- data/src/core/lib/slice/static_slice.cc +0 -377
- data/src/core/lib/slice/static_slice.h +0 -300
- data/src/core/lib/transport/metadata.cc +0 -714
- data/src/core/lib/transport/metadata.h +0 -449
- data/src/core/lib/transport/metadata_batch.cc +0 -99
- data/src/core/lib/transport/static_metadata.cc +0 -1032
- data/src/core/lib/transport/static_metadata.h +0 -322
- data/src/core/lib/transport/status_metadata.cc +0 -63
- data/src/core/lib/transport/status_metadata.h +0 -48
@@ -22,26 +22,24 @@
|
|
22
22
|
#include "absl/status/statusor.h"
|
23
23
|
#include "absl/strings/strip.h"
|
24
24
|
|
25
|
+
#include <grpc/status.h>
|
25
26
|
#include <grpc/support/log.h>
|
26
27
|
|
27
28
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
28
29
|
#include "src/core/ext/filters/client_channel/retry_service_config.h"
|
29
30
|
#include "src/core/ext/filters/client_channel/retry_throttle.h"
|
30
|
-
#include "src/core/ext/service_config/service_config.h"
|
31
|
-
#include "src/core/ext/service_config/service_config_call_data.h"
|
32
31
|
#include "src/core/lib/backoff/backoff.h"
|
33
32
|
#include "src/core/lib/channel/channel_args.h"
|
34
33
|
#include "src/core/lib/channel/channel_stack.h"
|
35
34
|
#include "src/core/lib/channel/status_util.h"
|
36
35
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
37
36
|
#include "src/core/lib/iomgr/polling_entity.h"
|
37
|
+
#include "src/core/lib/service_config/service_config.h"
|
38
|
+
#include "src/core/lib/service_config/service_config_call_data.h"
|
38
39
|
#include "src/core/lib/slice/slice_internal.h"
|
39
40
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
40
41
|
#include "src/core/lib/transport/error_utils.h"
|
41
|
-
#include "src/core/lib/transport/metadata.h"
|
42
42
|
#include "src/core/lib/transport/metadata_batch.h"
|
43
|
-
#include "src/core/lib/transport/static_metadata.h"
|
44
|
-
#include "src/core/lib/transport/status_metadata.h"
|
45
43
|
#include "src/core/lib/uri/uri_parser.h"
|
46
44
|
|
47
45
|
//
|
@@ -396,10 +394,8 @@ class RetryFilter::CallData {
|
|
396
394
|
void MaybeSwitchToFastPath();
|
397
395
|
|
398
396
|
// Returns true if the call should be retried.
|
399
|
-
// If server_pushback_md is non-null, sets *server_pushback_ms.
|
400
397
|
bool ShouldRetry(absl::optional<grpc_status_code> status, bool is_lb_drop,
|
401
|
-
|
402
|
-
grpc_millis* server_pushback_ms);
|
398
|
+
absl::optional<grpc_millis> server_pushback_ms);
|
403
399
|
|
404
400
|
// Abandons the call attempt. Unrefs any deferred batches.
|
405
401
|
void Abandon();
|
@@ -420,7 +416,6 @@ class RetryFilter::CallData {
|
|
420
416
|
// BatchData.batch.payload points to this.
|
421
417
|
grpc_transport_stream_op_batch_payload batch_payload_;
|
422
418
|
// For send_initial_metadata.
|
423
|
-
grpc_linked_mdelem retry_attempts_metadata_;
|
424
419
|
grpc_metadata_batch send_initial_metadata_{calld_->arena_};
|
425
420
|
// For send_message.
|
426
421
|
// TODO(roth): Restructure this to eliminate use of ManualConstructor.
|
@@ -509,8 +504,8 @@ class RetryFilter::CallData {
|
|
509
504
|
void RetryCommit(CallAttempt* call_attempt);
|
510
505
|
|
511
506
|
// Starts a timer to retry after appropriate back-off.
|
512
|
-
// If server_pushback_ms is
|
513
|
-
void StartRetryTimer(grpc_millis server_pushback_ms);
|
507
|
+
// If server_pushback_ms is nullopt, retry_backoff_ is used.
|
508
|
+
void StartRetryTimer(absl::optional<grpc_millis> server_pushback_ms);
|
514
509
|
|
515
510
|
static void OnRetryTimer(void* arg, grpc_error_handle error);
|
516
511
|
static void OnRetryTimerLocked(void* arg, grpc_error_handle error);
|
@@ -1065,7 +1060,7 @@ void RetryFilter::CallData::CallAttempt::CancelFromSurface(
|
|
1065
1060
|
|
1066
1061
|
bool RetryFilter::CallData::CallAttempt::ShouldRetry(
|
1067
1062
|
absl::optional<grpc_status_code> status, bool is_lb_drop,
|
1068
|
-
|
1063
|
+
absl::optional<grpc_millis> server_pushback_ms) {
|
1069
1064
|
// LB drops always inhibit retries.
|
1070
1065
|
if (is_lb_drop) return false;
|
1071
1066
|
// TODO(roth): Handle transparent retries here.
|
@@ -1131,10 +1126,8 @@ bool RetryFilter::CallData::CallAttempt::ShouldRetry(
|
|
1131
1126
|
return false;
|
1132
1127
|
}
|
1133
1128
|
// Check server push-back.
|
1134
|
-
if (
|
1135
|
-
|
1136
|
-
uint32_t ms;
|
1137
|
-
if (!grpc_parse_slice_to_uint32(GRPC_MDVALUE(*server_pushback_md), &ms)) {
|
1129
|
+
if (server_pushback_ms.has_value()) {
|
1130
|
+
if (*server_pushback_ms < 0) {
|
1138
1131
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1139
1132
|
gpr_log(GPR_INFO,
|
1140
1133
|
"chand=%p calld=%p attempt=%p: not retrying due to server "
|
@@ -1146,10 +1139,10 @@ bool RetryFilter::CallData::CallAttempt::ShouldRetry(
|
|
1146
1139
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1147
1140
|
gpr_log(
|
1148
1141
|
GPR_INFO,
|
1149
|
-
"chand=%p calld=%p attempt=%p: server push-back: retry in %
|
1150
|
-
|
1142
|
+
"chand=%p calld=%p attempt=%p: server push-back: retry in %" PRIu64
|
1143
|
+
" ms",
|
1144
|
+
calld_->chand_, calld_, this, *server_pushback_ms);
|
1151
1145
|
}
|
1152
|
-
*server_pushback_ms = static_cast<grpc_millis>(ms);
|
1153
1146
|
}
|
1154
1147
|
}
|
1155
1148
|
// Check with call dispatch controller.
|
@@ -1236,11 +1229,11 @@ void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimerLocked(
|
|
1236
1229
|
// Check whether we should retry.
|
1237
1230
|
if (call_attempt->ShouldRetry(
|
1238
1231
|
/*status=*/absl::nullopt, /*is_lb_drop=*/false,
|
1239
|
-
/*
|
1232
|
+
/*server_pushback_ms=*/absl::nullopt)) {
|
1240
1233
|
// Mark current attempt as abandoned.
|
1241
1234
|
call_attempt->Abandon();
|
1242
1235
|
// We are retrying. Start backoff timer.
|
1243
|
-
calld->StartRetryTimer(/*server_pushback_ms
|
1236
|
+
calld->StartRetryTimer(/*server_pushback_ms=*/absl::nullopt);
|
1244
1237
|
} else {
|
1245
1238
|
// Not retrying, so commit the call.
|
1246
1239
|
calld->RetryCommit(call_attempt);
|
@@ -1534,11 +1527,12 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvMessageReady(
|
|
1534
1527
|
|
1535
1528
|
namespace {
|
1536
1529
|
|
1537
|
-
// Sets *status, *
|
1530
|
+
// Sets *status, *server_pushback_ms, and *is_lb_drop based on md_batch
|
1538
1531
|
// and error.
|
1539
1532
|
void GetCallStatus(grpc_millis deadline, grpc_metadata_batch* md_batch,
|
1540
1533
|
grpc_error_handle error, grpc_status_code* status,
|
1541
|
-
|
1534
|
+
absl::optional<grpc_millis>* server_pushback_ms,
|
1535
|
+
bool* is_lb_drop) {
|
1542
1536
|
if (error != GRPC_ERROR_NONE) {
|
1543
1537
|
grpc_error_get_status(error, deadline, status, nullptr, nullptr, nullptr);
|
1544
1538
|
intptr_t value = 0;
|
@@ -1547,13 +1541,8 @@ void GetCallStatus(grpc_millis deadline, grpc_metadata_batch* md_batch,
|
|
1547
1541
|
*is_lb_drop = true;
|
1548
1542
|
}
|
1549
1543
|
} else {
|
1550
|
-
|
1551
|
-
*
|
1552
|
-
md_batch->legacy_index()->named.grpc_status->md);
|
1553
|
-
if (md_batch->legacy_index()->named.grpc_retry_pushback_ms != nullptr) {
|
1554
|
-
*server_pushback_md =
|
1555
|
-
&md_batch->legacy_index()->named.grpc_retry_pushback_ms->md;
|
1556
|
-
}
|
1544
|
+
*status = *md_batch->get(GrpcStatusMetadata());
|
1545
|
+
*server_pushback_ms = md_batch->get(GrpcRetryPushbackMsMetadata());
|
1557
1546
|
}
|
1558
1547
|
GRPC_ERROR_UNREF(error);
|
1559
1548
|
}
|
@@ -1685,12 +1674,12 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvTrailingMetadataReady(
|
|
1685
1674
|
call_attempt->MaybeCancelPerAttemptRecvTimer();
|
1686
1675
|
// Get the call's status and check for server pushback metadata.
|
1687
1676
|
grpc_status_code status = GRPC_STATUS_OK;
|
1688
|
-
|
1677
|
+
absl::optional<grpc_millis> server_pushback_ms;
|
1689
1678
|
grpc_metadata_batch* md_batch =
|
1690
1679
|
batch_data->batch_.payload->recv_trailing_metadata.recv_trailing_metadata;
|
1691
1680
|
bool is_lb_drop = false;
|
1692
1681
|
GetCallStatus(calld->deadline_, md_batch, GRPC_ERROR_REF(error), &status,
|
1693
|
-
&
|
1682
|
+
&server_pushback_ms, &is_lb_drop);
|
1694
1683
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
|
1695
1684
|
gpr_log(
|
1696
1685
|
GPR_INFO,
|
@@ -1699,9 +1688,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvTrailingMetadataReady(
|
|
1699
1688
|
is_lb_drop);
|
1700
1689
|
}
|
1701
1690
|
// Check if we should retry.
|
1702
|
-
|
1703
|
-
if (call_attempt->ShouldRetry(status, is_lb_drop, server_pushback_md,
|
1704
|
-
&server_pushback_ms)) {
|
1691
|
+
if (call_attempt->ShouldRetry(status, is_lb_drop, server_pushback_ms)) {
|
1705
1692
|
// Start retry timer.
|
1706
1693
|
calld->StartRetryTimer(server_pushback_ms);
|
1707
1694
|
// Cancel call attempt.
|
@@ -1893,35 +1880,19 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnCompleteForCancelOp(
|
|
1893
1880
|
void RetryFilter::CallData::CallAttempt::BatchData::
|
1894
1881
|
AddRetriableSendInitialMetadataOp() {
|
1895
1882
|
auto* calld = call_attempt_->calld_;
|
1896
|
-
// Maps the number of retries to the corresponding metadata value slice.
|
1897
|
-
const grpc_slice* retry_count_strings[] = {&GRPC_MDSTR_1, &GRPC_MDSTR_2,
|
1898
|
-
&GRPC_MDSTR_3, &GRPC_MDSTR_4};
|
1899
1883
|
// We need to make a copy of the metadata batch for each attempt, since
|
1900
1884
|
// the filters in the subchannel stack may modify this batch, and we don't
|
1901
1885
|
// want those modifications to be passed forward to subsequent attempts.
|
1902
1886
|
//
|
1903
1887
|
// If we've already completed one or more attempts, add the
|
1904
1888
|
// grpc-retry-attempts header.
|
1905
|
-
|
1906
|
-
&call_attempt_->send_initial_metadata_);
|
1907
|
-
if (GPR_UNLIKELY(call_attempt_->send_initial_metadata_.legacy_index()
|
1908
|
-
->named.grpc_previous_rpc_attempts != nullptr)) {
|
1909
|
-
call_attempt_->send_initial_metadata_.Remove(
|
1910
|
-
GRPC_BATCH_GRPC_PREVIOUS_RPC_ATTEMPTS);
|
1911
|
-
}
|
1889
|
+
call_attempt_->send_initial_metadata_ = calld->send_initial_metadata_.Copy();
|
1912
1890
|
if (GPR_UNLIKELY(calld->num_attempts_completed_ > 0)) {
|
1913
|
-
|
1914
|
-
|
1915
|
-
|
1916
|
-
|
1917
|
-
|
1918
|
-
&call_attempt_->retry_attempts_metadata_, retry_md,
|
1919
|
-
GRPC_BATCH_GRPC_PREVIOUS_RPC_ATTEMPTS);
|
1920
|
-
if (GPR_UNLIKELY(error != GRPC_ERROR_NONE)) {
|
1921
|
-
gpr_log(GPR_ERROR, "error adding retry metadata: %s",
|
1922
|
-
grpc_error_std_string(error).c_str());
|
1923
|
-
GPR_ASSERT(false);
|
1924
|
-
}
|
1891
|
+
call_attempt_->send_initial_metadata_.Set(GrpcPreviousRpcAttemptsMetadata(),
|
1892
|
+
calld->num_attempts_completed_);
|
1893
|
+
} else {
|
1894
|
+
call_attempt_->send_initial_metadata_.Remove(
|
1895
|
+
GrpcPreviousRpcAttemptsMetadata());
|
1925
1896
|
}
|
1926
1897
|
call_attempt_->started_send_initial_metadata_ = true;
|
1927
1898
|
batch_.send_initial_metadata = true;
|
@@ -1958,8 +1929,8 @@ void RetryFilter::CallData::CallAttempt::BatchData::
|
|
1958
1929
|
// We need to make a copy of the metadata batch for each attempt, since
|
1959
1930
|
// the filters in the subchannel stack may modify this batch, and we don't
|
1960
1931
|
// want those modifications to be passed forward to subsequent attempts.
|
1961
|
-
|
1962
|
-
|
1932
|
+
call_attempt_->send_trailing_metadata_ =
|
1933
|
+
calld->send_trailing_metadata_.Copy();
|
1963
1934
|
call_attempt_->started_send_trailing_metadata_ = true;
|
1964
1935
|
batch_.send_trailing_metadata = true;
|
1965
1936
|
batch_.payload->send_trailing_metadata.send_trailing_metadata =
|
@@ -2274,7 +2245,7 @@ void RetryFilter::CallData::MaybeCacheSendOpsForBatch(PendingBatch* pending) {
|
|
2274
2245
|
seen_send_initial_metadata_ = true;
|
2275
2246
|
grpc_metadata_batch* send_initial_metadata =
|
2276
2247
|
batch->payload->send_initial_metadata.send_initial_metadata;
|
2277
|
-
|
2248
|
+
send_initial_metadata_ = send_initial_metadata->Copy();
|
2278
2249
|
send_initial_metadata_flags_ =
|
2279
2250
|
batch->payload->send_initial_metadata.send_initial_metadata_flags;
|
2280
2251
|
peer_string_ = batch->payload->send_initial_metadata.peer_string;
|
@@ -2290,7 +2261,7 @@ void RetryFilter::CallData::MaybeCacheSendOpsForBatch(PendingBatch* pending) {
|
|
2290
2261
|
seen_send_trailing_metadata_ = true;
|
2291
2262
|
grpc_metadata_batch* send_trailing_metadata =
|
2292
2263
|
batch->payload->send_trailing_metadata.send_trailing_metadata;
|
2293
|
-
|
2264
|
+
send_trailing_metadata_ = send_trailing_metadata->Copy();
|
2294
2265
|
}
|
2295
2266
|
}
|
2296
2267
|
|
@@ -2512,13 +2483,15 @@ void RetryFilter::CallData::RetryCommit(CallAttempt* call_attempt) {
|
|
2512
2483
|
}
|
2513
2484
|
}
|
2514
2485
|
|
2515
|
-
void RetryFilter::CallData::StartRetryTimer(
|
2486
|
+
void RetryFilter::CallData::StartRetryTimer(
|
2487
|
+
absl::optional<grpc_millis> server_pushback_ms) {
|
2516
2488
|
// Reset call attempt.
|
2517
2489
|
call_attempt_.reset(DEBUG_LOCATION, "StartRetryTimer");
|
2518
2490
|
// Compute backoff delay.
|
2519
2491
|
grpc_millis next_attempt_time;
|
2520
|
-
if (server_pushback_ms
|
2521
|
-
|
2492
|
+
if (server_pushback_ms.has_value()) {
|
2493
|
+
GPR_ASSERT(*server_pushback_ms >= 0);
|
2494
|
+
next_attempt_time = ExecCtx::Get()->Now() + *server_pushback_ms;
|
2522
2495
|
retry_backoff_.Reset();
|
2523
2496
|
} else {
|
2524
2497
|
next_attempt_time = retry_backoff_.NextAttemptTime();
|
@@ -31,12 +31,12 @@
|
|
31
31
|
|
32
32
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
33
33
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
34
|
-
#include "src/core/ext/filters/client_channel/server_address.h"
|
35
34
|
#include "src/core/lib/channel/channel_args.h"
|
36
35
|
#include "src/core/lib/channel/status_util.h"
|
37
36
|
#include "src/core/lib/gpr/string.h"
|
38
37
|
#include "src/core/lib/gprpp/memory.h"
|
39
38
|
#include "src/core/lib/json/json_util.h"
|
39
|
+
#include "src/core/lib/resolver/server_address.h"
|
40
40
|
#include "src/core/lib/uri/uri_parser.h"
|
41
41
|
|
42
42
|
// As per the retry design, we do not allow more than 5 retry attempts.
|
@@ -22,9 +22,9 @@
|
|
22
22
|
#include <memory>
|
23
23
|
|
24
24
|
#include "src/core/ext/filters/client_channel/retry_throttle.h"
|
25
|
-
#include "src/core/ext/service_config/service_config_parser.h"
|
26
25
|
#include "src/core/lib/channel/status_util.h"
|
27
26
|
#include "src/core/lib/iomgr/exec_ctx.h" // for grpc_millis
|
27
|
+
#include "src/core/lib/service_config/service_config_parser.h"
|
28
28
|
|
29
29
|
namespace grpc_core {
|
30
30
|
namespace internal {
|
@@ -19,11 +19,11 @@
|
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
|
-
#include "src/core/ext/service_config/service_config_call_data.h"
|
23
22
|
#include "src/core/lib/channel/channel_args.h"
|
24
23
|
#include "src/core/lib/channel/channel_stack.h"
|
25
24
|
#include "src/core/lib/channel/channel_stack_builder.h"
|
26
25
|
#include "src/core/lib/config/core_configuration.h"
|
26
|
+
#include "src/core/lib/service_config/service_config_call_data.h"
|
27
27
|
|
28
28
|
namespace grpc_core {
|
29
29
|
|
@@ -26,6 +26,7 @@
|
|
26
26
|
|
27
27
|
#include "absl/strings/str_format.h"
|
28
28
|
|
29
|
+
#include <grpc/status.h>
|
29
30
|
#include <grpc/support/alloc.h>
|
30
31
|
#include <grpc/support/string_util.h>
|
31
32
|
|
@@ -50,7 +51,6 @@
|
|
50
51
|
#include "src/core/lib/surface/channel.h"
|
51
52
|
#include "src/core/lib/transport/connectivity_state.h"
|
52
53
|
#include "src/core/lib/transport/error_utils.h"
|
53
|
-
#include "src/core/lib/transport/status_metadata.h"
|
54
54
|
#include "src/core/lib/uri/uri_parser.h"
|
55
55
|
|
56
56
|
// Strong and weak refs.
|
@@ -141,14 +141,14 @@ SubchannelCall::SubchannelCall(Args args, grpc_error_handle* error)
|
|
141
141
|
deadline_(args.deadline) {
|
142
142
|
grpc_call_stack* callstk = SUBCHANNEL_CALL_TO_CALL_STACK(this);
|
143
143
|
const grpc_call_element_args call_args = {
|
144
|
-
callstk,
|
145
|
-
nullptr,
|
146
|
-
args.context,
|
147
|
-
args.path,
|
148
|
-
args.start_time,
|
149
|
-
args.deadline,
|
150
|
-
args.arena,
|
151
|
-
args.call_combiner
|
144
|
+
callstk, /* call_stack */
|
145
|
+
nullptr, /* server_transport_data */
|
146
|
+
args.context, /* context */
|
147
|
+
args.path.c_slice(), /* path */
|
148
|
+
args.start_time, /* start_time */
|
149
|
+
args.deadline, /* deadline */
|
150
|
+
args.arena, /* arena */
|
151
|
+
args.call_combiner /* call_combiner */
|
152
152
|
};
|
153
153
|
*error = grpc_call_stack_init(connected_subchannel_->channel_stack(), 1,
|
154
154
|
SubchannelCall::Destroy, this, &call_args);
|
@@ -252,12 +252,7 @@ void GetCallStatus(grpc_status_code* status, grpc_millis deadline,
|
|
252
252
|
if (error != GRPC_ERROR_NONE) {
|
253
253
|
grpc_error_get_status(error, deadline, status, nullptr, nullptr, nullptr);
|
254
254
|
} else {
|
255
|
-
|
256
|
-
*status = grpc_get_status_code_from_metadata(
|
257
|
-
md_batch->legacy_index()->named.grpc_status->md);
|
258
|
-
} else {
|
259
|
-
*status = GRPC_STATUS_UNKNOWN;
|
260
|
-
}
|
255
|
+
*status = md_batch->get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
|
261
256
|
}
|
262
257
|
GRPC_ERROR_UNREF(error);
|
263
258
|
}
|
@@ -969,7 +964,8 @@ void ConnectionDestroy(void* arg, grpc_error_handle /*error*/) {
|
|
969
964
|
|
970
965
|
bool Subchannel::PublishTransportLocked() {
|
971
966
|
// Construct channel stack.
|
972
|
-
grpc_channel_stack_builder* builder =
|
967
|
+
grpc_channel_stack_builder* builder =
|
968
|
+
grpc_channel_stack_builder_create("subchannel");
|
973
969
|
grpc_channel_stack_builder_set_channel_arguments(
|
974
970
|
builder, connecting_result_.channel_args);
|
975
971
|
grpc_channel_stack_builder_set_transport(builder,
|
@@ -27,15 +27,14 @@
|
|
27
27
|
#include "src/core/lib/backoff/backoff.h"
|
28
28
|
#include "src/core/lib/channel/channel_stack.h"
|
29
29
|
#include "src/core/lib/gpr/time_precise.h"
|
30
|
-
#include "src/core/lib/gprpp/arena.h"
|
31
30
|
#include "src/core/lib/gprpp/dual_ref_counted.h"
|
32
31
|
#include "src/core/lib/gprpp/ref_counted.h"
|
33
32
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
34
33
|
#include "src/core/lib/gprpp/sync.h"
|
35
34
|
#include "src/core/lib/iomgr/polling_entity.h"
|
36
35
|
#include "src/core/lib/iomgr/timer.h"
|
36
|
+
#include "src/core/lib/resource_quota/arena.h"
|
37
37
|
#include "src/core/lib/transport/connectivity_state.h"
|
38
|
-
#include "src/core/lib/transport/metadata.h"
|
39
38
|
|
40
39
|
namespace grpc_core {
|
41
40
|
|
@@ -75,7 +74,7 @@ class SubchannelCall {
|
|
75
74
|
struct Args {
|
76
75
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel;
|
77
76
|
grpc_polling_entity* pollent;
|
78
|
-
|
77
|
+
Slice path;
|
79
78
|
gpr_cycle_counter start_time;
|
80
79
|
grpc_millis deadline;
|
81
80
|
Arena* arena;
|
@@ -22,16 +22,17 @@
|
|
22
22
|
|
23
23
|
#include "absl/strings/numbers.h"
|
24
24
|
|
25
|
+
#include <grpc/status.h>
|
25
26
|
#include <grpc/support/alloc.h>
|
26
27
|
#include <grpc/support/log.h>
|
27
28
|
|
28
29
|
#include "src/core/ext/filters/fault_injection/service_config_parser.h"
|
29
|
-
#include "src/core/ext/service_config/service_config_call_data.h"
|
30
30
|
#include "src/core/lib/channel/channel_stack.h"
|
31
31
|
#include "src/core/lib/channel/status_util.h"
|
32
32
|
#include "src/core/lib/gprpp/sync.h"
|
33
33
|
#include "src/core/lib/iomgr/closure.h"
|
34
34
|
#include "src/core/lib/iomgr/timer.h"
|
35
|
+
#include "src/core/lib/service_config/service_config_call_data.h"
|
35
36
|
#include "src/core/lib/transport/status_conversion.h"
|
36
37
|
|
37
38
|
namespace grpc_core {
|
@@ -45,31 +46,11 @@ static_assert(
|
|
45
46
|
std::is_trivially_destructible<std::atomic<uint32_t>>::value,
|
46
47
|
"the active fault counter needs to have a trivially destructible type");
|
47
48
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
return -1;
|
54
|
-
}
|
55
|
-
}
|
56
|
-
|
57
|
-
inline uint32_t GetMetadatumValueUnsignedInt(grpc_mdelem md) {
|
58
|
-
uint32_t res;
|
59
|
-
if (absl::SimpleAtoi(StringViewFromSlice(GRPC_MDVALUE(md)), &res)) {
|
60
|
-
return res;
|
61
|
-
} else {
|
62
|
-
return -1;
|
63
|
-
}
|
64
|
-
}
|
65
|
-
|
66
|
-
inline int64_t GetMetadatumValueInt64(grpc_mdelem md) {
|
67
|
-
int64_t res;
|
68
|
-
if (absl::SimpleAtoi(StringViewFromSlice(GRPC_MDVALUE(md)), &res)) {
|
69
|
-
return res;
|
70
|
-
} else {
|
71
|
-
return -1;
|
72
|
-
}
|
49
|
+
template <typename T>
|
50
|
+
auto AsInt(absl::string_view s) -> absl::optional<T> {
|
51
|
+
T x;
|
52
|
+
if (absl::SimpleAtoi(s, &x)) return x;
|
53
|
+
return absl::nullopt;
|
73
54
|
}
|
74
55
|
|
75
56
|
inline bool UnderFraction(const uint32_t numerator,
|
@@ -346,41 +327,49 @@ void CallData::DecideWhetherToInjectFaults(
|
|
346
327
|
*fi_policy_);
|
347
328
|
}
|
348
329
|
};
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
copied_policy->abort_code == GRPC_STATUS_OK) &&
|
357
|
-
key == fi_policy_->abort_code_header) {
|
330
|
+
std::string buffer;
|
331
|
+
if (!fi_policy_->abort_code_header.empty() &&
|
332
|
+
(copied_policy == nullptr ||
|
333
|
+
copied_policy->abort_code == GRPC_STATUS_OK)) {
|
334
|
+
auto value = initial_metadata->GetStringValue(
|
335
|
+
fi_policy_->abort_code_header, &buffer);
|
336
|
+
if (value.has_value()) {
|
358
337
|
maybe_copy_policy_func();
|
359
|
-
grpc_status_code_from_int(
|
360
|
-
|
338
|
+
grpc_status_code_from_int(
|
339
|
+
AsInt<int>(*value).value_or(GRPC_STATUS_UNKNOWN),
|
340
|
+
&copied_policy->abort_code);
|
361
341
|
}
|
362
|
-
|
363
|
-
|
342
|
+
}
|
343
|
+
if (!fi_policy_->abort_percentage_header.empty()) {
|
344
|
+
auto value = initial_metadata->GetStringValue(
|
345
|
+
fi_policy_->abort_percentage_header, &buffer);
|
346
|
+
if (value.has_value()) {
|
364
347
|
maybe_copy_policy_func();
|
365
348
|
copied_policy->abort_percentage_numerator =
|
366
|
-
std::min(
|
349
|
+
std::min(AsInt<uint32_t>(*value).value_or(-1),
|
367
350
|
fi_policy_->abort_percentage_numerator);
|
368
351
|
}
|
369
|
-
|
370
|
-
|
371
|
-
|
352
|
+
}
|
353
|
+
if (!fi_policy_->delay_header.empty() &&
|
354
|
+
(copied_policy == nullptr || copied_policy->delay == 0)) {
|
355
|
+
auto value =
|
356
|
+
initial_metadata->GetStringValue(fi_policy_->delay_header, &buffer);
|
357
|
+
if (value.has_value()) {
|
372
358
|
maybe_copy_policy_func();
|
373
359
|
copied_policy->delay = static_cast<grpc_millis>(
|
374
|
-
std::max(
|
360
|
+
std::max(AsInt<int64_t>(*value).value_or(0), int64_t(0)));
|
375
361
|
}
|
376
|
-
|
377
|
-
|
362
|
+
}
|
363
|
+
if (!fi_policy_->delay_percentage_header.empty()) {
|
364
|
+
auto value = initial_metadata->GetStringValue(
|
365
|
+
fi_policy_->delay_percentage_header, &buffer);
|
366
|
+
if (value.has_value()) {
|
378
367
|
maybe_copy_policy_func();
|
379
368
|
copied_policy->delay_percentage_numerator =
|
380
|
-
std::min(
|
369
|
+
std::min(AsInt<uint32_t>(*value).value_or(-1),
|
381
370
|
fi_policy_->delay_percentage_numerator);
|
382
371
|
}
|
383
|
-
}
|
372
|
+
}
|
384
373
|
if (copied_policy != nullptr) fi_policy_ = copied_policy;
|
385
374
|
}
|
386
375
|
// Roll the dice
|
@@ -122,14 +122,12 @@ ParseFaultInjectionPolicy(const Json::Array& policies_json_array,
|
|
122
122
|
}
|
123
123
|
}
|
124
124
|
// Parse max_faults
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
}
|
132
|
-
}
|
125
|
+
static_assert(
|
126
|
+
std::is_unsigned<decltype(fault_injection_policy.max_faults)>::value,
|
127
|
+
"maxFaults should be unsigned");
|
128
|
+
ParseJsonObjectField(json_object, "maxFaults",
|
129
|
+
&fault_injection_policy.max_faults, &sub_error_list,
|
130
|
+
false);
|
133
131
|
if (!sub_error_list.empty()) {
|
134
132
|
error_list->push_back(GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING(
|
135
133
|
absl::StrCat("failed to parse faultInjectionPolicy index ", i),
|