grpc 1.47.0 → 1.48.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +105 -47
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +20 -11
- data/include/grpc/event_engine/slice_buffer.h +8 -2
- data/include/grpc/grpc.h +3 -3
- data/include/grpc/impl/codegen/compression_types.h +2 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +2 -1
- data/include/grpc/impl/codegen/port_platform.h +6 -3
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +17 -5
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +16 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +51 -65
- data/src/core/ext/filters/client_channel/client_channel.h +19 -4
- data/src/core/ext/filters/client_channel/config_selector.h +1 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +73 -43
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +33 -35
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +106 -112
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +91 -42
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +177 -138
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +4 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +47 -44
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +118 -103
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +83 -78
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +57 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +13 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -5
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -1
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +6 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +10 -5
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +12 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +24 -15
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -7
- data/src/core/ext/filters/client_channel/retry_filter.cc +35 -36
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +4 -4
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +53 -50
- data/src/core/ext/filters/client_channel/subchannel.h +6 -22
- data/src/core/ext/filters/client_channel/subchannel_interface.h +10 -18
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +12 -97
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +12 -7
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +21 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +16 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +8 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +11 -10
- data/src/core/ext/filters/http/client_authority_filter.h +5 -2
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +42 -106
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +16 -9
- data/src/core/ext/filters/http/server/http_server_filter.h +6 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +25 -15
- data/src/core/ext/filters/message_size/message_size_filter.h +13 -0
- data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -15
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +196 -476
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +141 -261
- data/src/core/ext/transport/chttp2/transport/flow_control.h +176 -289
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +9 -111
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +85 -81
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
- data/src/core/ext/xds/certificate_provider_factory.h +6 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
- data/src/core/ext/xds/certificate_provider_registry.h +3 -1
- data/src/core/ext/xds/certificate_provider_store.cc +2 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
- data/src/core/ext/xds/upb_utils.h +1 -2
- data/src/core/ext/xds/xds_api.cc +16 -18
- data/src/core/ext/xds/xds_api.h +12 -5
- data/src/core/ext/xds/xds_bootstrap.cc +37 -24
- data/src/core/ext/xds/xds_bootstrap.h +9 -11
- data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
- data/src/core/ext/xds/xds_certificate_provider.h +16 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
- data/src/core/ext/xds/xds_client.cc +71 -22
- data/src/core/ext/xds/xds_client.h +17 -3
- data/src/core/ext/xds/xds_client_stats.cc +3 -4
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +21 -10
- data/src/core/ext/xds/xds_cluster.h +9 -1
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
- data/src/core/ext/xds/xds_common_types.cc +36 -22
- data/src/core/ext/xds/xds_common_types.h +12 -4
- data/src/core/ext/xds/xds_endpoint.cc +25 -15
- data/src/core/ext/xds/xds_endpoint.h +13 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +7 -5
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +51 -33
- data/src/core/ext/xds/xds_listener.h +10 -1
- data/src/core/ext/xds/xds_resource_type.h +3 -3
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +56 -28
- data/src/core/ext/xds/xds_route_config.h +11 -2
- data/src/core/ext/xds/xds_routing.cc +16 -0
- data/src/core/ext/xds/xds_routing.h +7 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +54 -6
- data/src/core/lib/address_utils/parse_address.cc +5 -8
- data/src/core/lib/address_utils/parse_address.h +3 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
- data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
- data/src/core/lib/avl/avl.h +3 -3
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/backoff/backoff.h +1 -1
- data/src/core/lib/channel/call_tracer.h +3 -3
- data/src/core/lib/channel/channel_args.h +1 -0
- data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +4 -4
- data/src/core/lib/channel/channel_stack.h +1 -11
- data/src/core/lib/channel/channel_stack_builder.h +2 -5
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
- data/src/core/lib/channel/channelz.cc +2 -1
- data/src/core/lib/channel/channelz.h +2 -3
- data/src/core/lib/channel/channelz_registry.cc +4 -5
- data/src/core/lib/channel/connected_channel.cc +1 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +11 -5
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression.cc +6 -1
- data/src/core/lib/compression/compression_internal.cc +3 -6
- data/src/core/lib/compression/compression_internal.h +3 -2
- data/src/core/lib/compression/message_compress.cc +3 -1
- data/src/core/lib/compression/message_compress.h +2 -3
- data/src/core/lib/debug/stats.cc +9 -9
- data/src/core/lib/debug/stats.h +2 -1
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/stats_data.h +0 -4
- data/src/core/lib/debug/trace.h +13 -12
- data/src/core/lib/event_engine/default_event_engine_factory.cc +1 -1
- data/src/core/lib/event_engine/event_engine.cc +24 -19
- data/src/core/lib/event_engine/event_engine_factory.h +2 -2
- data/src/core/lib/event_engine/{iomgr_engine.cc → iomgr_engine/iomgr_engine.cc} +44 -91
- data/src/core/lib/event_engine/{iomgr_engine.h → iomgr_engine/iomgr_engine.h} +20 -16
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
- data/src/core/lib/event_engine/promise.h +69 -0
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -67
- data/src/core/lib/gprpp/status_helper.cc +44 -30
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +4 -0
- data/src/core/lib/http/format_request.cc +5 -4
- data/src/core/lib/http/format_request.h +1 -1
- data/src/core/lib/http/httpcli.cc +18 -12
- data/src/core/lib/http/httpcli.h +19 -3
- data/src/core/lib/http/httpcli_security_connector.cc +16 -4
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
- data/src/core/lib/http/parser.cc +6 -7
- data/src/core/lib/http/parser.h +3 -0
- data/src/core/lib/iomgr/call_combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
- data/src/core/lib/iomgr/error.cc +11 -9
- data/src/core/lib/iomgr/error.h +9 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +54 -92
- data/src/core/lib/iomgr/ev_posix.h +5 -3
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr.cc +7 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/tcp_client.cc +12 -7
- data/src/core/lib/iomgr/tcp_client.h +24 -13
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +15 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
- data/src/core/lib/iomgr/tcp_posix.cc +91 -29
- data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
- data/src/core/lib/iomgr/tcp_windows.cc +5 -5
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
- data/src/core/lib/iomgr/work_serializer.h +2 -3
- data/src/core/lib/matchers/matchers.cc +6 -3
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +0 -1
- data/src/core/lib/promise/activity.h +7 -13
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/sleep.cc +36 -31
- data/src/core/lib/promise/sleep.h +25 -25
- data/src/core/lib/resolver/resolver.cc +5 -0
- data/src/core/lib/resolver/resolver.h +3 -0
- data/src/core/lib/resolver/resolver_factory.h +5 -2
- data/src/core/lib/resolver/resolver_registry.cc +2 -9
- data/src/core/lib/resolver/resolver_registry.h +12 -1
- data/src/core/lib/resolver/server_address.cc +8 -0
- data/src/core/lib/resolver/server_address.h +9 -2
- data/src/core/lib/resource_quota/memory_quota.cc +18 -60
- data/src/core/lib/resource_quota/memory_quota.h +11 -25
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
- data/src/core/lib/security/authorization/evaluate_args.h +6 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
- data/src/core/lib/security/authorization/matchers.cc +9 -1
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
- data/src/core/lib/security/authorization/rbac_policy.h +7 -0
- data/src/core/lib/security/context/security_context.cc +5 -2
- data/src/core/lib/security/context/security_context.h +14 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +4 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +6 -1
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
- data/src/core/lib/security/credentials/call_creds_util.h +1 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +16 -2
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +10 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +28 -10
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +24 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -10
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +4 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +5 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +11 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +4 -3
- data/src/core/lib/security/credentials/local/local_credentials.h +7 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +26 -13
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +9 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +7 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -1
- data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +8 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.h +14 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +17 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
- data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +18 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -9
- data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
- data/src/core/lib/security/transport/secure_endpoint.h +4 -3
- data/src/core/lib/security/transport/security_handshaker.cc +44 -11
- data/src/core/lib/security/transport/security_handshaker.h +4 -0
- data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
- data/src/core/lib/security/util/json_util.cc +3 -2
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config_call_data.h +2 -1
- data/src/core/lib/service_config/service_config_impl.cc +6 -6
- data/src/core/lib/service_config/service_config_impl.h +1 -3
- data/src/core/lib/service_config/service_config_parser.cc +2 -4
- data/src/core/lib/slice/slice_buffer.cc +30 -1
- data/src/core/lib/slice/slice_buffer.h +37 -6
- data/src/core/lib/slice/slice_string_helpers.cc +0 -20
- data/src/core/lib/slice/slice_string_helpers.h +0 -4
- data/src/core/lib/surface/call.cc +53 -115
- data/src/core/lib/surface/call.h +5 -1
- data/src/core/lib/surface/channel.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +15 -14
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/init.cc +0 -1
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +14 -8
- data/src/core/lib/surface/server.h +4 -1
- data/src/core/lib/surface/validate_metadata.cc +1 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +13 -7
- data/src/core/lib/transport/handshaker.cc +3 -3
- data/src/core/lib/transport/http_connect_handshaker.cc +4 -4
- data/src/core/lib/transport/tcp_connect_handshaker.cc +2 -2
- data/src/core/lib/transport/transport.cc +0 -3
- data/src/core/lib/transport/transport.h +20 -14
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +1 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -9
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
- data/src/core/tsi/fake_transport_security.cc +13 -1
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/ssl_transport_security.cc +1 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +49 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +182 -41
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -9
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
- data/third_party/abseil-cpp/absl/status/status.cc +174 -2
- data/third_party/abseil-cpp/absl/status/status.h +22 -12
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
- data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/time.h +16 -12
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +2 -1
- metadata +39 -15
- data/src/core/lib/slice/slice_split.cc +0 -103
- data/src/core/lib/slice/slice_split.h +0 -36
- data/src/core/lib/transport/byte_stream.cc +0 -165
- data/src/core/lib/transport/byte_stream.h +0 -170
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -49,10 +49,11 @@
|
|
49
49
|
#endif // GPR_ABSEIL_SYNC
|
50
50
|
|
51
51
|
/*
|
52
|
-
* Defines
|
52
|
+
* Defines GRPC_ERROR_IS_NOT_ABSEIL_STATUS to not use absl::Status for
|
53
|
+
* grpc_error_handle. This is a temporary knob for migration process.
|
53
54
|
*/
|
54
|
-
#ifndef
|
55
|
-
|
55
|
+
#ifndef GRPC_ERROR_IS_NOT_ABSEIL_STATUS
|
56
|
+
#define GRPC_ERROR_IS_ABSEIL_STATUS 1
|
56
57
|
#endif
|
57
58
|
|
58
59
|
/* Get windows.h included everywhere (we need it) */
|
@@ -220,6 +221,8 @@
|
|
220
221
|
#define GRPC_TIMER_USE_GENERIC 1
|
221
222
|
#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
|
222
223
|
#define GRPC_POSIX_WAKEUP_FD 1
|
224
|
+
#define GRPC_HAVE_MSG_NOSIGNAL 1
|
225
|
+
#define GRPC_HAVE_UNIX_SOCKET 1
|
223
226
|
#define GRPC_ARES 0
|
224
227
|
#define GPR_NO_AUTODETECT_PLATFORM 1
|
225
228
|
#elif defined(__APPLE__)
|
@@ -20,7 +20,10 @@
|
|
20
20
|
|
21
21
|
#include <grpc/census.h>
|
22
22
|
#include <grpc/grpc.h>
|
23
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
23
24
|
|
25
|
+
#include "src/core/lib/channel/context.h"
|
26
|
+
#include "src/core/lib/debug/trace.h"
|
24
27
|
#include "src/core/lib/surface/api_trace.h"
|
25
28
|
#include "src/core/lib/surface/call.h"
|
26
29
|
|
@@ -19,22 +19,34 @@
|
|
19
19
|
|
20
20
|
#include "src/core/ext/filters/channel_idle/channel_idle_filter.h"
|
21
21
|
|
22
|
-
#include <limits.h>
|
23
22
|
#include <stdlib.h>
|
24
23
|
|
25
|
-
#include <
|
26
|
-
#include <
|
24
|
+
#include <functional>
|
25
|
+
#include <utility>
|
26
|
+
|
27
|
+
#include "absl/types/optional.h"
|
28
|
+
|
29
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
30
|
+
#include <grpc/support/log.h>
|
27
31
|
|
28
32
|
#include "src/core/lib/channel/channel_args.h"
|
29
33
|
#include "src/core/lib/channel/channel_stack_builder.h"
|
30
34
|
#include "src/core/lib/channel/promise_based_filter.h"
|
31
35
|
#include "src/core/lib/config/core_configuration.h"
|
32
|
-
#include "src/core/lib/
|
36
|
+
#include "src/core/lib/debug/trace.h"
|
37
|
+
#include "src/core/lib/gprpp/debug_location.h"
|
38
|
+
#include "src/core/lib/gprpp/orphanable.h"
|
39
|
+
#include "src/core/lib/iomgr/closure.h"
|
40
|
+
#include "src/core/lib/iomgr/error.h"
|
41
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
33
42
|
#include "src/core/lib/promise/exec_ctx_wakeup_scheduler.h"
|
34
43
|
#include "src/core/lib/promise/loop.h"
|
44
|
+
#include "src/core/lib/promise/poll.h"
|
35
45
|
#include "src/core/lib/promise/promise.h"
|
36
46
|
#include "src/core/lib/promise/sleep.h"
|
37
47
|
#include "src/core/lib/promise/try_seq.h"
|
48
|
+
#include "src/core/lib/surface/channel_init.h"
|
49
|
+
#include "src/core/lib/surface/channel_stack_type.h"
|
38
50
|
#include "src/core/lib/transport/http2_errors.h"
|
39
51
|
|
40
52
|
namespace grpc_core {
|
@@ -204,7 +216,7 @@ ArenaPromise<ServerMetadataHandle> ChannelIdleFilter::MakeCallPromise(
|
|
204
216
|
|
205
217
|
bool ChannelIdleFilter::StartTransportOp(grpc_transport_op* op) {
|
206
218
|
// Catch the disconnect_with_error transport op.
|
207
|
-
if (op->disconnect_with_error
|
219
|
+
if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) Shutdown();
|
208
220
|
// Pass the op to the next filter.
|
209
221
|
return false;
|
210
222
|
}
|
@@ -17,9 +17,25 @@
|
|
17
17
|
|
18
18
|
#include <grpc/support/port_platform.h>
|
19
19
|
|
20
|
+
#include <memory>
|
21
|
+
|
22
|
+
#include "absl/status/status.h"
|
23
|
+
#include "absl/status/statusor.h"
|
24
|
+
|
25
|
+
#include <grpc/impl/codegen/connectivity_state.h>
|
26
|
+
|
20
27
|
#include "src/core/ext/filters/channel_idle/idle_filter_state.h"
|
28
|
+
#include "src/core/lib/channel/channel_args.h"
|
29
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
30
|
+
#include "src/core/lib/channel/channel_stack.h"
|
21
31
|
#include "src/core/lib/channel/promise_based_filter.h"
|
32
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
22
33
|
#include "src/core/lib/gprpp/single_set_ptr.h"
|
34
|
+
#include "src/core/lib/gprpp/time.h"
|
35
|
+
#include "src/core/lib/promise/activity.h"
|
36
|
+
#include "src/core/lib/promise/arena_promise.h"
|
37
|
+
#include "src/core/lib/transport/connectivity_state.h"
|
38
|
+
#include "src/core/lib/transport/transport.h"
|
23
39
|
|
24
40
|
namespace grpc_core {
|
25
41
|
|
@@ -22,6 +22,8 @@
|
|
22
22
|
|
23
23
|
#include <inttypes.h>
|
24
24
|
|
25
|
+
#include "absl/status/status.h"
|
26
|
+
|
25
27
|
#include <grpc/support/alloc.h>
|
26
28
|
#include <grpc/support/log.h>
|
27
29
|
#include <grpc/support/sync.h>
|
@@ -117,7 +119,7 @@ static void g_poller_unref() {
|
|
117
119
|
|
118
120
|
static void run_poller(void* arg, grpc_error_handle error) {
|
119
121
|
backup_poller* p = static_cast<backup_poller*>(arg);
|
120
|
-
if (error
|
122
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
121
123
|
if (error != GRPC_ERROR_CANCELLED) {
|
122
124
|
GRPC_LOG_IF_ERROR("run_poller", GRPC_ERROR_REF(error));
|
123
125
|
}
|
@@ -25,8 +25,8 @@
|
|
25
25
|
#include <grpc/support/log.h>
|
26
26
|
|
27
27
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
28
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
28
29
|
#include "src/core/lib/channel/channel_stack.h"
|
29
|
-
#include "src/core/lib/channel/channel_stack_builder.h"
|
30
30
|
#include "src/core/lib/debug/trace.h"
|
31
31
|
#include "src/core/lib/gprpp/dual_ref_counted.h"
|
32
32
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
@@ -179,7 +179,7 @@ class StateWatcher : public DualRefCounted<StateWatcher> {
|
|
179
179
|
|
180
180
|
static void TimeoutComplete(void* arg, grpc_error_handle error) {
|
181
181
|
auto* self = static_cast<StateWatcher*>(arg);
|
182
|
-
self->timer_fired_ = error
|
182
|
+
self->timer_fired_ = GRPC_ERROR_IS_NONE(error);
|
183
183
|
// If this is a client channel (not a lame channel), cancel the watch.
|
184
184
|
ClientChannel* client_channel =
|
185
185
|
ClientChannel::GetFromChannel(self->channel_.get());
|
@@ -30,6 +30,7 @@
|
|
30
30
|
|
31
31
|
#include "absl/container/inlined_vector.h"
|
32
32
|
#include "absl/memory/memory.h"
|
33
|
+
#include "absl/status/status.h"
|
33
34
|
#include "absl/status/statusor.h"
|
34
35
|
#include "absl/strings/cord.h"
|
35
36
|
#include "absl/strings/numbers.h"
|
@@ -96,9 +97,7 @@
|
|
96
97
|
|
97
98
|
namespace grpc_core {
|
98
99
|
|
99
|
-
using internal::ClientChannelGlobalParsedConfig;
|
100
100
|
using internal::ClientChannelMethodParsedConfig;
|
101
|
-
using internal::ClientChannelServiceConfigParser;
|
102
101
|
|
103
102
|
TraceFlag grpc_client_channel_trace(false, "client_channel");
|
104
103
|
TraceFlag grpc_client_channel_call_trace(false, "client_channel_call");
|
@@ -507,21 +506,15 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
507
506
|
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "SubchannelWrapper");
|
508
507
|
}
|
509
508
|
|
510
|
-
grpc_connectivity_state CheckConnectivityState() override {
|
511
|
-
return subchannel_->CheckConnectivityState(health_check_service_name_);
|
512
|
-
}
|
513
|
-
|
514
509
|
void WatchConnectivityState(
|
515
|
-
grpc_connectivity_state initial_state,
|
516
510
|
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
|
517
511
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
518
512
|
auto& watcher_wrapper = watcher_map_[watcher.get()];
|
519
513
|
GPR_ASSERT(watcher_wrapper == nullptr);
|
520
514
|
watcher_wrapper = new WatcherWrapper(std::move(watcher),
|
521
|
-
Ref(DEBUG_LOCATION, "WatcherWrapper")
|
522
|
-
initial_state);
|
515
|
+
Ref(DEBUG_LOCATION, "WatcherWrapper"));
|
523
516
|
subchannel_->WatchConnectivityState(
|
524
|
-
|
517
|
+
health_check_service_name_,
|
525
518
|
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
|
526
519
|
watcher_wrapper));
|
527
520
|
}
|
@@ -580,11 +573,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
580
573
|
WatcherWrapper(
|
581
574
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
582
575
|
watcher,
|
583
|
-
RefCountedPtr<SubchannelWrapper> parent
|
584
|
-
|
585
|
-
: watcher_(std::move(watcher)),
|
586
|
-
parent_(std::move(parent)),
|
587
|
-
last_seen_state_(initial_state) {}
|
576
|
+
RefCountedPtr<SubchannelWrapper> parent)
|
577
|
+
: watcher_(std::move(watcher)), parent_(std::move(parent)) {}
|
588
578
|
|
589
579
|
~WatcherWrapper() override {
|
590
580
|
auto* parent = parent_.release(); // ref owned by lambda
|
@@ -621,14 +611,11 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
621
611
|
}
|
622
612
|
|
623
613
|
WatcherWrapper* MakeReplacement() {
|
624
|
-
auto* replacement =
|
625
|
-
new WatcherWrapper(std::move(watcher_), parent_, last_seen_state_);
|
614
|
+
auto* replacement = new WatcherWrapper(std::move(watcher_), parent_);
|
626
615
|
replacement_ = replacement;
|
627
616
|
return replacement;
|
628
617
|
}
|
629
618
|
|
630
|
-
grpc_connectivity_state last_seen_state() const { return last_seen_state_; }
|
631
|
-
|
632
619
|
private:
|
633
620
|
void ApplyUpdateInControlPlaneWorkSerializer()
|
634
621
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
|
@@ -670,15 +657,21 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
|
|
670
657
|
// Ignore update if the parent WatcherWrapper has been replaced
|
671
658
|
// since this callback was scheduled.
|
672
659
|
if (watcher_ != nullptr) {
|
673
|
-
|
674
|
-
|
660
|
+
// Propagate status only in state TF.
|
661
|
+
// We specifically want to avoid propagating the status for
|
662
|
+
// state IDLE that the real subchannel gave us only for the
|
663
|
+
// purpose of keepalive propagation.
|
664
|
+
if (state_change.state != GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
665
|
+
state_change.status = absl::OkStatus();
|
666
|
+
}
|
667
|
+
watcher_->OnConnectivityStateChange(state_change.state,
|
668
|
+
state_change.status);
|
675
669
|
}
|
676
670
|
}
|
677
671
|
|
678
672
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
679
673
|
watcher_;
|
680
674
|
RefCountedPtr<SubchannelWrapper> parent_;
|
681
|
-
grpc_connectivity_state last_seen_state_;
|
682
675
|
WatcherWrapper* replacement_ = nullptr;
|
683
676
|
};
|
684
677
|
|
@@ -961,7 +954,7 @@ class ClientChannel::ClientChannelControlHelper
|
|
961
954
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
962
955
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
963
956
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
964
|
-
const char* extra = chand_->disconnect_error_
|
957
|
+
const char* extra = GRPC_ERROR_IS_NONE(chand_->disconnect_error_)
|
965
958
|
? ""
|
966
959
|
: " (ignoring -- channel shutting down)";
|
967
960
|
gpr_log(GPR_INFO, "chand=%p: update: state=%s status=(%s) picker=%p%s",
|
@@ -969,7 +962,7 @@ class ClientChannel::ClientChannelControlHelper
|
|
969
962
|
picker.get(), extra);
|
970
963
|
}
|
971
964
|
// Do update only if not shutting down.
|
972
|
-
if (chand_->disconnect_error_
|
965
|
+
if (GRPC_ERROR_IS_NONE(chand_->disconnect_error_)) {
|
973
966
|
chand_->UpdateStateAndPickerLocked(state, status, "helper",
|
974
967
|
std::move(picker));
|
975
968
|
}
|
@@ -1087,7 +1080,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
|
|
1087
1080
|
*error = GRPC_ERROR_NONE;
|
1088
1081
|
default_service_config_ =
|
1089
1082
|
ServiceConfigImpl::Create(args->channel_args, service_config_json, error);
|
1090
|
-
if (*error
|
1083
|
+
if (!GRPC_ERROR_IS_NONE(*error)) {
|
1091
1084
|
default_service_config_.reset();
|
1092
1085
|
return;
|
1093
1086
|
}
|
@@ -1220,7 +1213,7 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
1220
1213
|
// and accepts an empty config. If not, we revert to using pick_first
|
1221
1214
|
// lb_policy
|
1222
1215
|
GPR_ASSERT(lb_policy_config != nullptr);
|
1223
|
-
GPR_ASSERT(parse_error
|
1216
|
+
GPR_ASSERT(GRPC_ERROR_IS_NONE(parse_error));
|
1224
1217
|
return lb_policy_config;
|
1225
1218
|
}
|
1226
1219
|
|
@@ -1241,7 +1234,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
|
|
1241
1234
|
// (d) Address resolution that causes a new LB policy to be created.
|
1242
1235
|
//
|
1243
1236
|
// We track a list of strings to eventually be concatenated and traced.
|
1244
|
-
|
1237
|
+
std::vector<const char*> trace_strings;
|
1245
1238
|
const bool resolution_contains_addresses =
|
1246
1239
|
result.addresses.ok() && !result.addresses->empty();
|
1247
1240
|
if (!resolution_contains_addresses &&
|
@@ -1514,6 +1507,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
|
|
1514
1507
|
channel_args_, args_to_add.data(), args_to_add.size());
|
1515
1508
|
new_args = config_selector->ModifyChannelArgs(new_args);
|
1516
1509
|
bool enable_retries =
|
1510
|
+
!grpc_channel_args_want_minimal_stack(new_args) &&
|
1517
1511
|
grpc_channel_args_find_bool(new_args, GRPC_ARG_ENABLE_RETRIES, true);
|
1518
1512
|
// Construct dynamic filter stack.
|
1519
1513
|
std::vector<const grpc_channel_filter*> filters =
|
@@ -1742,7 +1736,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1742
1736
|
// Ping.
|
1743
1737
|
if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
|
1744
1738
|
grpc_error_handle error = DoPingLocked(op);
|
1745
|
-
if (error
|
1739
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
1746
1740
|
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate,
|
1747
1741
|
GRPC_ERROR_REF(error));
|
1748
1742
|
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_ack, error);
|
@@ -1758,7 +1752,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1758
1752
|
}
|
1759
1753
|
}
|
1760
1754
|
// Disconnect or enter IDLE.
|
1761
|
-
if (op->disconnect_with_error
|
1755
|
+
if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
|
1762
1756
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
|
1763
1757
|
gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
|
1764
1758
|
grpc_error_std_string(op->disconnect_with_error).c_str());
|
@@ -1768,7 +1762,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1768
1762
|
if (grpc_error_get_int(op->disconnect_with_error,
|
1769
1763
|
GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE, &value) &&
|
1770
1764
|
static_cast<grpc_connectivity_state>(value) == GRPC_CHANNEL_IDLE) {
|
1771
|
-
if (disconnect_error_
|
1765
|
+
if (GRPC_ERROR_IS_NONE(disconnect_error_)) {
|
1772
1766
|
// Enter IDLE state.
|
1773
1767
|
UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE, absl::Status(),
|
1774
1768
|
"channel entering IDLE", nullptr);
|
@@ -1776,7 +1770,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
|
|
1776
1770
|
GRPC_ERROR_UNREF(op->disconnect_with_error);
|
1777
1771
|
} else {
|
1778
1772
|
// Disconnect.
|
1779
|
-
GPR_ASSERT(disconnect_error_
|
1773
|
+
GPR_ASSERT(GRPC_ERROR_IS_NONE(disconnect_error_));
|
1780
1774
|
disconnect_error_ = op->disconnect_with_error;
|
1781
1775
|
UpdateStateAndPickerLocked(
|
1782
1776
|
GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API",
|
@@ -1971,7 +1965,7 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
|
|
1971
1965
|
// We do not yet have a dynamic call.
|
1972
1966
|
//
|
1973
1967
|
// If we've previously been cancelled, immediately fail any new batches.
|
1974
|
-
if (GPR_UNLIKELY(calld->cancel_error_
|
1968
|
+
if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(calld->cancel_error_))) {
|
1975
1969
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1976
1970
|
gpr_log(GPR_INFO, "chand=%p calld=%p: failing batch with error: %s",
|
1977
1971
|
chand, calld,
|
@@ -2083,7 +2077,7 @@ void ClientChannel::CallData::FailPendingBatchInCallCombiner(
|
|
2083
2077
|
void ClientChannel::CallData::PendingBatchesFail(
|
2084
2078
|
grpc_call_element* elem, grpc_error_handle error,
|
2085
2079
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2086
|
-
GPR_ASSERT(error
|
2080
|
+
GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
|
2087
2081
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2088
2082
|
size_t num_batches = 0;
|
2089
2083
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
@@ -2187,7 +2181,8 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
|
|
2187
2181
|
chand, calld, grpc_error_std_string(error).c_str(), self,
|
2188
2182
|
calld->resolver_call_canceller_);
|
2189
2183
|
}
|
2190
|
-
if (calld->resolver_call_canceller_ == self &&
|
2184
|
+
if (calld->resolver_call_canceller_ == self &&
|
2185
|
+
!GRPC_ERROR_IS_NONE(error)) {
|
2191
2186
|
// Remove pick from list of queued picks.
|
2192
2187
|
calld->MaybeRemoveCallFromResolverQueuedCallsLocked(self->elem_);
|
2193
2188
|
// Fail pending batches on the call.
|
@@ -2245,7 +2240,7 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
|
|
2245
2240
|
// Use the ConfigSelector to determine the config for the call.
|
2246
2241
|
ConfigSelector::CallConfig call_config =
|
2247
2242
|
config_selector->GetCallConfig({&path_, initial_metadata, arena_});
|
2248
|
-
if (call_config.error
|
2243
|
+
if (!GRPC_ERROR_IS_NONE(call_config.error)) return call_config.error;
|
2249
2244
|
// Create a ClientChannelServiceConfigCallData for the call. This stores
|
2250
2245
|
// a ref to the ServiceConfig and caches the right set of parsed configs
|
2251
2246
|
// to use for the call. The ClientChannelServiceConfigCallData will store
|
@@ -2330,7 +2325,7 @@ void ClientChannel::CallData::ResolutionDone(void* arg,
|
|
2330
2325
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
2331
2326
|
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
|
2332
2327
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
2333
|
-
if (error
|
2328
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
2334
2329
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2335
2330
|
gpr_log(GPR_INFO,
|
2336
2331
|
"chand=%p calld=%p: error applying config to call: error=%s",
|
@@ -2449,7 +2444,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
|
|
2449
2444
|
chand, this, channel_stack);
|
2450
2445
|
}
|
2451
2446
|
dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
|
2452
|
-
if (error
|
2447
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
2453
2448
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
2454
2449
|
gpr_log(GPR_INFO,
|
2455
2450
|
"chand=%p calld=%p: failed to create dynamic call: error=%s",
|
@@ -2540,25 +2535,16 @@ class ClientChannel::LoadBalancedCall::Metadata
|
|
2540
2535
|
// ClientChannel::LoadBalancedCall::LbCallState
|
2541
2536
|
//
|
2542
2537
|
|
2543
|
-
|
2544
|
-
|
2545
|
-
|
2546
|
-
|
2547
|
-
|
2548
|
-
|
2549
|
-
|
2550
|
-
|
2551
|
-
|
2552
|
-
|
2553
|
-
auto& call_attributes = service_config_call_data->call_attributes();
|
2554
|
-
auto it = call_attributes.find(key);
|
2555
|
-
if (it == call_attributes.end()) return absl::string_view();
|
2556
|
-
return it->second;
|
2557
|
-
}
|
2558
|
-
|
2559
|
-
private:
|
2560
|
-
LoadBalancedCall* lb_call_;
|
2561
|
-
};
|
2538
|
+
absl::string_view
|
2539
|
+
ClientChannel::LoadBalancedCall::LbCallState::GetCallAttribute(
|
2540
|
+
UniqueTypeName type) {
|
2541
|
+
auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
|
2542
|
+
lb_call_->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
|
2543
|
+
auto& call_attributes = service_config_call_data->call_attributes();
|
2544
|
+
auto it = call_attributes.find(type);
|
2545
|
+
if (it == call_attributes.end()) return absl::string_view();
|
2546
|
+
return it->second;
|
2547
|
+
}
|
2562
2548
|
|
2563
2549
|
//
|
2564
2550
|
// ClientChannel::LoadBalancedCall::BackendMetricAccessor
|
@@ -2718,7 +2704,7 @@ void ClientChannel::LoadBalancedCall::FailPendingBatchInCallCombiner(
|
|
2718
2704
|
void ClientChannel::LoadBalancedCall::PendingBatchesFail(
|
2719
2705
|
grpc_error_handle error,
|
2720
2706
|
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
2721
|
-
GPR_ASSERT(error
|
2707
|
+
GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
|
2722
2708
|
GRPC_ERROR_UNREF(failure_error_);
|
2723
2709
|
failure_error_ = error;
|
2724
2710
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
@@ -2874,7 +2860,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2874
2860
|
// We do not yet have a subchannel call.
|
2875
2861
|
//
|
2876
2862
|
// If we've previously been cancelled, immediately fail any new batches.
|
2877
|
-
if (GPR_UNLIKELY(cancel_error_
|
2863
|
+
if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(cancel_error_))) {
|
2878
2864
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
2879
2865
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
|
2880
2866
|
chand_, this, grpc_error_std_string(cancel_error_).c_str());
|
@@ -2951,7 +2937,7 @@ void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
|
|
2951
2937
|
"chand=%p lb_call=%p: got recv_initial_metadata_ready: error=%s",
|
2952
2938
|
self->chand_, self, grpc_error_std_string(error).c_str());
|
2953
2939
|
}
|
2954
|
-
if (error
|
2940
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
2955
2941
|
// recv_initial_metadata_flags is not populated for clients
|
2956
2942
|
self->call_attempt_tracer_->RecordReceivedInitialMetadata(
|
2957
2943
|
self->recv_initial_metadata_, 0 /* recv_initial_metadata_flags */);
|
@@ -2967,7 +2953,7 @@ void ClientChannel::LoadBalancedCall::RecvMessageReady(
|
|
2967
2953
|
gpr_log(GPR_INFO, "chand=%p lb_call=%p: got recv_message_ready: error=%s",
|
2968
2954
|
self->chand_, self, grpc_error_std_string(error).c_str());
|
2969
2955
|
}
|
2970
|
-
if (
|
2956
|
+
if (self->recv_message_->has_value()) {
|
2971
2957
|
self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
|
2972
2958
|
}
|
2973
2959
|
Closure::Run(DEBUG_LOCATION, self->original_recv_message_ready_,
|
@@ -2991,7 +2977,7 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2991
2977
|
self->lb_subchannel_call_tracker_ != nullptr) {
|
2992
2978
|
// Get the call's status.
|
2993
2979
|
absl::Status status;
|
2994
|
-
if (error
|
2980
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
2995
2981
|
// Get status from error.
|
2996
2982
|
grpc_status_code code;
|
2997
2983
|
std::string message;
|
@@ -3014,7 +3000,7 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
3014
3000
|
self->RecordCallCompletion(status);
|
3015
3001
|
}
|
3016
3002
|
// Chain to original callback.
|
3017
|
-
if (self->failure_error_
|
3003
|
+
if (!GRPC_ERROR_IS_NONE(self->failure_error_)) {
|
3018
3004
|
error = self->failure_error_;
|
3019
3005
|
self->failure_error_ = GRPC_ERROR_NONE;
|
3020
3006
|
} else {
|
@@ -3061,7 +3047,7 @@ void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
|
|
3061
3047
|
subchannel_call_->SetAfterCallStackDestroy(on_call_destruction_complete_);
|
3062
3048
|
on_call_destruction_complete_ = nullptr;
|
3063
3049
|
}
|
3064
|
-
if (GPR_UNLIKELY(error
|
3050
|
+
if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(error))) {
|
3065
3051
|
PendingBatchesFail(error, YieldCallCombiner);
|
3066
3052
|
} else {
|
3067
3053
|
PendingBatchesResume();
|
@@ -3098,7 +3084,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
|
|
3098
3084
|
chand, lb_call, grpc_error_std_string(error).c_str(), self,
|
3099
3085
|
lb_call->lb_call_canceller_);
|
3100
3086
|
}
|
3101
|
-
if (lb_call->lb_call_canceller_ == self && error
|
3087
|
+
if (lb_call->lb_call_canceller_ == self && !GRPC_ERROR_IS_NONE(error)) {
|
3102
3088
|
lb_call->call_dispatch_controller_->Commit();
|
3103
3089
|
// Remove pick from list of queued picks.
|
3104
3090
|
lb_call->MaybeRemoveCallFromLbQueuedCallsLocked();
|
@@ -3149,7 +3135,7 @@ void ClientChannel::LoadBalancedCall::AsyncPickDone(grpc_error_handle error) {
|
|
3149
3135
|
void ClientChannel::LoadBalancedCall::PickDone(void* arg,
|
3150
3136
|
grpc_error_handle error) {
|
3151
3137
|
auto* self = static_cast<LoadBalancedCall*>(arg);
|
3152
|
-
if (error
|
3138
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
3153
3139
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
|
3154
3140
|
gpr_log(GPR_INFO,
|
3155
3141
|
"chand=%p lb_call=%p: failed to pick subchannel: error=%s",
|
@@ -30,6 +30,7 @@
|
|
30
30
|
|
31
31
|
#include "absl/base/thread_annotations.h"
|
32
32
|
#include "absl/status/status.h"
|
33
|
+
#include "absl/strings/string_view.h"
|
33
34
|
#include "absl/types/optional.h"
|
34
35
|
|
35
36
|
#include <grpc/impl/codegen/connectivity_state.h>
|
@@ -44,8 +45,8 @@
|
|
44
45
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
45
46
|
#include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
|
46
47
|
#include "src/core/lib/channel/call_tracer.h"
|
48
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
47
49
|
#include "src/core/lib/channel/channel_stack.h"
|
48
|
-
#include "src/core/lib/channel/channel_stack_builder.h"
|
49
50
|
#include "src/core/lib/channel/channelz.h"
|
50
51
|
#include "src/core/lib/channel/context.h"
|
51
52
|
#include "src/core/lib/gpr/time_precise.h"
|
@@ -54,6 +55,7 @@
|
|
54
55
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
55
56
|
#include "src/core/lib/gprpp/sync.h"
|
56
57
|
#include "src/core/lib/gprpp/time.h"
|
58
|
+
#include "src/core/lib/gprpp/unique_type_name.h"
|
57
59
|
#include "src/core/lib/iomgr/call_combiner.h"
|
58
60
|
#include "src/core/lib/iomgr/closure.h"
|
59
61
|
#include "src/core/lib/iomgr/error.h"
|
@@ -66,8 +68,8 @@
|
|
66
68
|
#include "src/core/lib/service_config/service_config_call_data.h"
|
67
69
|
#include "src/core/lib/service_config/service_config_parser.h"
|
68
70
|
#include "src/core/lib/slice/slice.h"
|
71
|
+
#include "src/core/lib/slice/slice_buffer.h"
|
69
72
|
#include "src/core/lib/surface/channel.h"
|
70
|
-
#include "src/core/lib/transport/byte_stream.h"
|
71
73
|
#include "src/core/lib/transport/connectivity_state.h"
|
72
74
|
#include "src/core/lib/transport/metadata_batch.h"
|
73
75
|
#include "src/core/lib/transport/transport.h"
|
@@ -382,6 +384,20 @@ class ClientChannel {
|
|
382
384
|
class ClientChannel::LoadBalancedCall
|
383
385
|
: public InternallyRefCounted<LoadBalancedCall, kUnrefCallDtor> {
|
384
386
|
public:
|
387
|
+
class LbCallState : public LoadBalancingPolicy::CallState {
|
388
|
+
public:
|
389
|
+
explicit LbCallState(LoadBalancedCall* lb_call) : lb_call_(lb_call) {}
|
390
|
+
|
391
|
+
void* Alloc(size_t size) override { return lb_call_->arena_->Alloc(size); }
|
392
|
+
|
393
|
+
// Internal API to allow first-party LB policies to access per-call
|
394
|
+
// attributes set by the ConfigSelector.
|
395
|
+
absl::string_view GetCallAttribute(UniqueTypeName type);
|
396
|
+
|
397
|
+
private:
|
398
|
+
LoadBalancedCall* lb_call_;
|
399
|
+
};
|
400
|
+
|
385
401
|
// If on_call_destruction_complete is non-null, then it will be
|
386
402
|
// invoked once the LoadBalancedCall is completely destroyed.
|
387
403
|
// If it is null, then the caller is responsible for checking whether
|
@@ -417,7 +433,6 @@ class ClientChannel::LoadBalancedCall
|
|
417
433
|
private:
|
418
434
|
class LbQueuedCallCanceller;
|
419
435
|
class Metadata;
|
420
|
-
class LbCallState;
|
421
436
|
class BackendMetricAccessor;
|
422
437
|
|
423
438
|
// Returns the index into pending_batches_ to be used for batch.
|
@@ -519,7 +534,7 @@ class ClientChannel::LoadBalancedCall
|
|
519
534
|
grpc_closure* original_recv_initial_metadata_ready_ = nullptr;
|
520
535
|
|
521
536
|
// For intercepting recv_message_ready.
|
522
|
-
|
537
|
+
absl::optional<SliceBuffer>* recv_message_ = nullptr;
|
523
538
|
grpc_closure recv_message_ready_;
|
524
539
|
grpc_closure* original_recv_message_ready_ = nullptr;
|
525
540
|
|
@@ -28,7 +28,7 @@
|
|
28
28
|
#include <grpc/slice.h>
|
29
29
|
#include <grpc/support/log.h>
|
30
30
|
|
31
|
-
#include "src/core/lib/channel/
|
31
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
32
32
|
#include "src/core/lib/gprpp/ref_counted.h"
|
33
33
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
34
34
|
#include "src/core/lib/iomgr/error.h"
|
@@ -29,7 +29,7 @@
|
|
29
29
|
#include "src/core/lib/iomgr/error.h"
|
30
30
|
#include "src/core/lib/iomgr/iomgr_fwd.h"
|
31
31
|
#include "src/core/lib/iomgr/resolved_address.h"
|
32
|
-
#include "src/core/lib/transport/
|
32
|
+
#include "src/core/lib/transport/transport_fwd.h"
|
33
33
|
|
34
34
|
namespace grpc_core {
|
35
35
|
|